Cloud, DevOps, Evangelism

Things I've Learned About Pebble

This is an ongoing blog post about things I've learned about the Pebble Watch by pulling apart the firmware.

EDIT:  Much of this information has been merged into the wiki here:


  1. The firmware is a simple zip file, with a JSON manifest, a resources file and the firmware file
  2. The current firmware seems to have been codnamed 'tintin'
  3. Looking at the strings in the firmware file, it appears that the third party bluetooth stack they use is the stonestreet 'BlueTopia' stack
  4. STM STM32 F2 Cortex M3 (we already knew it was Cortex M3, but not the specific model, I don't think).
  5. The running environment appears to be FreeRTOS.
  6. It looks like there are specific handlers for various message types.  At a minimum are: email, facebook, SMS, and 'pebble beach'.
  7. It appears there is a maximum of 4 alarms you can set.
  8. There are some funny debug log comments: "Seconds until alarm is crazy, got %d seconds" and "No one cleaned up after themselves before?", "Message is a command. Pebble don't take commands from nobody.", "WTF: This should never happen",
  9. Alarm snooze options appear to be:10 minutes
    20 minutes
    45 minutes
    1 hour
    1 hour, 15 minutes
    1 hour, 30 minutes
    2 hours
  10. It has an airplane mode thats not visible in settings (at least that I can find): "Airplane Mode"  EDIT: Its been found if you toggle bluetooth mode.
  11. There appears to be Mfg test code left in:Mfg Func Test Battery
    Mfg Func Test Black
    Mfg Func Test Buttons
    Mfg Func Test Version
  12. There are LOTS of assertions - thats a good thing.
  13. Some cool ASCII art:^
    / //o__o
    / / __/
    ______ /
  14. Looks like there may be some sort of App->Watch authentication: Authentication Version: %d.%"
  15. The code appears to be built with Eclipse
  16. Its built in UTF-8, which means future support for RTL and other languages.
  17. There are hints that it might support OBEX - which makes sense.
  18. There are references to text rendering commands, which should make life easier for watchface makers.

I haven't been able to figure out the format of the actual firmware BIN file yet, but its probably ARM specific, due to the Cortex.  Will have to do some FreeRTOS and ARM research.  Its 432KB

Same for the system resources file.  Haven't been able to pin down the format, but its 144KB.