Rebble

Pebbling after Fitbit: introducing the Rebble Web Services

Hey there! Katharine Berry here. As you may well have heard by now, Fitbit will be shutting down all Pebble services at the end of June of this year. After that, if nothing were to be done, then no services that require a Pebble server would work any more — which includes the appstore, weather, dictation, some parts of timeline, iOS SMS/email actions, the CloudPebble IDE, and more.

The observant among you might also notice that none of these things have been mentioned in a community update in over a year. Fortunately, we have the makings of a plan: the Rebble Web Services. In this post, we have a few things to cover. First, I’ll talk about what we plan to replace, and why that’s important. In there, I’ll talk about how we plan to do it. And somewhere around the end, I’ll talk about that little important detail that all of us in the Pebble community are so acutely aware of: how we’re going to fund it.

Of course, everything in here is our best estimate. We think we can achieve almost all of this in time for the Pebble server shutdown, but as is always the case, no battle plan seems to survive first contact with the enemy… We are a team of volunteers who are very excited to bring this to you, but all manner of real-life things can get in the way, and so potentially large parts of this post are subject to change.


What we’re replacing

The original Pebble services are a pretty large chunk of code! Some of your watch’s functionality is entirely between your phone and the watch, but a good portion of the Pebble experience lives in the cloud. The app store, for instance, runs entirely on Pebble’s servers – but you might not have known that some types of timeline notifications go through Pebble, and that the weather information that’s built into the watch comes from the Pebble servers, not from your phone’s weather source. So let’s get started with what’s going to change, and how it’ll impact you.

Apps and firmware

Impact: Users will have to switch to new Rebble Web Services manually.

You will continue to use Pebble’s latest Pebble mobile apps and Pebble firmware for the forseeable future. All of the Rebble Web Services will work with these; you’ll just have to create a Rebble account and tap a button to switch.

Accounts

Impact: Users will have to create a new Rebble account, but much of your Pebble account data will be preserved.

Once Fitbit shuts down the Pebble services, you won’t even be able to log in! We are going to replace your Pebble logins with brand new Rebble logins. Because nobody wants to have yet more accounts on the internet, we will back your Rebble login with a Google, Facebook, or similar login. Don’t worry if you happen to dislike one or another of those … the choice of which you’ll use to log in will be yours!

For KiezelPay users: once you switch to using a Rebble account, if you do not perform an import from your old Pebble account, you will have to re-claim your apps using the email address you originally used to purchase the app. This should only be necessary once, after which your apps should continue to work as they did before. You will not have to buy them again.

Appstore

Impact: Rebble users will automatically get the Rebble Store as a replacement.

As mentioned in previous community updates, work started on a Pebble Appstore replacement almost as soon as Pebble announced that it was ceasing operations. The Rebble Store should be ready to go by the time the original Pebble appstore shuts down, with all the original functionality. We might even be able to import the list of apps you have installed!

Timeline

Impact: Most apps will continue to have functioning Timeline pins, but some apps will need updates from the developers.

Even without Rebble, you could still expect to see your calendar entries on the timeline. With Rebble, it’s more complicated: you can expect more, but probably not everything.

Timeline functions as a web API, where other servers push timeline updates to Pebble servers, which then forward those updates to your watch. We can (and will) rebuild the servers that pass timeline updates along to your watch. We will also automatically alter apps that skipped the server and just pushed directly into your timeline (there were many) so that they hit our servers instead of Pebble’s. What we cannot do, however, is alter app developers’ servers so they hit us instead of Pebble. We will provide them with new endpoints to hit before the time comes, and hope that they get the memo to update.

Finally, Timeline updates will become slower. While Timeline is today sometimes able to update immediately when a service sends you a pin or notification, for technical reasons it is impossible for any entity other than Fitbit to provide that service. Using the Rebble timeline service, updates will instead occur every fifteen minutes.

Weather

Impact: Built-in weather functions will become an inexpensive, but paid, feature.

Pebble uses the weather in a couple of places: there’s the official weather app, and there are the sunrise and sunset pins in the Timeline. Today, Pebble fetches this information from The Weather Channel. We will replace this with information from another weather API. Unfortunately, these APIs cost us some money to access, so we will be providing weather access as part of a donation-based package (see below). If you choose to pay for it, that’ll enable full weather functionality, and help support the service for everyone. If you do not donate, the system weather app and timeline pins won’t appear – but all third-party watchfaces will continue displaying the weather without interruption for as long as the APIs they use continue to function.

Dictation

Impact: Dictation will become an inexpensive, but paid, feature.

Unfortunately, dictation is already broken when using iPhones running iOS 11+ with either a Pebble 2 or Pebble Time Round. As far as we know, there is nothing that we can do to fix this. For Android users, as well as iOS users with a Pebble Time or Pebble Time Steel, we will be replacing Pebble’s Nuance dictation with Google Cloud Speech. Unfortunately, just like weather, this will cost us some money each time you use it. So, in order to run this sustainably, this will also be a paid feature. If you decide that you don’t want dictation, everything else will continue to work, but your Pebble will display an error when you try to speak to it.

iOS SMS and e-mail replies/actions

