Note: This is current as of March 31, 2022. This tutorial was written for advanced users, i.e. users who have used “git”, have knowledge of programming, and have build programs before on Linux. Also, using the “develop” branch of InfiniTime can brick your smart watch. You have been warned.
Here’s the official documentation for building InfiniTime. As of the writing of this tutorial, the documentation is a little hard to follow, so that’s why I wrote this. These steps were carried out on Linux Mint 20.3.
- Pull down the sources of “InfiniTime”.
$ git clone https://github.com/InfiniTimeOrg/InfiniTime.git InfiniTime
This branch is named “develop” because it is meant for, well, developing it. If you want a more stable branch, checkout
a numbered branch (e.g. 1.7.1 or 1.8.0).
- Install the “ARM-GCC” cross-compiler to any location you like (preferably one that’s easy to access).
- Install the “NRF52” SDK 15.3.0 to another place of your choosing.
- Install the following Python 3 packages:
cbor
,intelhex
,click
, andcryptography
. This can be achieved withpip3
(or justpip
if your distro only uses Python 3). The official documentation offers the alternative of installing them into a virtual environment. If you’re fine with installing them system-wide, you can use the following command:
$ python -m pip install -r <Path to InfiniTime sources>/tools/mcuboot/requirements.txt
If you didn’t know already, the “requirements.txt” file is in the directory with the InfiniTime sources.
- Install the “adafruit-nrfutil” utility. The documentation for “adafruit-nrfutil” suggests installing from pip:
$ pip3 install --user adafruit-nrfutil
Note that this requires the path to the user install to be added to the “$PATH” environment variable.
- Once all of that software is installed, use the following command to build the
Makefile
s, and build the InfiniTime image:
$ mkdir build
$ cmake -B build -DARM_NONE_EABI_TOOLCHAIN_PATH=<Path to ARM-GCC compiler> -DNRF5_SDK_PATH=<Path to NRF52 SDK> -DBUILD_DFU=1
$ cd build
$ make -j<number of cores> pinetime-mcuboot-app
The “-DBUILD_DFU” part is meant for flashing the device over the air (OTA) with programs like GadgetBridge and Siglo. The file generated has a name like “pinetime-mcuboot-app-dfu-<version>.zip”, where <version>
is the current release version of InfiniTime. It is found in the build/src
directory of the InfiniTime sources.
Once the file is generated, you should be able to flash it on to your PineTime.