Releases: InfiniTimeOrg/InfiniTime
New music app and new notifications
This version is certainly the first version that receives the most feedbacks from users and the most contributions from other developers, and I'm very happy that InfiniTime receives that much attention!
As usual, this new version fixes some bugs and brings new features and improvements.
Two major bugs have been fixed in this release. The first one prevented the bootloader from working correctly after a reset from sleep mode. This would temporarily brick the device, and the only way to revive it was to let the battery drain completely before charging it again. Note that this fix is also present in version 0.8.3.
The driver of the touch panel has also been fixed. This issue has been highlighted by the pong game of ColdBrewCaffin that would freeze InfiniTime. With the help of TT-392, we were able to fix the TWI driver and fix this issue.
The new features, now !
First, the music app have been greatly improved by Avamander. The UI is really amazing, displays a nice disc animation, uses gestures to switch controls from browsing to volume, and also displays the song progression. Avamander also added support for these new features into Gadgetbridge 0.48. Gadgetbridge is a companion app running on Android which provide support for InfiniTime. Note that this version of Gadgetbridge also support firmware upgrade over the air (OTA) for Infinitime!
Next, the notification UI has been completely re-written. The small modal dialog box that could display only 18 characters has been replaced by a shiny new notification app that displays up to 100 characters. Note that a new version of Gadgetbridge is needed to support notifications with more than 18 characters. This version (0.49?) is not yet released.
The BLE connectivity has also been improved, it is now easier to connect/reconnect with a smartphone. InfiniTime now exposes the Battery Information Service and the FindMe profile to BLE host.
Finally, multiple pull-requests that bring improvements to the documentation, code structure and coding guidelines have been merged in this version.
I would like to thank every one who contributed to this release by reporting bugs, by contributing to the code and documentation and simply by providing feedback to me and other developers!
[0.9 RELEASE CANDIDATE 1] Music app, notifications,...
WARNING - WARNING - WARNING - WARNING
This release is a release candidate version : it is available for people to test the version before releasing it! It is NOT recommended to flash it on a sealed device.
WARNING - WARNING - WARNING - WARNING
New features :
- Add Battery Info service (BLE)
- Add FindMe profile (BLE)
- Improved music app (by @Avamander)
- Fix TWI driver (thanks to @TT-392 for his help on this subject, and to @ColdBrewCaffine for his Pong game that allowed me to test the fix)
- Prevent the bootloader from failing to initialize the SPI flash (disable the SLEEP command on the spi flash).
- Improve BLE connection and reconnection
- Code improvements (folder renamed for coherency, new coding styles,...)
[Bugfix] Fix bootloader stuck after a reset
One of the improvements in version 0.8.2 is power usage : most of the internal and external devices are switched in sleep mode when the display is off to improve the battery life.
This improvement had unwanted side effect : the bootloader cannot initialize properly when the SPI NOR Flash (external flash memory) is in sleep mode. In this case, the bootloader is stuck in an infinite loop and does not run at all. The result for the end user is the display that stays black, and the device that seems bricked. The only known workaround is to wait for the battery to drain completely, which can take some time.
This bugfix version disables the sleep mode on the SPI NOR Flash to ensure that the bootloader will be able to start and run the firmware. Sleep mode will be re-enabled when we’ll be able to update the bootloader using OTA and query its version at runtime.
InfiniTime, license, documentation, improvements,...
NOTE FOR THE USERS OF SEALED PINETIMES FROM PINE64:
After the firmware and bootloader were sent to production, we discovered 2 critical bugs : one in InfiniTime (#60) and one in the bootloader (lupyuen/pinetime-rust-mynewt#24). These bugs could potentially brick (temporarily) your PineTime when it resets after the OTA from the original 0.7.1 version to this version, or when you force a reset with a long push on the button.
If you apply this update on a sealed PineTime and your device is stuck on a black screen, the only known workaround it to wait for the battery to drain completely before trying again.
If you use a development kit, you can just issue a reset using your SWD debugger. Your device should reboot properly.
Warning! Doing a force reset (long-pressing the button) can cause older bootloader to hang, it is not recommended!
These 2 bugs have since then been fixed (in this version 0.8.2 of InfiniTime and in the bootloader v5.0.4 (https://github.com/lupyuen/pinetime-rust-mynewt/releases/tag/v5.0.4). For now, the only way to upgrade the bootloader is via the SWD interface. There's currently no way to OTA a new version of the bootloader to a sealed PineTime.
I recommend you use version 0.8.3 which prevent the bootloader from being stuck in an infinite loop after a reset.
Sorry for the inconvenience.
This release is the first version officially released under the GPLv3 license and under the new name of the project : InfiniTime.
This version brings new features, more documentation, better battery life and improvements for the developers!
Let's talk about the new features! The biggest one is the Music application (thanks to @piggz for this PR) that allows you to control the music playback on your phone (integrated in Amazfish running on SailfishOS). See this video for a demo about this new app.
Next feature is the Touchmodes : each application can select between 2 touch modes : gestures or polling. Gesture mode is the mode that was previously implemented. In this mode, applications are notified when a gesture is detected (tap, swipe,...). In the new Polling mode, the application is notified as soon as a touchevent is detected. It allows the application to follow your finger moving on the screen to build pain application like InfiniPaint, which is also included in this release.
Another interesting feature is the manual validation of the updated firmware. Previously, the new version of the firmware was automatically validated. When the firmware is validated, the bootloader knows that the firmware is running correctly and does not revert to the previous version. Now, the user has to manually validate the new version of the firmware before the next reset. If the new version does not work correctly, the user can choose to reset the device and let the bootloader revert to the previous version. See this page for more information about the firmware validation process.
The battery life has been improved by switching most of the peripherals off when the display is shut down. I've measured a battery life of 7 days with this version. This is good, but in theory, we can do even better!
The last feature to be announced is the new application menu, that can now display multiple page and more than 6 apps!
The documentation has been greatly improved. Please have a look at the main Readme.md file and all the links it contains. There are a lot of informations about the bootloader, build process, branch management, contributions... Thanks to many contributors who helped me write and check the documentation!
On the development side, annoying #include errors and a lot of warnings have been fixed. InfiniTime can be now built using Docker, which is really helpful when you don't want to install the whole development environment on you computer, and to easily produce binaries, images and DFU files for the releases on Github! Thanks to @FWeissenb for his work on this!
During the RC phase, annoying crashes and freezes have been fixed in InfiniTime (#60) and in the bootloader (lupyuen/pinetime-rust-mynewt#24). The bootloader has been updated in the source tree, but this version of InfiniTime is still compatible with the older version of the bootloader.
[0.8 RELEASE CANDIDATE 3] Small improvements
This new release candidates brings many small improvements:
- All occurences of Pinetime-JF are now renamed and InfiniTime (advertised name, device name,...).
- Updated to bootloader version 5.0.4.
pinetime-graphics
flashes a new bootloader graphic (blue pinecone).
[0.8 RELEASE CANDIDATE 2] Bugfix
This new RC fixes the following bugs:
- The firmware version reported via BLE was incorrect : #58
- Firmware freeze/crash when the button was pressed (to go to sleep) while a touch event was generated #60
A few typos were also fixed in the documentation (thanks to @Avamander)
During the analysis of #60, a potential bug was detected in the bootloader. An issue has been created to track it : lupyuen/pinetime-rust-mynewt#24
This version will be release as 0.8.1 in Master is no major bug are discovered.
[RELEASE CANDIDATE 1] InfiniTime, license, documentation, improvements,...
This release is a release candidate version, it's not fully tested yet and could still contain bugs or errors. Please, test it and report issue if you find one!
This release is the first version officially released under the GPLv3 license and under the new name of the project : InfiniTime.
This version brings new features, more documentation, better battery life and improvements for the developers!
Let's talk about the new features! The biggest one is the Music application (thanks to @piggz for this PR) that allows you to control the music playback on your phone (integrated in Amazfish running on SailfishOS). See this video for a demo about this new app.
Next feature is the Touchmodes : each application can select between 2 touch modes : gestures or polling. Gesture mode is the mode that was previously implemented. In this mode, applications are notified when a gesture is detected (tap, swipe,...). In the new Polling mode, the application is notified as soon as a touchevent is detected. It allows the application to follow your finger moving on the screen to build pain application like InfiniPaint, which is also included in this release.
Another interesting feature is the manual validation of the updated firmware. Previously, the new version of the firmware was automatically validated. When the firmware is validated, the bootloader knows that the firmware is running correctly and does not revert to the previous version. Now, the user has to manually validate the new version of the firmware before the next reset. If the new version does not work correctly, the user can choose to reset the device and let the bootloader revert to the previous version. See this page for more information about the firmware validation process.
The battery life has been improved by switching most of the peripherals off when the display is shut down. I've measured a battery life of 7 days with this version. This is good, but in theory, we can do even better!
The last feature to be announced is the new application menu, that can now display multiple page and more than 6 apps!
The documentation has been greatly improved. Please have a look at the main Readme.md file and all the links it contains. There are a lot of informations about the bootloader, build process, branch management, contributions... Thanks to many contributors who helped me write and check the documentation!
On the development side, annoying #include errors and a lot of warnings have been fixed. InfiniTime can be now built using Docker, which is really helpful when you don't want to install the whole development environment on you computer, and to easily produce binaries, images and DFU files for the releases on Github! Thanks to @FWeissenb for his work on this!
Fix touch controller initialization timing
This bugfix release fixes the initialization sequence of the touch controller. In some cases, when the controller was put to sleep, the init sequence would not reset it correctly, which was preventing the touch screen from working correctly.
The README file has also been re-written and is now (hopefully) easier to read than before.
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 second 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.
Files
- pinetime-app.* is the standalone firmware (without support for bootloader)
- pinetime-mcuboot-app.* is the firmware compatible with MCUBoot bootloader
- pinetime-mcuboot-app.img is the firmware converted into an image for the MCUBoot bootloader (binary format)
- pinetime-mcuboot-app-image.hex is the firmware converted into an image for the MCUBoot bootloader (hex format)
- pinetime-graphics.* is a little firmware that write the boot graphics into the SPI flash memory
- bootloader.hex is the MCUBoot bootloader from @lupyuen
- pinetime-app-dfu.zip is the DFU file needed for the OTA with NRFConnect
Memory optimisation, UI improvements, bugfixes
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
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