Skip to content

Releases: InfiniTimeOrg/InfiniTime

InfiniTime 1.14.1

04 Sep 19:14
Compare
Choose a tag to compare

This is a small patch version of InfiniTime 1.14.1 that adds a very small feature : the JEDEC IDs of the SPI flash memory chip are now displayed in the SystemInfo application.

We released this new version when PineStore notified us that the current flash memory chip is EoL (end of life) ) and will be replaced by another one.

Following this announcement, we published on a upgrade of the bootloader.

InfiniTime did not really need any changes to run on the new chip, but it might be useful in the future to know exactly which chip is installed, hence this small patch.

Both the bootloader 1.0.1 and InfiniTime 1.14.1 has been sent to the production team of the PineTime. All new PineTimes will be flashed at the factory with those versions.

Please note that you don't need to update to InfiniTime 1.14.1 if you already run 1.14.0 since this new version does not bring any other new feature or patch.

Current ID:
20240725_194328

New ID:
20240904_210028

InfiniTime 1.14 "Quince Fruit"

06 Jan 14:40
Compare
Choose a tag to compare

Let's start the new year with a new version of InfiniTime!

Here is a summary of the changes and addition of InfiniTime 1.14:

  • Reduced memory footprint in flash memory: the analog watch face draws the background at runtime instead of using a pre-defined background picture and we moved the font for the navigation app to the external memory.
  • Improved raise-to-wake algorithm and new lower-to-sleep functionality
  • New weather service and new setting to select °C/°F
  • The build system now allows to easily select which user applications and watch faces are built into the firmware
  • Replace the node.js tool that convert the images (lv_img_conv) by a custom re-implementation in Python
  • InfiniLink, the iOS companion app has a new maintainer!

Let get into more details!

Memory usage is a major concern for the developer team. The amount of memory in the PineTime is fixed and not extensible. We have to take a great care with memory usage to ensure that all the functionalities fit into this limited space. In InfiniTime 1.14, we were able to free ~40KB in the internal flash memory, which is around 8.5% of the available space! To reach this achievement, @minacode helped to make some changes in the Analog watch face: it now draws the background at run-time instead of drawing a pre-defined picture as background. This background picture alone weighted for ~15KB! As a bonus, the analog watch face is now much faster since drawing the picture was quite slow. We also moved the fonts for the Navigation app to the external memory (resources) to free another 19KB!

@FintasticMan did a great job improving the raise-to-wake algorithm (the feature that wakes the watch up when you raise your wrist to look at your watch) and also added a new lower-to-sleep functionality that is a nice complement to the raise-to-wake: it puts the watch to sleep when you lower your wrist. Those improvements help with the battery life since they reduce the false positives in the raise detection and put the watch to sleep faster to save a bit of power.

InfiniSim_2024-01-06_142333

InfiniTime 1.13 brought the weather integration in PineTimeStyle watch face. This feature finally allowed users to use the weather functionality from InfiniTime and companion apps. We however received multiple bug reports about this feature : the info displayed by InfiniTime were not consistent with the companion apps, the fonts on the watch would be corrupt on the display and the watch would simply crash after some time.
In this release, we've made a new implementation of the weather service, which is much simpler, more reliable and uses less memory. It also comes with a new BLE API, which means that companion apps will have to integrate it to make the weather feature working again. Amazfish already supports it in version 2.2.1 (thanks to @jmlich and @piggz for their help!) and it will be available in the next release of Gadgetbridge. Other companion apps will hopefully integrate it soon!

Note: we removed the previous implementation of the weather service, so the weather feature won't work until you update your companion app to a version that integrates this new API.

If you are a companion app developer, feel free to reach out to us if you need help with the integration!

Oh and cherry on the cake: we also added a new settings to choose between °C and °F !

InfiniSim_2024-01-06_142319

InfiniTime is a monolithic firmware: everything is built into a single binary file: OS, drivers, BLE stack, applications and watch faces. We recently improved our build system so that it's now much easier to select which watch faces and applications are built into the firmware. Just by recompiling the firmware with a few CMake options, you can now easily build a custom version of InfiniTime that contains your selection of apps and watch faces, displayed in the order you like. You can for example build InfiniTime with no user application and a single watch face that uses only ~300KB in the internal flash memory!

