“Where is my Rebble Community Update?” the people cry! At last, it is here, and this time, rather than the typical broad yet shallow summary, we thought we’d take a closer look at a particular area of import: firmware. Familiarize yourself with our feats in this forward-looking firmware-focused feature. If you’d like to add something, send us a tweet, or better still, submit a pull request!
While the Pebble/Rebble ecosystem is comprised of many parts: hardware, appstore, mobile apps, watchapps/watchfaces and more - one of the most critically important pieces in terms of keeping existing hardware alive is developing replacement firmware. Since the original Pebble firmware was not open source, and is owned by Fitbit, this unfortunately means starting from scratch. Not completely from scratch, since the FreeRTOS operating system on which Pebble OS is based can be leveraged, and moreover an example implementation supporting the
STM32F4 family of microcontrollers on which the Pebble Time and subsequent hardware is based was able to serve as a basis for exploration of Pebble’s specific hardware implementation(s).
Part of the reason that an update has not been forthcoming is due to the continual advances being made, so that each milestone at which sharing seemed appropriate ended up being dwarfed by additional progress made before it had even been possible to share the last! Here’s a detailed breakdown of where things are today (who knows how much further along they’ll be tomorrow!):
Beyond the low-level hardware interfacing work, there is a lot of software that has to be written before “basic” functionality such as drawing shapes and text is possible. With this in mind, @jneubrand began work on neographics, an open-source replacement for Pebble’s graphics routines, long before there existed firmware sufficiently advanced to support it. @ginge was then able to drop this code into the firmware, once low-level display support had been developed, and the combination of graphics primitives, fonts, and now image loading (once the various palletised PNG bit-depth formats had been accounted for) allowed for the working system app and even watchfaces seen here:
see @ginge's RebbleOS gallery for more / ongoing updates!
@NiVZ78 created the Simply Squares watchface depicted above, to which @ginge added colour, as a way for RebbleOS to show off its new capabilities. While we’re not yet able to dynamically load watchfaces (what’s pictured, while being a legitimate watchface, still had to be compiled into the firmware), extensive new API support means that the following app-enabling features are now available in Rebble OS:
- Graphics (drawing, lines, fill, etc)
- Bitmap layers
- Text layers
- Bitmap API
- Sub bitmap
- Text / Pebble fonts
@ginge’s focus has been on
Snowy, more commonly known by those not actively involved in firmware development as Pebble Time.
Snowy support has begun to extend beyond the basics, including the ability to access the external flash, enabling resources, fonts, and images to be utilized. The I2C interface to the Maxim
MAX14690EWX has been implemented, as has the ambient sensor, though it is currently unused due to experiments in dynamic dimming not having gone particularly well. Backlight has come on strong (then gradually faded!), however, as evidenced in this video.
Tintin, more commonly referred to as Pebble Classic or OG now has basic platform support as well, including support for its display, thanks to a number of contributions from @jwise - although the lack of flash support means no graphics. @jwise also did wonders with the
Makefile and build process, facilitating testing and contribution from others (there was a magical moment earlier this week when a new contributor posted a picture of the firmware running on actual hardware within a day of his first introduction into the community!).
The Road Ahead
As exciting as everything we’ve been able to demonstrate so far is, there’s still a lot to do! Power management for example - the hardware is currently running at full speed, resulting in battery life of around five hours - and that’s without all peripherals even having support yet. Other basics such as a viable Bluetooth stack are still all to do, although @XDjackieXD has begun investigating solutions. A casual list of remaining
TODOs can be found on the repo’s wiki. Embedded engineers, especially those with FreeRTOS experience, would be more than welcome to join our efforts if you’re interested!
Hopefully you found this detailed look at the state of Rebble firmware insightful and informative. If you have questions or would like to get involved, come and find us in the
#firmware channel on Discord!
News and Miscellany
- The fabulous folks at Fitbit have released updated versions of the Android and iOS Pebble apps which aim to free Pebble devices from existing tethers to cloud-based services; the most exciting part of this is added support for
pebble://custom-boot-config-url/CUSTOM_URL- essentially a direct gift to Rebble, allowing us to override and replace the official appstore when it goes offline (which we’d already made strides towards, but official support is especially appreciated! )
- Keep an eye on the Status page - while we originally intended for this to be a summary of how Pebble’s backend services’ availability would impact usage of our devices, we’re planning on expanding it to convey at-a-glance summaries of our own project and services’ status, as a way to provide updates between…Updates!
- Our good friends at Engineerable are offering members of the Rebble community $20 savings on any TimeDock order with discount code