Pinetime Versions Save

Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS

1.6.0

2 years ago

I'm really happy to release InfiniTime 1.6.0. Even if this release is very small in terms of number of commits (1 commit, actually) and modifications (1 line of code was changed), it will have a huge impact on most of the users of InfiniTime : it fixes a BLE issue we were chasing since well before the release of 1.0.0 !

I spent countless hours trying to understand why the BLE connection would just stop working after a day of usage. I set up complex testing environment, ran many tests overnight, scratched my head on a lot of code, with no luck : BLE would work for most of the day and then die.

I was quickly joined by many other developers who tried to figure out this issue. Together, we checked a lot of code, made assumptions, tested many possible solutions, but still no luck until this week-end!

Daniel Jackson created this very small PR claiming it fixes this issues we were debugging for so long!

Quickly, many users installed that patch and reported only positive feebacks : their PineTime would still advertise and connect to the companion app after more than 18h of uptime!

Daniel didn't stop there and also sent the fix to Nimble, the FOSS BLE stack integrated in InfiniTime. This fix has already been approved and merged into NimBLE!

I can't thank Daniel enough for this fix, it relieves many developers (me included) from this burden, and they'll be able to focus on much more interesting features now :-)

Thanks also to all the developers and users who helped debugging this issue! We had the opportunity to check a lot of code in InfiniTime, FreeRTOS and NimBLE and now, we are confident that most of this code is rock solid !

As this fix will probably make a lot of PineTime happy, I decided to release it as soon as possible, only 2 days after the release of InfiniTime 1.5 !

Full diff: https://github.com/InfiniTimeOrg/InfiniTime/compare/1.5.0...1.6.0

1.5.0

2 years ago

InfiniTime 1.5 "Huckleberry" comes with a new features many users have been asking for for a long time : an Alarm app!

Thanks to mruss77, InfiniTime now comes with a shiny new alarm app. This new app allows you to specify the time you want the alarm to be triggered, and also to specify which days it should be triggered (only once, every days, week days). It also displays when the next alarm will be triggered. This is the first version of this app, and we've already identified many functionalities that could be added in the future like the support for multiple alarm, and persisting the settings after a reset.

collage

The handling of vibrations for notifications has also been improved by Riksu9000 : the button in the quick actions menu now only toggles vibrations on notifications, while still allowing other apps (Metronome, Timer and the new Alarm app) to enable the vibrations.

InfiniTime is now able to recover the time after a reset! This quality of life improvement, added by geekbozu, stores the date and time in a spefific area in memory that can be recovered after the reset. This way, you won't have to re-sync the time with your phone each time your reset your watch (to workaround those annoying BLE issues, for example).

Talking of BLE, evergreen22 improved the adertising strategy, which should improve the connection and reconnection reliability between your watch and your phone. In Bluetooth Low Energy, a BLE device advertises (announces) itself by broadcasting a small message with various info about itself. The other devices are then able to detect your watch by listenning (scan) for those messages. These changes improved the advertising strategy by following state of the art recommandations.

The battery level monitoring have also been improved by Riksu9000. The measurements should now bit more consistent and reliable.

This release also brings a few documentation update and code cleanings.

Full diff: https://github.com/InfiniTimeOrg/InfiniTime/compare/1.4.0...1.5.0

1.4.0

2 years ago

This is InfiniTime 1.4 "Pink Grapefruit"! This new version brings, among other things, a vastly improved touch driver and a color picker for the PineTimeStyle watchface.

collage

Fun fact : the commit that updated the version number is exactly the 1000th commit on the project. What a milestone!

Let me start with the touch driver. Before this update, it was working fine. Now, it's working a lot better! The touch driver, and the handling of touch inputs have been improved by a lot. The latency of the touch input (the time between your finger tapping the display and InfiniTime registering the touch event) have been reduced, and the whole touch experience is a lot more snappy. For example, the Paddle and Two games are now playable again, and gestures are detected with more accuracy than before. This feature was mostly contributed by Riku Isokoski.

The color picker is a nice addition to the PineTimeStyle watchface. This watchface, introduced in InfiniTime 1.3 by KieranC, is a really nice looking watchface inspired by a Pebble watchface. In this new version, you have the possibility to customize the colors (background, text and lateral bar) of your favorite watch. Thanks KieranC for this nice addition!