Images used in InfiniTime must be converted from their original format (jpeg, png) into a specific binary format supported by LVGL, the FOSS UI library integrated in the project. We previously used a tool provided by LVGL to do this conversion. However, this tool, based on node.js was not easy to deploy and install. To overcome this issue, @NeroBurner decided to re-implement the subset of functionalities we need in Python. This new script has fewer dependencies and makes the development environment easier to setup.

Let me end this release note with a great news: InfiniLink, the iOS companion app has a new maintainer! @liamcharger took over the project and will hopefully bring improvements and new features to InfiniLink!

As always, I would like to thank everyone who contributed to this new release of InfiniTime!

Notes about this release

The format of the settings file changed since InfiniTime 1.13 so the settings might be reset to their default value after the update.
The resource file was updated to integrate the font for the Navigation app. You'll need to update the resources to be able to use this app.

Unfortunately there is a bug with v0.77.0 of Gadgetbridge on Android 14, that means that it can't update InfiniTime. We have submitted a fix, which will be available in the next release of Gadgetbridge. In the meantime, you can use another device to do the upgrade or use a nightly build of GadgetBridge (it's recommended to use the no pebble flavour, as that can be installed alongside your existing GadgetBridge app). The fix for this is included in v0.78.0 of GadgetBridge!

PRs merged since last release
Full list of changes

Thanks

@minacode @TailyFair @SteveAmor @FintasticMan @JF002 @NeroBurner @kieranc @blm768 @Alex-EEE @szsam @mark9064 @everypizza1 @liamcharger

Contribute

Everyone is very welcome to report any new bugs they encounter, features they miss, send InfiniTime some code or to simply donate.

InfiniTime 1.13 "Pomegranate"

24 Jun 14:37
Compare
Choose a tag to compare

Highlights

  • New heart rate processing algorithm, provides more accurate and faster results
  • New memory management (heap unification)
  • Weather integration in PineTimeStyle watch face
  • Power optimizations
  • Bug fix in shake wake
  • InfiniSim : New status window

Improved heart rate algorithm

The improved signal processing algorithm for the heart rate sensor was contributed by @Ceimour. They reworked the signal processing code that converts the raw values returned by the sensor, and also fine-tuned the senor settings. All in all, this new algorithm should return results faster (6.4s) and more often (each 800ms) than the previous one. You'll find more information about this change in this comment by Ceimour.

New memory management aka Heap Unification

InfiniTime was previously allocating 3 memory "heaps" (memory area managed by software modules) : one for FreeRTOS, one for LVGL and one "global" heap allocated by the C++ standard library.
To make memory usage more efficient, and to make the monitoring of the memory usage easier, we merged these 3 heaps into a single one managed by FreeRTOS.
This change allows us to have a better overview of the memory usage and reduces the overhead generated by multiple heaps.

See this page for more information about this change.

InfiniSim_heap_unification

Weather in PTS

The ground work in the form of the weather service was introduced in InfiniTime 1.8. It enables companion applications to send weather information, which is then available in InfiniTime for processing and display.

However, apart from a debug application (which is not available in released versions), InfiniTime did not display this information... until now. Thanks to @kieranc, the watch face PineTimeStyle now displays the weather forecast sent by the companion app. Please see the documentation on the Pine64 wiki here and here. To enable it, press and hold on the watch face, tap the settings icon and enable weather. The temperature displayed is in Celsius.

InfiniSim_PTS_Weather

Improved battery life

Following @aykevl's recommendations on the wiki, we were able to reduce the idle power consumption down to around 200µA, where it would use ~900µA previously! The PineTime can now easily run more than 10 days, while it would need to be recharged after 3-5 days previously!

See this issue for more information!

InfiniSim

The status window in InfiniSim was redesigned by @Brod8362 and now displays the status of BLE connection, brightness, charger, battery and alarm much more clearly!

infinisim-ui

Notes about this update

The resource file was not updated since InfiniTime 1.12, you don't need to update it if you already flashed the file from the previous release.

PRs merged since last release
Full list of changes : 1.12.0...1.13.0

Thanks

@Riksu9000 @fossison @FintasticMan @Ceimour @minacode @Elara6331 @kieranc @NeroBurner @ic-27 @TimothyRab @Brod8362

Contribute?

