InfiniTime

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

GPL-3.0 License

Stars
2.6K
Committers
137

Bot releases are hidden (Show)

InfiniTime - InfiniTime 1.14 Latest Release

Published by JF002 10 months ago

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.

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 - InfiniTime 1.13 "Pomegranate"

Published by JF002 over 1 year ago

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 : https://github.com/InfiniTimeOrg/InfiniTime/compare/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 - InfiniTime 1.12 "Olallieberry"

Published by JF002 over 1 year ago

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 : https://github.com/InfiniTimeOrg/InfiniTime/compare/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 - InfiniTime 1.11 - FOSDEM 2023 edition

Published by JF002 over 1 year ago

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 - InfiniTime 1.11 "Red Nectarine"

Published by Avamander about 2 years ago

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

  • @Riksu9000, @StarGate01, @JF002, @earboxer, @dmlls, @minacode, @NeroBurner, @mashuptwice @Akselmo, @ITCactus, @ght, @FintasticMan @kieranc and everyone else who contributed!

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: https://github.com/InfiniTimeOrg/InfiniTime/compare/1.10.0...1.11.0

InfiniTime - InfiniTime 1.10.0 "Yellow Mango"

Published by JF002 over 2 years ago

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: https://github.com/InfiniTimeOrg/InfiniTime/compare/1.9.0...1.10.0

InfiniTime - InfiniTime 1.9.0 "Limeberry"

Published by JF002 over 2 years ago

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 : https://github.com/InfiniTimeOrg/InfiniTime/compare/1.8.0...1.9.0

InfiniTime - InfiniTime 1.8.0 - 🥝 Fuzzy Kiwi 🥝

Published by Avamander almost 3 years ago

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: https://github.com/InfiniTimeOrg/InfiniTime/compare/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 - InfiniTime 1.7.1 - Fix unresponsive touch panel

Published by JF002 almost 3 years ago

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

Full diff: https://github.com/InfiniTimeOrg/InfiniTime/compare/1.7.0...1.7.1

InfiniTime - InfiniTime 1.7.0 - Jackfruit ⚡⚡⚡

Published by Avamander almost 3 years ago

Improvements:

  • More accurate battery percentage
  • Faster wakeup (video)
  • New touch handler
  • Wake on notification and charge
  • Memory usage and speed optimizations

New features:

  • Motion service (video)
  • Flashlight brightness changes
  • Manual date and time setting

Bugs fixed:

  • Battery percentage reporting
  • Disabled Touch Controller error check
  • Paddle game bounds checking

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

collage

This release contains 42 pull requests in total.

Thank you @Riksu9000, @jonvmey, @hubmartin, @JF002, @danielgjackson, @Avamander, @clemensvonmolo, @coxtor, @mabuch, @NeroBurner, @Quantum-cross, @carlosperate, @dyamon, @Arsen6331, @stephanie-eng, @xan-m, @SteveAmor, @evergreen22, @Sematre, @maksalees, @geekbozu and @timaios for your contributions. Thanks to whoever also participated in Hacktoberfest, hope you got your four PRs.

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

With the advent of 1.7.0 the PineTime project also went through organizational changes, bringing aboard a few new maintainers.

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

InfiniTime - InfiniTime 1.6.0 "Ice Apple" : A new BLE fix!

Published by JF002 about 3 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

InfiniTime - InfiniTime 1.5.0 "Huckleberry"

Published by JF002 about 3 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

InfiniTime - InfiniTime 1.4.0 "Pink Grapefruit" - The 1000th commit!

Published by JF002 about 3 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

InfiniTime - InfiniTime 1.3.0 "Purple Fig" : PineTimeStyle!

Published by JF002 about 3 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

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

InfiniTime - InfiniTime 1.1 "Dragon Fruit" : Steps, Timer and many other improvements!

Published by JF002 over 3 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.

InfiniTime - InfiniTime 1.0.0 "Red Cherry": the first stable release!

Published by JF002 over 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.

InfiniTime - [Release Candidate 4] InfiniTime 1.0

Published by JF002 over 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"

InfiniTime - [Release Candidate 3] InfiniTime 1.0

Published by JF002 over 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"

InfiniTime - [Release Candidate 2] InfiniTime 1.0

Published by JF002 over 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"