On the UI side, the application list, quick actions and settings menu and also the music and metronome apps have been slightly improved to make a better use of the small screen of the PineTime. Also, before going to sleep, the display is dimmed to a lower brightness level, notifying the user that the watch is going to sleep soon.

Call notifications also received a bit of love. They now vibrate longer and following a repetitive pattern so that you never miss a phone call again! Thanks to Florian and Riku Isokoski for these improvements!

Many users noticed that the battery level displayed in InfiniTime was a bit off : it never reached 100% on charge, and the device would shut down at almost 30%. While still not perfect (other improvements are still in the works), the battery measurement should now be a bit more consistent and reliable. These improvements were initiated by hassless.

In the version, we also tried to fix the bootloop issue some of you encountered. As this issue is not easy to reproduce, we cannot guarantee it won't happen again, but we really hope we've improved the situation on that matter. As a reminder, if your PineTime enters in a bootloop, the best solution is to wait for the battery to drain completely before charging it again. Your PineTime should then restart as if nothing happened.

On the development side, we've added support for the devcontainers in VSCode, thanks to Niall Cooling and Tim Keller.

Thanks again to everyone who contributed to this new version of InfiniTime!

Full diff: https://github.com/InfiniTimeOrg/InfiniTime/compare/1.3.0...1.4.0

1.3.0

2 years ago

First, let me thank everyone who contributes to this project, directly or indirectly! Every contribution counts : bug fix, new feature, code maintenance and code cleaning, code review and test, animation and support on the community chat, mentions on social networks, blog articles and video, development of companion apps,.. All of these contributions are invaluable and are part of the success of this project! Thanks everyone!

As announced in the last Pin64 Community Update, this new version of InfiniTime brings a new watchface to InfiniTime : PineTimeStyle ! This very stylish watchface written by Kieranc and inspired by a watchface for the Pebble display the time is large characters, the battery level, ble connection status, the date and the evolution of your steps according to your step goal! Try it, you'll love it!

This release also brings another very important feature, even if it's not visible from the end user point of view : the integration of LittleFS by Joaquimorg. LittleFS is A high-integrity embedded file system, it allows applications running on microcontrollers to create a filesystem on flash memories very easily. For now, InfiniTime only uses this filesystem to store the user settings, but in the near future, we'll be able to add many interesting functionalities like storing an history of the heart rate values and steps, for example. We will also be able to free a lot of space in the internal memory of the PineTime by storing fonts, pictures and icons on the external memory. As I wrote previously, the end user won't see anything new from this integration, but this is only the first step toward a lot of new features !

In this release, InfiniTime now sends the battery level as a BLE notification, allowing companion apps like Gadgetbridge to display the up to date battery level of the PineTime. Gadgetbridge offers the possibility to display a graph of the battery level, and recently added the support for those notifications in version 0.58.2. Thanks to Andreas for their help on this feature!

This release also brings many improvements in the Stopwatch app, the Paddle game and the call notifications by Riku Isokoski. Riku also improved the 'tick' management in LVGL, which enables a smoother refresh of the display. Last but not least, Riku has made the firmware update app more foolproof by preventing the user from closing the app while an update is in progress

Finally, this release also brings other improvements and bugfixes!

collage gadgetbridge

Changelog:

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

1.2.0

2 years ago

I wasn't planning on releasing InfiniTime 1.2.0 so soon, as many interesting features are in the work right now. But, as we announced in Pine64 monthly update, the factory cannot source the accelerometer (BMA421) anymore. As an alternative, they propose to use the BMA425 instead. This new sensor is very similar (it actually support more built-in features) but needed a few minor modifications to the driver (we need to take into account the new chip ID of the BMA425, for example). As the factory is waiting for a version of InfiniTime that supports the BMA425, I decided to release the version as it is as soon as possible.

So, in addition to the added support for the BMA425, this new version brings 1 new app, many improvements and bugfixes!

The Metronome app was contributed by Bryton Hall. It uses the vibrator to give the tempo to the user, and provides a nice user interface to select the beats per minute (BPM) and beats per bar (BPB, for creating an accent beat).

The Stopwatch app was also improved by Riku Isokoski. It now provides a cleaner user interface.

This release also includes many "behind the scene" developments mostly focused on memory usage optimizations. I did a detailed analysis of RAM and Flash memory usage and I've already implemented a few changes that reduce the size of the firmware (from ~420KB to ~340KB) and to reduce the RAM memory usage.