Everyone is very welcome to report any new bugs they encounter, features they miss, send InfiniTime some code or to simply donate.

InfiniTime 1.12 "Olallieberry"

02 Apr 13:25
Compare
Choose a tag to compare

InfiniTime 1.12 is the result of nearly 6 months of work from the community and from the @InfiniTimeOrg/core-developers team!

During this (very) long development cycle, we focused mainly on the maintenance of the project : make the code more readable and easier to extend, optimize the memory usage, improve the CI workflows,...

InfiniTime 1.12 also brings some improvements many users were waiting for like a better estimation of the battery level!

Project maintenance

We wrote a new maintainers guide and updated and improved the contributing guide. These documents will provide a better overview about the project organization and management : how to contribute to the project, what is the review process,...

We also applied many refactoring and optimizations that reduced the memory usage of the code (both in RAM and Flash) and that make it more easy to maintain.

Last but not least, we also added a new workflow in our CI (based on Github Actions) that automatically compares the changes in the PRs with the original branch and that displays a nice overview of the memory usage of those changes. This is very useful to check the impact of the changes regarding the memory usage!

image

Oh and finally, we added Watchmate to the [list of companion apps that support InfiniTime]!

image

Battery level monitoring

Many users noticed that the battery level displayed in InfiniTime was a bit optimistic, and that their PineTime would shut down because of a flat battery while InfiniTime still displayed 40% of battery level. In InfiniTime 1.12, we improved the battery level monitoring and implemented a new discharge curve. The battery level monitoring should now be more accurate than before!

InfiniTime will also notify the users that they should charge their PineTime by drawing the battery indicator in yellow.

UI

InfiniTime 1.12 brings a few improvements in the UI.

The settings for the date and time are now combined in a single setting page:

image

We updated the settings list style (the background of the items is now gray) to make it more consistent with other parts of the UI:
image

Notes about this update

The resources package was not updated for this release, so there's no need to re-install it.
The resources package was slightly updated to add a missing character to the font used by the Infineat watchface. Updating the resources is recommended, especially if you use this watchface.

PR merged since last release
Full list of changes : 1.11.0...1.12.0

Thanks

@cybuzuma @minacode @Elements6007 @NeroBurner @JF002 @hassless @AlexXZero @kieranc @tom-programming @Avamander @Riksu9000 @jonvmey @AlexXZero @tgc-dk @tnixeu @FintasticMan @JohnBlood @TailyFair @azymohliad

Contribute?

Everyone is very welcome to report any new bugs they encounter, features they miss, send InfiniTime some code or to simply donate.

InfiniTime 1.11 - FOSDEM 2023 edition

22 Jan 14:41
Compare
Choose a tag to compare

fosdemedition

Free and Open source Software Developers' European Meeting (FOSDEM) is a non-commercial, volunteer-organized European event centered on free and open-source software development. It is aimed at developers and anyone interested in the free and open-source software movement. It aims to enable developers to meet and to promote the awareness and use of free and open-source software.
FOSDEM is held annually, usually during the first weekend of February, at the Université Libre de Bruxelles Solbosch campus in the southeast of Brussels, Belgium.

Source : Wikipedia
FOSDEM

After 2 virtual editions FOSDEM 2023 will take place at the ULB (Brussels, Belgium) on the 4th and 5th of February 2023

I want to celebrate this by releasing a special edition of InfiniTime : InfiniTime FOSDEM 2023 edition! Based on InfiniTime 1.11.0, it proudly shows the FOSDEM logo on the Analog and Digital watchfaces.

InfiniSim_2023-01-22_130504 InfiniSim_2023-01-22_130512 InfiniSim_2023-01-22_130519

Feel free to flash your PineTime with this special edition if you plan to attend FOSDEM this year. And who knows, maybe meet other happy PineTime users :)

How to install this version ?

The installation procedure is exactly the same than for any other release of InfiniTime : update the firmware using the companion app of your choice, and then install the external resource packages (supported by ITD and Amazfish at this time). Please have a look at the release note of InfiniTime 1.11 for more info!

Note that this is a oneshot version : those changes won't be integrated in the development branch of InfiniTime and won't be available in next versions of InfiniTime.

InfiniTime 1.11 "Red Nectarine"

