Protocol

I suck at wiki formatting but here's the info. There is an implementation of the protocol in python available at Github.

Messages from the phone to the Pebble consist of two short ints and a payload of a number of bytes. The first short is the number of bytes, the second short is the "endpoint id". These represent different types of messages.

Responses from the Pebble to the phone follow the same format.

Format:

Offset Size Description

0x0

0x2

Number of bytes in payload

0x2

0x2

endpoint id

0x4

Number of bytes in payload (max 4k bytes)

The actual data. This varies depending on endpoint id.

Known endpoint IDs

Endpoint ID Name
1 FIRMWARE
11 TIME
16 VERSIONS
17 PHONE_VERSION
18 SYSTEM_MESSAGE
32 MUSIC_CONTROL
33 PHONE_CONTROL
2000 LOGS
2001 PING
2002 DRAW
2003 RESET
2004 APP/MFG
3000 NOTIFICATION
4000 RESOURCE
5000 SYS_REG
5001 FCT_REG
6000 APP_INSTALL_MANAGER
7000 RUNKEEPER
48879 PUT_BYTES
65535 MAX_ENDPOINT