We've also fixed a few bugs (like this strange memory corruption issue on which I spent far more time than expected) and implemented a few improvements and code cleanings.

collage

1.1.0

2 years ago

I'm happy to release InfiniTime 1.1.0 Dragon Fruit, the first update since we released InfiniTime 1.0. This release brings many improvements, fixes and functionalities.

poster

We have 2 new apps : Steps and Timer! Steps (by @joaquimorg) displays your step count of the day and your progress according to your step goal. You can specify your step goal in a new entry in the Settings application.

Timer (by @Raupinger) is a timer application : set a duration, start the timer and you'll be notified when the time's elapsed. Quite handy when you cook eggs or pasta for example :)

Many improvements have been done on the UI : long notification titles handling by @Raupinger, better detection of the charger to display the power indicator accordingly (by @DavidVentura) and the heart rate indicator is now greyed out when the sensor is not activated.

I would also like to highlight @Avamander work. Avamander works behind the scene to keep the code clean and tidy thanks to multiple PRs to introduce clang-format and clang-tidy configuration files, reformat the code using these tools and refactor parts of the code to keep it consistent. This work is not as visible as user facing features but it's really important for the maintainability of the project in the long term!

We also fixed a few bugs like that crash in the Stopwatch app (by @MFAshby).

Finally, the documentation got many improvements, typos and fixes, and I also wrote a new Getting started guide for InfiniTime 1.0.

1.0.0

3 years ago

This is InfiniTime 1.0, the first non-beta release of InfiniTime!

You can read the official announcement on the Pine64 blog.

What's new in this release since the last 0.15 version?

First, there is the integration of the motion sensor, which allowed us to add the long awaited features : step counting and wake up on wrist rotation! This integration is important because the motion sensor was the last part of the hardware that was not integrated yet in InfiniTime!

The most noticeable new feature in this release is probably the redesign of the UI which is, I think we'll all agree about that, a lot better now than before. This redesign brought many new features :

  • A quick action menu
    • brightness setting
    • do not disturb mode (disable vibrations on notifications)
    • flash light application
  • A settings menu, allowing the users to configure their watch
    • display timeout
    • wakeup source (button only, single tap, double tap and wrist rotation)
    • time format (12/24H)
    • default watchface
  • The settings menu also give access to the redesigned system information application, a new battery info application and the firmware validation application.
  • A new navigation flow :
    • On the clock face, swipe down to display the notifications
    • swipe up to access to the applications menu
    • and swipe right to access to the quick actions menu
  • The user settings are stored in flash memory and are restored when the watch restarts.

This HUGE list of new features were contributed by joaquimorg. Thanks again for this amazing work!

In this release, we also improved the notification management. Now, companion app have the opportunity to send a title along with the text message, which will now be fully displayed. A bug that would crash the system in the notification popup was also fixed, and empty notifications are now correctly ignored.

The TWI (I²C) driver has also been fixed and should not crash anymore in games.

1.0.0-RC4

3 years ago

This is the 4th release candidate for InfiniTime 1.0.0 !

Since the RC, one small bug was fixed : the lap counter in the Stopwatch app was not displayed properly

As always, do not forget this is a release candidate version, not a stable release, flash it at your own risk on your sealed devices ;)

*Build date reported in About app: "Apr 20 2021 19:09:21"

1.0.0-RC3

3 years ago

This is the 3rd release candidate for InfiniTime 1.0.0 !

Since the RC2, one bug was fixed:

  • Fix display glitch on the firmware update app when OTA was started while another app was open and the device was sleeping.

As always, do not forget this is a release candidate version, not a stable release, flash it at your own risk on your sealed devices ;)

*Build date reported in About app: "Apr 18 2021 15:45:13"

1.0.0-RC2

3 years ago

This is the 2nd release candidate for InfiniTime 1.0.0 !

A few changes and improvements have been done since RC1:

  • Stopwatch : improve number formatting
  • Music : apply the theme to the buttons on the application
  • Heart Rate : fix display inconsistencies when the app was closed and open again while HR measurement was running
  • Fix Gitpod workspace since the project was renamed

As always, do not forget this is a release candidate version, not a stable release, flash it at your own risk on your sealed devices ;)

*build date reported in About app: "Apr 18 2021 14:15:42"