16 Oct 12:40
Compare
Choose a tag to compare

InfiniTime 1.11 "Red Nectarine" introduces the support for external resources!
Until now, all images and fonts had to be built in the main firmware which uses a lot of space in the main program memory. This new feature allows us to store those heavy data into the external flash memory. This will obviously bring a bit of fresh air to InfiniTime: we’ll be able to move some of the current pictures and fonts to the external memory and also add new apps and watch faces.

InfiniTime 1.11 also introduces 2 new watch faces that leverage the external resources feature: Infineat and G7710. Infineat is a stylish and colorful watch face that displays the time, date, BLE status, step count and also the battery level using an animated Pine64 logo. The G7710 watch face is inspired by a well known LCD watch. The memory usage of those contributions was the only reason why we couldn’t integrate them in InfiniTime sooner, and I’m really happy we are finally able to!

Image of both new watch faces

As always, this new version comes with many additions, improvements and bugfixes. You’ll find a detailed list in the bottom of this release note!

How to upgrade to InfiniTime 1.11 and install the external resources

You can update to InfiniTime 1.11 as you’ve always done: download the DFU ZIP file and use the companion app of your choice to update the firmware over the air.

This simple operation will bring all the additions and improvements we’ve done in InfiniTime 1.11 except… the new watch faces: they are grayed out in the settings:

Image of watch faces not being available

To enable those new watch faces, you’ll need to install the new resource package. This package contains all the fonts and pictures needed by the watch faces and must be installed separately from the firmware. The installation procedure of the resources package is very similar to the update procedure of the firmware. But, as this is a very new feature, not all companion apps support it.

ITD integrated support for external resources in version 0.0.8.

It's also merged in Amazfish, and a new version with those changes should be published very soon.

Other companion apps will hopefully add support for this new feature soon ! Let's give the companion app developers time to integrate and release this new feature ;-)

You’ll find more details about the installation procedure in the documentation.

Once the installation is done, Infineat and G7710 should be available in the settings:

Images of watch faces being available when resources are installed
Infineat watch face
G7710 watch face

Enjoy!

InfiniSim and External Resources

Shiny new watch faces using external resources want to be created. InfiniSim provides a safe way to hack on apps and watch faces, but we need a way to provide those resources to InfiniSim.
Welcome littlefs-do to the InfiniSim repository!

This new little command line program helps us work on the SPI-raw file used to simulate the external memory of the PineTime. It can list files inside the SPI-raw file using the ls command, copy files into and out using cp, create and remove directories with mkdir and rmdir and much more.

Making working with external resources a breeze littlefs-do can load a resource.zip into the SPI-raw file using the command ./littlefs-do res load resource.zip.

For more information on all the helpful commands of littlefs-do see the littlefs-do section of the documentation.

But where does one get this resource .zip file? Download it from GitHub or build the InfiniTime firmware? Both are valid options, but for development with InfiniSim, it would be cumbersome to constantly leave the InfiniSim repository. To solve that the resource file is created when compiling InfiniSim and can be found in the build directory under build/resources/infinitime-resources-1.11.0.zip.

Additions

  • Created a document to better communicate the vision of InfiniTime project to users, developers and everyone else
  • Compatibility with LFCLK calibration and reduced the power consumption of Nimble
  • Limit backlight brightness when flashlight is off
  • Watch face inspired by the G7710, with day of year and week number info (+ battery level %)
  • Infineat watch face + its external resources
  • Added pink color for PinetimeStyle watch face
  • PineTimeStyle watch face : make step count display configurable (full gauge for step count, half gauge with seconds and numerical display of the step count).

Improvements

  • SystemInfo: Display target build variant
  • Use Counter widget in SettingSetTime
  • Reset timer by long pressing on the button
  • Reorganized documentation
  • Date formats: Use ISO 8601 to avoid confusion
  • Bunch of code cleanup
  • Add status icons widget
  • Use Counter widget in Alarm
  • More timeout options
  • Notification swap text colors
  • P8: Mirror the display for P8b variant
  • Improved checkbox visibility
  • Add sleep mode
  • Package resources + a metadata file into a single .zip file
  • Improve status icon visibility

Bug Fixes

  • motorController: Fix infinite vibration on RunForDuration(0)
  • Build automation workflow fixes and improvements
  • Brightness is always restored on app switch

