From PINE64
Revision as of 18:46, 8 January 2022 by Xuv (talk | contribs) (Updates the url to the repo and adds the latest release)
Jump to navigation Jump to search


InfiniTime (also known as JF's project, FreeRTOS firmware or Pinetime-JF) is an open source (GPLv3) firmware written in C++ and based on FreeRTOS, LVGL and NimBLE. This firmware (version 0.7.1) is preloaded at the factory since the new batch of PineTime devkits and sealed PineTimes of end of September 2020. This page contains general information about the project. Actual project documentation and nuances are documented in the repository

Read this first!

  • InfiniTime and the bootloader are still in heavy development, and some features might not work as expected. Any issues should be reported on GitHub.
  • Do not use a sealed PineTime as a development device, there is a fair amount of chances that you'll brick it with very experimental firmware.
  • OTA is relatively stable, but when you're on an outdated bootloader version it can freeze which will require you to wait for the battery to run out.

Known issues

Warning: Please read this section carefully before upgrading the firmware on your PineTime, especially if you are using a sealed device!

Black screen after a reset in sleep mode


This issue occurs if you are using the original bootloader (from InfiniTime 0.7.1), upgraded from InfiniTime 0.7.1 to 0.8.2 and the watch resets while the display is OFF : the watch is stuck on a black screen and does not respond to touch, button press or BLE.

The reset can be triggered by the watchdog or manually by long pressing the button. If that doesn't work, wait for the battery to run out, it'll reboot then.

This issue is caused by InfiniTime 0.8.2 that put the external SPI flash memory to sleep before switching the display off and by the bootloader that cannot wake the memory chip up. The bootloader is stuck in an infinite loop.

More info : and


On a development kit, a simple reset via SWD is needed to unlock the bootloader.

On a sealed device, the only way to work around this issue is to wait for the battery to drain completely before trying again.

This issue can be avoided by ensuring that the display is ON when manually resetting the device (long push on the button).

Fixed version

This issues is fixed in InfiniTime 0.8.3


In the order of oldest first.

Version 0.7.1

This is the version that ships with PineTime devkits and sealed PineTime as of September 2020.

  • Time synchronization over BLE
  • Display brightness setting
  • Notifications over BLE
  • Integration with AmazFish (SailFishOS) and Gadgetbridge (Android)
  • OTA using NRFConnect

Bootloader :

Version 0.8.2

  • Music control app
  • Paint app
  • Manual image validation after OTA

Bootloader :

This new version of the bootloader fixes #Black_screen_after_a_reset_in_sleep_mode and enables the watchdog before launching the firmware.

Version 0.8.3

  • Fixes the "bootloader stuck after a reset" mentioned in 0.8.2 above

Version 0.9.0

  • Touch panel fixed (no more freezing)
  • Improved music application (possibility to control both volumes and browsing, display the song progression)
  • Notification UI rewritten: can now display up to 100 characters
  • Improved BLE connectivity

Version 0.10.0

  • 2 new games: Pong and 2048
  • Fixed display glitches and improved needed time to turn on the display

Version 0.11.0

  • Heart-rate sensor application:
 * Displays the current value, and when running, this value is also displayed on the clock face
 * Value exposed over BLE, meaning other applications can read it (e.g. companion app such as Amazfish)
  • Navigation app: InfiNav - works e.g. with PureMaps on SailfishOS

Version 0.12.0

  • Improved BLE connection
  • OTA updates much more reliable

Version 0.13.0

  • Vibration
  • Call notification: it is possible to accept/ignore/reject a call from the PineTime
  • Music app got nicer icons
  • BLE connectivity improved a bit more

Version 0.14.0 "Green Avocado"

  • LVGL 7
  • Bugfixes to the build process

Version 0.14.1

Version 0.15.0 "Yellow Banana"

  • Analog watch face
  • Support for switching watch faces
  • Stopwatch app

Version 1.0.0 "Red Cherry"

  • Motion sensor integration
  • Step countin
  • UI redesign
  • Quick action menu:
 * Brightness setting
 * Do not disturb mode (disable vibrations on notifications)
 * Flash light application
  • Settings menu allowing configuration of:
 * Display timeout
 * Wakeup source (button only, single tap, double tap and wrist rotation)
 * Time format (12/24H)
 * Watchface
  • New navigation flow :
  • User settings stored in flash memory and restored on reset

Version 1.1.0 "Dragon Fruit"

  • Steps application
  • Timer application
  • UI improvements
  • Clang-format and clang-tidy config files
  • Bugfixes

Version 1.2.0 "Blue-purple Elderberry"

  • Added support for alternate accelerometer part BMA425
  • Metronome app
  • Memory usage optimizations
  • Bugfixes, minor improvements and code cleanup

Version 1.3.0 "Purple Fig"

  • LittleFS integration
  • New watchface, PineTimeStyle
  • Battery level notification on BLE (supported by Gadgetbridge)
  • Improved stopwatch app, Paddle game and call notifications
  • Firmware update app is now more foolproof
  • The SPI flash is put in sleep mode when the watch goes to sleep (only if the new bootloader is detected)
  • UI improvements (better 'tick' handling in LVGL, more consistent refresh rate)
  • Various improvements and code cleaning

Version 1.8.0 "Fuzzy Kiwi"

  • Improved gesture consistency
  • Digital watchface: Changed the color of the BLE icon to the official "Bluetooth™ blue"
  • PineTimeStyle: Integrated color picker into the watchface (long tap on the PTS watch face, and then tap on the gear icon that appears to open the color settings) * PineTimeStyle: Fixed alignment of the icons
  • Settings: Styled checkboxes as radio buttons
  • Paddle: Speed randomization
  • InfiniPaint: Vibration on color change (long tap to change color when running InfiniPaint)