Impact: SMS and e-mail replies and actions won’t work on iOS.

Pebble had agreements in place with several carriers and service providers in order to provide the ability to reply to text messages on iOS. Pebble also provided e-mail actions by requesting access to your e-mail account. Unfortunately, there is no way that we can reasonably provide this service: the privacy and security implications of having this access are greater than we are willing to tolerate. As such, we will not be providing either SMS or email action support for iOS.

CloudPebble

Impact: CloudPebble will be transitioning to Rebble Web Services, and will have the option to import your old CloudPebble projects – if you migrate them before the old Pebble servers shut down.

CloudPebble, Pebble’s online development environment, is unique among these services in that the original source code is available (and, in fact, I wrote it). We will be bringing up our own version of CloudPebble soon, and working with Fitbit to enable developers to migrate from the old Pebble version to our new version. Any projects not exported or migrated by the time Fitbit shuts down services will be lost forever, so it is important for developers who use CloudPebble to act soon. We will be running an initial, limited version of the Rebble services for these developers. It will continue to work with Pebble’s existing appstore, timeline, etc. but will support the Rebble CloudPebble, as well as using Rebble services for the CloudPebble Developer Connection.

Funding

Running these services will cost money – potentially, quite a lot of money. Beyond just the basic cost of running any old kind of web service (expensive, these days!), the dictation and weather services that we depend on each charge per request. We know the pain of having the services that run our beloved watches shut down, so we’d like to build a structure such that the Rebble Web Services are sustainable for quite a while to come. And to that end, we will be setting up a Patreon, so that the generous among you can donate to keep the services running. We want the basic Rebble experience to be free for everyone – so if you donate to help us defray the cost of running Rebble, we’ll enable some services that cost us some more.

For right now, we plan to have a couple of options. The first option, as I mentioned, is to pay nothing at all: if you don’t, you’ll still get access to your Rebble account, the app store, timeline, and CloudPebble. Alternatively, while the exact numbers are up in the air, we expect that for around two dollars per month not only will you be helping keep Rebble alive for everyone, but you will get everything that we can provide – weather, dictation, and the rest of the Rebble services keeping your beloved watch ticking.

A brief moment of Fitbit love

When we start talking about money, it’s easy to get angry at Fitbit. It can feel like they’re the ones responsible for taking away our watches, or for shutting the servers down. In reality, all of us on the Rebble team are very grateful for Fitbit’s support! They have been keeping the Pebble servers running even longer than they’d originally announced, and they’ve given us some needed extra time to come up with a solution for you. If Fitbit had not purchased Pebble, it’s likely that the Pebble servers would have shut down with no notice at all. And, if all that was not enough, the Fitbit team has been very cooperative in working with us to come up with a plan to transition your watch to our new Rebble Web Services – something they had no obligation to do at all, but that they’re doing because they love Pebble the same way that we do.

So for all those reasons, we’re thankful for the way Fitbit has handled this transition – and we hope that you will be, too!

tl;dr

We’ve talked a lot, in a lot of detail, in this post. If you want just a few things to take away, here you go:

  • We will be providing replacements for almost all Pebble services 🎉
  • Most things will work just fine when you switch to the Rebble servers
  • Timeline apps may require developer changes to remain functional
  • Timeline updates will be limited to every fifteen minutes
  • We will have a Patreon page for you to donate to keep the services running
  • We will require that you pledge around a couple of dollars a month for weather and dictation. All other services will remain free.
  • iOS SMS/email actions/replies will not be supported
  • Fitbit are our friends
  • All of this is subject to change

Whew! That just about covers it. We’ll have more updates for you as the months pass. Many of you have already offered your support in response to my tweet, and it is thanks to you all that we are undertaking this endeavour. See you soon!

Rebble Community Update 4: Love and Rockets!

Welcome to the first Rebble Community Update of 2018! :heart: :rocket: One of my most important roles in the Rebble project is Lead Emoji Sprinkler, which requires fastidious monitoring of the Rebble Discord to ensure that all comments indicating progress or good will are met with a swift :rocket: or :heart: respectively - and lately the emoji have been flowing liberally as the firmware team’s progress continues to :rocket: thanks to the prodigious output of new and old contributors alike. Daren’t delay divulging details of the downright deluge of development deeds! As always, if you’d like to add something, send us a tweet, or better still, submit a pull request! :bowtie:

Firmware

Contributing

Do you know how simple it is to build the firmware and run it in an emulator? If you’re a Pebble developer with all of the standard tools already in place, building and running the firmware in an emulator is as simple as:

This will launch QEMU and you’ll see something like this:

RebbleOS QEMU

which is the actual RebbleOS firmware running on your machine! :muscle:

Once you’re up and running with the firmware, you can be like @CTKRocks, @TerttyCurlyfries, @Stubenhocker1399 and @zbsz and work alongside @ginge and @jwise to flesh out the UI, system apps, and OS functionality. Contributing to an operating system might seem intimidating - but developers of all levels can make meaningful contributions to RebbleOS!

