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:
- The firmware is a simple zip file, with a JSON manifest, a resources file and the firmware file
- The current firmware seems to have been codnamed 'tintin'
- Looking at the strings in the firmware file, it appears that the third party bluetooth stack they use is the stonestreet 'BlueTopia' stack
- STM STM32 F2 Cortex M3 (we already knew it was Cortex M3, but not the specific model, I don't think).
- The running environment appears to be FreeRTOS.
- It looks like there are specific handlers for various message types. At a minimum are: email, facebook, SMS, and 'pebble beach'.
- It appears there is a maximum of 4 alarms you can set.
- 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",
- Alarm snooze options appear to be:10 minutes
1 hour, 15 minutes
1 hour, 30 minutes
- 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.
- 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
- There are LOTS of assertions - thats a good thing.
- Some cool ASCII art:^
/ / __/
- Looks like there may be some sort of App->Watch authentication: Authentication Version: %d.%"
- The code appears to be built with Eclipse
- Its built in UTF-8, which means future support for RTL and other languages.
- There are hints that it might support OBEX - which makes sense.
- 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.