🚀 Getting Started#
Follow this guide to:
Set up a command-line PebbleOS development environment
Get the source code
Build, flash, and run PebbleOS on a watch with programming port access
Pre-requisites#
First download the Arm GNU toolchain arm-none-eabi 14.2.Rel1 from here.
Make sure to make it available on your path PATH and then check GCC version is reported correctly:
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
A series of system-level dependencies are required. Follow the next steps to install them.
Update package list:
sudo apt update
Install required dependencies
sudo apt install clang gcc gcc-multilib git gettext python3-dev python3-venv openocd
Install brew.
Install dependencies:
brew install python openocd
Link
brewPython:
brew link python@3
If building with Javascript support enabled (default), install Emscripten:
Install Emscripten SDK as detailed here. Pick version
4.0.7instead oflatestwhen running./emsdk installor./emsdk activate. To conveniently access Emscripten SDK tools, the activate command will offer some suggestions. It is recommended to follow them.
Install Emscripten using
brew:
brew install emscripten
Note that brew does not seem to offer all Emscripten versions.
Versions 4.0.x should work fine.
If brew versions cause issues, consider using Emscripten SDK instead.
Get the source code#
You can clone the PebbleOS repository by running:
git clone --recurse-submodules https://github.com/coredevices/pebbleos
Once cloned, enter the pebbleos directory before continuing:
cd pebbleos
Python dependencies#
A series of additional Python dependencies are also required. Follow the next steps to install them in a Python virtual environment.
Create a new virtual environment:
python3 -m venv .venv
Activate the virtual environment:
source .venv/bin/activate
Tip
Remember to activate the virtual environment before every time you start working!
Install dependencies
pip install -r requirements.txt
Building#
Configure the project:
./waf configure --board $BOARD
where $BOARD is any of the supported boards, e.g. asterix (Core 2 Duo), snowy_bb2 (Pebble Time), …
Build:
./waf build
Flashing#
Before attempting to flash, check the documentation for each board on how to prepare and connect your watch for programming.
You can flash the built firmware (including pre-compiled bootloader) by running:
./waf flash
If flashing for the first time, your watch will reboot into PRF or a sad watch state if PRF is missing, indicating that resources need to be flashed:
./waf image_resources --tty $SERIAL_ADAPTER
where $SERIAL_ADAPTER is the path for your serial adapter, e.g. /dev/ttyACM0, /dev/tty.usbmodem1102, etc.
If using a board with a built-in FTDI programmer, the --tty argument can be removed.
At this point you should observe the watch booting into the main application. You can also see the logs by opening the console:
./waf console --tty $SERIAL_ADAPTER
Try sending help to get a list of available console commands.