If you’re not a developer, you can help by testing and reporting issues, creating graphical assets, or assisting with documentation or the wiki. We’re feeling a lot of this out as we go as well, and we’re excited to have you come and learn alongside us. So don’t be shy – we’d love to have you come and join us, no matter who you are! :sparkling_heart:

Status

So, what’s new? Here’s some highlights:

Real, working watchfaces and watchapps

Previously, the watchfaces you saw were all baked into the firmware – everything had to be compiled in with the OS. We’ve added preliminary support for reading the Pebble filesystem, so you can see the apps that PebbleOS installed on the watch; and, to our surprise, some of them even run! We’re working on adding more features and more API compatibility every day! :soon:

Notifications, scrolling, and status bar

A big step towards making your watch look and feel like a watch! Thanks especially to @CTKRocks and @Stubenhocker1399 who have worked hard to get the UI looking beautiful. :sparkles:

Initial chalk (Pebble Time Round) support

RebbleOS was designed to support multiple different types of watches, and now chalk builds in the same tree as our beloved snowy. If you’re interested in getting RebbleOS working on tintin, we’d love to have your help, too! :family:

Rebble logo splash screen!

Rebble logo splash

Take a look at the closed PRs and commit history on GitHub for more detail… :sweat_smile:

Please note: this is alpha firmware and while all this stuff may look pretty cool, it’s not to the point where you’re going to be wearing it on your wrist daily yet! (for example, the battery won’t last that long until we take a serious look at power management!) :sweat_smile:

One fundamental challenge in working with the Pebble has been Bluetooth communication, which is critical to meaningful operation since most Pebble functionality requires the device to be able to talk to your phone. Firmware superhero @ginge has now overcome this challenge as demonstrated in this newly-released video of real notifications being sent to a RebbleOS-powered Pebble from a PC via Bluetooth! :heart_eyes: :rocket:

Breaking: an even newly-er released video of notifications being sent via Gadgetbridge! (friends of Rebble - check them out!)

OK but why?

I’m glad you asked - actually @jwise thought you might ask and I’ve paraphrased his thoughts and added some of my own:

It’s a fact that no new Pebble hardware is being produced, ever. It’s been over a year since Pebble closed its doors and as such there are a finite number of devices out there, and their ZEBRA connectors are going wonky, their cases are suddenly ingressing water, and their batteries are getting one charge closer to failure each day every 4-10 days. But while Pebble hardware may remain frozen in time, technology marches on. New versions of Android and iOS continue to be released, along with new hardware, and with every major release we all cringe and utter “will our Pebbles still work”? Well that’s part of why we’re building new apps, appstores and firmware - but another exciting reason for creating our own open-source, FreeRTOS-based OS is that it opens the door to other Pebble fans or even large smartwatch manufacturers in Shenzhen to build their own new hardware in the spirit of Pebble/Rebble! :sparkles:

And that’s pretty cool, don’t you think? :sunglasses: :cool:

News and Miscellany

Rebble Community Update 3

“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! :bowtie:

Firmware

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!):

Software

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:

@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)
  • Layers
  • Bitmap layers
  • Text layers
  • Bitmap API
  • Sub bitmap
  • Text / Pebble fonts

Hardware

@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! :bowtie: :heart:

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! :heart_eyes:)
  • 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! :sweat_smile:
  • Our good friends at Engineerable are offering members of the Rebble community $20 savings on any TimeDock order with discount code Rebble! :gift_heart:

Rebble Community Update 2

Welcome to the first Rebble Community Update of 2017! Please peruse our paraphrased prospectus of progress over the preceding period. If you’d like to add something, send us a tweet, or better still, submit a pull request! :bowtie:

It’s been over a month since our last update, though the lack of updates here belies the tremendous strides made across myriad projects! While our early efforts concentrated heavily on investigation and reverse engineering, often manifesting as wiki pages and rough proofs of concept, many projects are starting to mature into tangible, viable entities. The Rebble Store now has a live, functional front end, with the required back end to support it well underway. Firmware has moved beyond emulation and onto real hardware, with promising demos on both Pebble Time and Pebble Steel. Replacement graphics libraries and fonts are being scratch-built for inclusion in upcoming firmware. There have even been pics posted of what appears to be some kind of new Pebble-esque prototype! Details, source code links, videos, and more below… :rocket:

Appstore

Firmware

Mobile Apps

News and Miscellany

Rebble Community Update 1

A cordial hello, and welcome, to our inaugural Rebble Community Update! Herein lies a casual compendium of recent activity within the community. If you’d like to add something, send us a tweet, or better still, submit a pull request! :bowtie:

Not even two full weeks have passed since Pebble announced their closure, and already the community has made massive strides across all targets! Documentation has flourished, with over 100 total commits to the wiki. Scratch-built iOS and Android apps are underway, and the official iOS app has been successfully duped into loading the Rebble Store. Speaking of the Rebble Store, the front end has been largely completed, while efforts to marry it to back end functionality are underway. And apps themselves are free to roam thanks to MPUless firmware, while the firmware team also attacks from the other direction with scratch-built firmware and custom FreeRTOS capable of drawing to the Pebble Time’s display. Details and links to more information for these projects and more are included below.

wiki

Appstore

Firmware

Mobile Apps

News and Miscellany