// the find
InfiniTimeOrg/InfiniTime
Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS
InfiniTime is the primary open-source firmware for the PineTime, a $27 ARM Cortex-M4 smartwatch from Pine64. It runs FreeRTOS, drives a 240x240 IPS display via LVGL, and communicates over BLE using NimBLE. For embedded developers or anyone who wants a fully hackable smartwatch without a subscription or cloud dependency, this is the reference implementation.
The BLE stack choice (NimBLE over SoftDevice) means you actually own the radio stack and can read all of it. The companion app ecosystem is surprisingly broad — Gadgetbridge on Android, ITD on Linux, InfiniLink on iOS — so you're not locked to a single platform. The build system is well-organized for a bare-metal embedded project: Docker build works, VS Code devcontainer works, and the font generation pipeline is scripted rather than checked-in blobs. Memory analysis tooling (puncover integration, linker map visualization) is included and documented, which is rare for hobby firmware and genuinely useful when you're fighting a 512KB flash budget.
The PineTime hardware is the ceiling — 64MB SPI flash, 64KB RAM, no WiFi, no GPS, no speaker. If you want to extend InfiniTime beyond what the hardware supports, you hit a wall fast. The heartrate PPG implementation is known to be unreliable; it works well enough to ship but not well enough to trust. OTA update is fragile in practice: a failed update with an old bootloader version can brick the watch and require SWD to recover, which means soldering or a pogo-pin jig. The app framework is functional but tightly coupled to LVGL internals — writing a new app means learning undocumented LVGL 7 patterns since the project hasn't migrated to LVGL 8/9.