Skip to content

Releases: InfiniTimeOrg/InfiniTime

Memory optimisation, UI improvements, bugfixes

11 Jul 19:17

Choose a tag to compare

The most visible modification of this release are the slight changes on the UI : smaller icons on the Clock screen, and the icons that replace the texts on the menu screen.
These icons are implemented using the symbol functionality of LVGL, which is easier to use, and which uses less memory space than bitmaps.
Also, a notification will turn the display on so that you can see the notification as soon as it reaches your Pinetime!

Under the hood, I also did a lot of memory analysis to free some space in RAM as it was nearly full. The space available now in RAM should allow us to add many functionalities!

NOTE : the Clock screen shows a heartrate and step counter indicator. For now, they are just placeholders for a future release and they'll always display '0'. Heartrate sensor and accelerometer are not implemented yet.

About this version
This version is the release candidate version of the firmware that will be pre-programmed in the next batch of Pinetime devkits! If no critical bugs are found, this version will become this first version of the firmware that'll be shipped with the Pinetime!

It' based on LittleVGL 6.1.2 and NimBLE 1.3.0
I built it using gcc-arm-none-eabi-8-2019-q3-update and nRF5_SDK_15.3.0_59ac345.

Update to NimBLE1.3.0 and improve BLE connectivity

27 Jun 14:32

Choose a tag to compare

This release updates to NimBLE 1.3.0 and fixes a IRQ issue that was causing random connectivity issues with Android phones.

FYI Gadgetbridge is working on the integration of Pinetime in this branch : https://codeberg.org/Freeyourgadget/Gadgetbridge/src/branch/pinetime-jf

Bug fixes and information screen

16 Jun 19:19

Choose a tag to compare

Pre-release

This release contains mostly bugfixes:

  • Fix a bug that prevent the wake up of the screen once it has been automatically switched off;
  • Fix include path that were dependant of my own FS;
  • Fix build errors when CMAKE_BUILD_TYPE is not defined.

The informations screen has also been improved to add more information (BLE MAC, uptime, build date/time,...).

Bootloader, OTA, DFU

07 Jun 12:45

Choose a tag to compare

Bootloader, OTA, DFU Pre-release
Pre-release

This release brings a very important feature for the Pinetime project : firmware update via BLE ! This is the result of the combined work of @lupyuen and myself, with the help of the whole #Pinetime community !

For this to happen, we had to build a firmware that integrates MCUBoot, agree on a memory map for the internal and external flash memories and implement the whole OTA procedure (upload data via BLE, store it on the SPI flash memory, integrate with MCUBoot,...).

Note that the current status of OTA is still considered experimental. Do not rely on it to safely update your Pinetime for now !

The documentation about OTA and the bootloader is located into the folder bootloader of the source code.

This release contains 3 binaries:

  • pinetime-app : an autonomous version of the application (does not work with MCUBoot). It's easier and faster to use this one if you're working on and debugging the code;
  • pinetime-mcuboot-app : this is the binary you want to use with MCUBoot
  • pinetime-graphics : a simple app that writes the bootloader graphic assets into the SPI flash memory.

This release also provide 2 files to work with the bootloader:

  • pinetime-mcuboot-app.img is the file you must program to address 0x8000 of the internal flash memory
  • pinetime-app-dfu.zip is the file you need to test the OTA procedure (upload via BLE).

Memory usage of pinetime-app:

text	   data	    bss	    dec	    hex	filename
250828	    772	  41976	 293576	  47ac8	pinetime-app.out

NimBLE & Amazfish

17 May 08:41

Choose a tag to compare

NimBLE & Amazfish Pre-release
Pre-release

This version brings 2 major improvements:

  • The integration of NimBLE open source BLE stack instead of closed source Nordic Softdevice.
  • Pinetime-JF is now supported by Amazfish.

The integration of NimBLE was a lot of time, but it's totally worth it because I want this project to be as open source as possible. I also want to build OTA update via BLE on MCUBoot bootloader, and using another BLE stack than the NRF Softdevice was needed for this.

I would like to thank Adam for his work on Amazfish, a companion app for many smartwatches running on SailfishOS (which runs on the Pinephone !). He contributed to the code of Pinetime-JF to make the integration into Amazfish possible. Amazfish supports the connection to the pinetime via BLE, time synchronization and notifications. See this video for a live demo!

This version also brings some bugfixes

  • Update to LittleVGL to fix a memory leak issue on the Clock screen.
  • Improve the SPI driver to prevent race conditions on the SPI port.

Memory usage:

text	   data	    bss	    dec	    hex	filename
245840	    772	  41328	 287940	  464c4	pinetime-app.out

BLE notifications

05 Apr 18:10

Choose a tag to compare

BLE notifications Pre-release
Pre-release

There are two main features that have been added in this release.

This firmware now supports BLE notifications : it can receive notification from a companion app and display them on the screen. As I couldn't find any 'reference' application that could send BLE notification using ANS (Alert Service Notification), I've build a fork of gobbledegook, it's available here

The second nice feature are the icons that display the battery level and BLE connection state. These icons are provided by @arteeh. Here is his repo

Here is a complete changelog:

Memory usage:

text	   data	    bss	    dec	    hex	filename
174712	   1280	  27160	 203152	  31990	pinetime-app.out

Fix first boot after flashing the firmware

06 Mar 21:02

Choose a tag to compare

This bugfix release fixes the first boot after flashing the firmware. In previous releases, multiple hardware resets from the debugger were needed before the firmware was able to run properly.

This release should fix this bug and the allow the firmware to run directly after the programming.

Integration of lvgl

03 Mar 19:08

Choose a tag to compare

Integration of lvgl Pre-release
Pre-release

The most visible changes of the release are the integration of LittleVGL and the change of default font.

LittleVGL, an open-source embedded GUI library, comes with a lot of functionalities and widgets that’ll allow more rich and interactive user-interfaces.

The user-interface now provides a basic user interaction : touch any part of the screen on the watchface to display a menu of applications. Tap on an app to open it, and use the button to go back. There are 5 apps for now :

  • The watchface
  • A spinning meter (that could be used in a chrono app)
  • An analog gauge (that could be used as an analog watchface)
  • A message box that displays the version of the firmware
  • A simple Hello world application with a display that counts the number of time that a button has been pressed.
    the digital watchface

Except the watchface, these apps are demo showing the possibilities that are already implemented in the firmware. In the future, actual apps could be designed.

This release also brings another new feature : the watchdog is enabled. The watchdog will automatically reboot the device if the firmware crashes or freezes. The firmware can also be manually reset by pressing the button for a long time (5-10 seconds).

Finally, a bug in the time synchronization has been fixed (#21) and the correct time should be displayed after the time synchronization is finished.

Memory usage:

text	   data	    bss	    dec	    hex	filename
162316	   1276	  26708	 190300	  2e75c	pinetime-app.out

V0.2.2 - Powered by the community

31 Jan 19:33

Choose a tag to compare

Pre-release

This version brings the following new features:

  • The performances of the SPI drivers have been greatly improved by using DMA and IRQ. It means that the refresh of the screen is now a lot faster than before
  • Support for OpenOCD in CMake scripts (thanks to @luben93)
  • The minimum version of CMake has been set to 3.10 to be compatible with more dev environments (thanks to @danielkucera)

This is the first version that contains contributions from the community. I appreciate them!

This version also fixes the clock drift : before, the pinetime clock would drift for more than 30 minutes a day. Now, the drifting is reduced ... 0 minute a day!

I've also measured the battery life : my pinetime dev kit ran for more than 7 days on battery. Not bad knowing that I cannot measure the current drawn by the pinetime!

Memory usage:

   text	   data	    bss	    dec	    hex	filename
 132640	    988	  27860	 161488	  276d0	pinetime-app.out

Translation :

  • FLASH : 132640 / 524288 Bytes (25%)
  • RAM : 27860 + 988 = 28848 / 65536 Bytes (44%)

Version 0.2.0

18 Jan 14:03

Choose a tag to compare

Version 0.2.0 Pre-release
Pre-release

This version provides many improvements since version 0.1.0 :

  • The date and time should be correctly processed (Monday 23:59 + 1 minute => Tuesday 00:00).
  • BLE disconnect is now managed, and the display is updated accordingly.
  • Support for Black Magic Probe (and other programmer/debugger using GDB client) has been added in CMake targets.
  • Battery life should be improved by disabling the SPI and I²C peripherals during sleep.
  • The version of the firmware is displayed on the bottom of the screen.

Some bugs have also been fixed:

  • Fixed a stack overflow when waking-up, which would make the soft crash after ~7 wake-ups.
  • Fix an error that would prevent building the project if the file nrf_common.ld was not in a subdirectory of the project.
  • Improve the time tracking process so that the soft keep track of the time even when it's sleeping for more than 4 hours.

This release also provides a "-full" binary that contains the pinetime application and the Nordic Semiconductor SoftDevice needed for the BLE stack.