Thanks

Contribute?

Everyone is very welcome to report any new bugs they encounter, features they miss, send InfiniTime some code or to simply donate.

Full list of changes: 1.10.0...1.11.0

InfiniTime 1.10.0 "Yellow Mango"

29 Jun 16:12
Compare
Choose a tag to compare

It's time for the next version of InfiniTime! This new version is the result of nearly 3 months of work from 20 contributors who made 53 pull-requests and 136 commits! Thanks to everyone who contributed to the new version of InfiniTime!

InfiniTime 1.10 contains a lot of changes. Even if most of them will not be visible to the end users, they are very important for the maintenance of the project. We improved a lot, fixed a handful of bugs, improved the build process and the CI in Github Actions, published an official docker container and even fixed a single pixel in the font!

InfiniTime 1.10 also contains changes that most of you will be able to enjoy like... the possibility to dismiss notifications by right swiping them! I know a lot of users were asking for this feature and we hope you'll enjoy it!

InfiniSim has also received great improvements like support for the animations during transitions and GIF recording! The following GIF was recorded with InfiniSim to showcase the new notification dismissal feature:

The Timer app has also received an UI overhaul that greatly improves the user experience. The buttons are easier to press and you can hold them down to quickly change the value.

InfiniSim_2022-06-28_204429

Here are the main changes in InfiniTime 1.10:

Improvements

  • Notifications can now be dismissed by right swiping on the notification
  • Faster sleep time
  • New sharper battery icon
  • Timer UI was overhauled
  • Tweaked and improved display gamma to improve the colors displayed by the LCD
  • Flashlight now defaults to max brightness

Bug fixes

  • Fixed track progress in Music app
  • Fixed alarm sometimes not ringing

Under the hood

  • Auto-generate fonts at build time
  • Updated the GCC toolchain
  • Github Actions now build the project using the Docker InfiniTime-build docker container
  • Added basic hardware configuration options for P8
  • And many many many other improvements in the code, build system and user interface!

InfiniSim

  • Added support for GIF screen capture
  • Implemented the screen transition and animations from InfiniTime
  • Implemented SpiNorFlash and FS

Thanks to everyone who contributed to this release: @StarGate01 @Riksu9000 @FintasticMan @NeroBurner @mabuch @luzpaz @sethitow @FederAndInk @JF002 @yehoshuapw @rev22 @minacode @ildar @kieranc @dmlls @Avamander

Full diff: 1.9.0...1.10.0

InfiniTime 1.9.0 "Limeberry"

02 Apr 14:44
Compare
Choose a tag to compare

It's been almost 3 months since the last release of InfiniTime. A lot of work happened since them, and I'm happy to announce the release of InfiniTime 1.9 !

New Features:

Improvements:

  • Improve notification and call notification timeout (#903)
  • Improve heart-rate measurements (#531 #876)
  • Improve Alarm App (#945)
  • Better 12-hours mode integration (in settings, alarm and status bar) (#821, #938, #907)
  • Code cleanup and many improvements needed by InfiniSim

Bug fixes:

  • Fix display corruption when the timer is triggered (#1053)
  • Fix freeze in Music app when the title/album name were too long (#1036 #1054)

collage

The most visible feature of this release is certainly the new Terminal watchface by Zephyrlabs and 13werwolf13. This watchface displays all the information you need (time, date, battery level, steps,...) as if they were displayed in a Linux terminal. Let your inner geek express itself through it !

The bluetooth enable/disable mode (previously called airplane mode) is contributed by Evergreen22. By disabling all BLE communication, this feature allows you to save a bit of battery life and also to preserve your privacy.

A few weeks ago, NeroBurner joined the InfiniTime Github organization and released InfiniSim, the LVGL simulator for InfiniTime. This simulator allows you to easily test and debug new developments on your PC before testing them on the actual hardware. NeroBurner did a great job with the simulator and also created many PRs that improved the code of InfiniTime so the integration with the simulator would be easier. He also created new Github Actions workflows that automatically build the simulator when a pull-request is created on InfiniTime, which will help us ensure both project will be kept in sync.

InfiniTime 1.9 also improves the heart-rate measurements, the 12-hours mode, the notifications and call notifications and the Alarm app.

And, as usual, we fixed a few bugs and applied a few code cleanings!

Thanks to everyone who contributed to this release : @Riksu9000 @NeroBurner @yehoshuapw @hatmajster @eliwss0 @Zorvalt @mruss77 @13werwolf13 @evergreen22 @Arsen6331 @aveeryy @medeyko @JF002 @ZephyrLabs and many many others!

Full diff : 1.8.0...1.9.0

InfiniTime 1.8.0 - 🥝 Fuzzy Kiwi 🥝

07 Jan 16:50
Compare
Choose a tag to compare

Improvements:

  • Improved gesture consistency (#720)
  • Digital watchface: Changed the color of the BLE icon to the official "Bluetooth™ blue" (#556)
  • 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) (#718)
  • PineTimeStyle: Fixed alignment of the icons (#869)
  • Settings: Styled checkboxes as radio buttons (#679)
  • Paddle: Speed randomization (#797)
  • InfiniPaint: Vibration on color change (long tap to change color when running InfiniPaint) (#803)

New features:

  • BLE secure pairing (#796 - #886)
  • BLE file system API (#756 - #839)
  • Weather service (integrations are planned for the future) (#353)
  • Trip meter in Step app (#764)
  • Chimes: Short vibration every hour or half an hour. Settings are available in the 3rd page of settings (#813)
  • Shake to wake: The calibration of the sensitivity is available in the 3rd page of settings (#691)

Bugs fixed:

  • Removed misleading info in SystemInfo app (#785)

In addition to the previously listed things there was also a bunch of housekeeping and documentation improvements done.

collage

This release contains 47 pull requests and 232 commits in total.

This release brings the BLE secure pairing. When enabled by the companion app, this feature makes the BLE connectivity much more secure: InfiniTime displays a PIN code that the user must enter in the companion app. The connection is accepted only if this PIN code matches. The change makes transport encryption possible. Last but not least, this new mode makes the (re)connection a lot more reliable and fast, and it should resolve most if not all reconnection issues some users still encounter.

For now, the secure pairing is optional, and companion apps can still use the legacy (unsecured) mode, but we'll probably disable this legacy mode in the future to improve the security and privacy of InfiniTime. So, if you are a contributor to a companion app for InfiniTime, please check that your app supports this secure pairing mode!

For example, if you are using Gadgetbridge on Android, a prompt will ask you if you want to pair with your watch. Previously, we recommended to select "Do not pair" as pairing was not supported. Now, you can accept the pairing, which will enable this secure pairing mode. Using NRFConnect, you can enable this feature by selecting the Bond option when connecting to your watch.

collage-gb

This release also include 2 features that are not yet visible to the end-users: the weather service and the BLE file system API. Those feature were merged to allow developers and contributors of companion apps to implement them while we are working on their integrations in InfiniTime.

The weather service, as its name says, is a BLE API that allows the companion app to send weather data (temperatures, forecasts, ...) so InfiniTime can display it. The API is ready, but we still need to work on a weather app, and on integrating the weather info into the watchfaces.
The BLE file system API allows the companion app to send files to the external SPI flash memory. The ultimate goal is to offload the storage of static resources (bitmaps, fonts, ...) from the (relatively small) internal memory (512kB) to the external memory (4MB) and this API brings us a little closer to that goal.

Thank you @stephanie-eng, @SteveAmor, @geekbozu, @jharmer95, @Riksu9000, @kieranc, @Avamander, @NeroBurner, @eliwss0, @hubmartin, @evergreen22, @Arsen6331, @clemensvonmolo, @JF002 and @mabuch for your contributions.

Also thank you for your support of the project on LiberaPay and elsewhere.

Full diff: 1.7.1...1.8.0

Note to Gadgetbridge users : Please update to the latest version of Gadgetbridge (0.64.0 from F-Droid) before trying to update InfiniTime. We recently found an issue in Gadgetbridge 0.63.1 that confused the OTA in InfiniTime. Version 0.64.0 will fix the error message at the beginning of the OTA.

InfiniTime 1.7.1 - Fix unresponsive touch panel

15 Nov 20:03
Compare
Choose a tag to compare

This small bugfix release fixes a small issue that would make the touchscreen unresponsive in (apparently) very rare cases.

Full diff: 1.7.0...1.7.1