Serial protocol byte order is little endian sync is always 0xAA direction byte bit 0 is set for write commands and clear for read commands to x5 bit 3 is set for packets to x5 and clear for from x5 Eg 0x80 request to x5 to read data 0x00 response from x5 with data 0x81 request to x5 to write data 0x01 response from x5 to write Commands 0xF000 - identify device * 0xF010 - Device name 0xF011 - Pair PIN 0xF012 - Firmware version 0xF013 - Personal info * 0xF014 - History * 0xF015 - MAC address * 0xF016 - DateTime * 0xF017 - Alarm 0xF018 - Notification X 0xF019 - Movement 0xFF01 - Service X 0x2A19 - Battery Level X 0x2A06 - Alarm Level * commands actually seen in use - others inferred from openvidonn GATT bluetooth software X no repsonse to read request Payload There is a minimum payload of one byte ? usually if there's some significant data you get unknown, length, 0xF5 at the start of the packet Checksum The checksum is the bitwise xor of all bytes of the payload 0xF000 - Device identification Sync Dir Cmd Payl Csum To x5: AA | 80 | 00 F0 | 00 | 00 Sync Dir Cmd ? Len Payl Csum Fr x5: AA | 00 | 00 F0 | 00 | 02 | 02 | 00 0xF013 - Reading Personal info Sync Dir Cmd Payl Csum To x5: AA | 80 | 13 F0 | 00 | 00 - Read Personal info Sync Dir Cmd ? Len Dl [ --- Payload --- ] Csum Fr x5: AA | 00 | 13 F0 | 5A 08 F5 AA 41 01 21 B8 0B | DF - Return of personal info 0xF013 - Writing Personal info Sync Dir Cmd ? Len Dl [ --- Payload --- ] Csum To x5: AA | 81 | 13 F0 | 5A 08 F5 AA 41 01 21 B8 0B | DF Sync Dir Cmd Payl Csum Fr x5: AA | 01 | 13 F0 | 00 01 | 01 - confirms message ok The payload: 170cm 65kg female 33 years 3000 step goal AA 41 01 21 B8 0B 0xF016 - Reading DateTime Sync Dir Cmd Payl Csum To x5: AA | 80 | 16 F0 | 00 | 00 - Read Date Time Sync Dir Cmd ? Len Dl [ --- Payload --- ] Csum Fr x5: AA | 00 | 16 F0 | 98 08 F5 00 00 00 00 2D 09 | 41 - Return of DateTime [time not set - clock is 2000-1-1 0:49:13 Note, with clock set we get Sync Dir Cmd ? Len Dl [ --- Payload --- ] Csum Fr x5: AA | 81 | 16 F0 | A4 08 F5 0F 07 00 0A 17 38 | 74 return of date and time Time is set 15-08-01 10:23:56 0xF016 - Writing DateTime Sync Dir Cmd ? Len Dl [ --- Payload --- ] Csum To x5: AA | 81 | 16 F0 | A4 08 F5 0F 07 00 0A 17 38 | 74 Sync Dir Cmd Payl Csum Fr x5: AA | 01 | 13 F0 | 00 01 | 01 - confirms message ok The payload: 0F 07 00 0A 17 38 yy mm-1 dd-1 hh mm ss 2015 08 01 10:23:56 0xF016 - Reading Alarms Looks like byte 1 is record number for alarm then there are 4 alarms byte 1 level byte 2 week (& with 0x80 for enabled) byte 3 hour byte 4 minus writing alarms is just the same 0xF014 - Read History Looks like byte 1 - index page = index & 0x0F (0..7) day = index >> 4 & 0x0F (0..6) byte 2+3 - date then from 0 to datalength data[i]=2 bytes if page <4 dayhistory else history page-4 endif next the data is steps and distance from 0hrs to 23hours 0xF019 Read Movement byte 1&2 - date byte 3 - hour byte 4 - mins byte 5 - secs byte 6,7,8,9 - steps byte 10,11,12,13 - steps*10 byte 14,15,16,17 - calories*100 the data is steps, distance and calories so on the unknown byte, it seems to change and needs to be write to set the time... AA 00 16 F0 98 08 F5 00 00 00 00 2D 09 41 response to time AA 00 16 F0 88 08 F5 00 00 00 00 31 0D 49 read time AA 00 13 F0 5A 08 F5 AA 41 01 21 B8 0B DF read info AA 81 16 F0 A4 08 F5 0F 07 00 0A 17 38 74 set time AA 81 13 F0 5A 08 F5 AA 41 01 21 B8 0B DF set info AA 00 15 F0 0E 0C F5 EF 78 1D 04 A5 78 1C 72 05 52 9D read mac AA 00 13 F0 5A 08 F5 AA 41 01 21 B8 0B DF read info AA 81 14 F0 88 11 F5 00 77 1B 00 00 00 00 00 00 00 00 00 00 00 00 00 write history AA 00 14 F0 48 11 F5 00 DE 1E 00 00 00 00 00 00 00 00 00 00 00 00 6C read hist AA 00 14 F0 BA 11 F5 01 DE 1E 00 00 00 00 29 00 94 01 58 06 94 00 E9 AA 00 14 F0 58 11 F5 02 DE 1E 8B 00 33 09 D0 03 93 01 00 00 3B 00 B5 AA 00 14 F0 60 11 F5 03 DE 1E D9 00 A1 00 3F 01 4A 00 00 00 00 00 4B AA 00 14 F0 50 11 F5 04 DE 1E 00 00 00 00 00 00 00 00 00 00 00 00 70 AA 00 14 F0 00 11 F5 05 DE 1E 00 00 00 00 23 00 53 01 C9 03 80 00 1A AA 00 14 F0 18 11 F5 06 DE 1E 7B 00 C6 05 76 02 E2 00 00 00 37 00 23 AA 00 14 F0 A0 11 F5 07 DE 1E C2 00 87 00 10 01 3D 00 00 00 00 00 EA AA 00 14 F0 88 11 F5 10 E0 1E 00 00 00 00 00 00 00 00 00 00 00 00 82 AA 00 14 F0 72 11 F5 11 E0 1E 00 00 00 00 00 00 00 00 04 00 00 00 7D AA 00 14 F0 8C 11 F5 12 E0 1E 00 00 00 00 00 00 00 00 00 00 00 00 84 AA 00 14 F0 8A 11 F5 13 E0 1E 00 00 00 00 00 00 00 00 00 00 00 00 83 AA 00 14 F0 88 11 F5 14 E0 1E 00 00 00 00 00 00 00 00 00 00 00 00 86 AA 00 14 F0 8A 11 F5 15 E0 1E 00 00 00 00 00 00 00 00 04 00 00 00 81 AA 00 14 F0 84 11 F5 16 E0 1E 00 00 00 00 00 00 00 00 00 00 00 00 88 AA 00 14 F0 8A 11 F5 17 E0 1E 00 00 00 00 00 00 00 00 00 00 00 00 87 AA 00 14 F0 88 11 F5 20 D9 1E 00 00 00 00 00 00 00 00 00 00 00 00 8B AA 00 14 F0 F6 11 F5 21 D9 1E 00 00 00 00 21 02 3F 01 90 01 1C 03 67 AA 00 14 F0 26 11 F5 22 D9 1E 1B 00 81 00 40 02 D8 01 82 02 18 02 BC AA 00 14 F0 74 11 F5 23 D9 1E 48 02 62 00 14 00 00 00 00 00 00 00 48 AA 00 14 F0 88 11 F5 24 D9 1E 00 00 00 00 00 00 00 00 00 00 00 00 8F AA 00 14 F0 5C 11 F5 25 D9 1E 00 00 00 00 DF 01 0F 01 65 01 AA 02 46 AA 00 14 F0 80 11 F5 26 D9 1E 1A 00 77 00 CB 01 B2 01 3B 02 C8 01 61 AA 00 14 F0 34 11 F5 27 D9 1E DC 01 4B 00 0E 00 00 00 00 00 00 00 A8 AA 00 14 F0 88 11 F5 30 DA 1E 00 00 00 00 00 00 00 00 00 00 00 00 98 AA 00 14 F0 4A 11 F5 31 DA 1E 00 00 00 00 00 00 24 01 62 02 89 01 96 AA 00 14 F0 30 11 F5 32 DA 1E 18 00 CB 00 5A 00 83 00 9C 01 CD 01 79 AA 00 14 F0 6C 11 F5 33 DA 1E 62 01 B5 00 58 00 05 00 00 00 00 00 F4 AA 00 14 F0 88 11 F5 34 DA 1E 00 00 00 00 00 00 00 00 00 00 00 00 9C AA 00 14 F0 B8 11 F5 35 DA 1E 00 00 00 00 00 00 0B 01 19 02 5D 01 E0 AA 00 14 F0 B6 11 F5 36 DA 1E 15 00 BC 00 4A 00 6F 00 6F 01 97 01 D4 AA 00 14 F0 5E 11 F5 37 DA 1E 44 01 9A 00 50 00 04 00 00 00 00 00 C2 AA 00 14 F0 C8 11 F5 40 DB 1E 00 00 00 00 00 00 00 00 00 00 00 00 A9 AA 00 14 F0 1C 11 F5 41 DB 1E 00 00 42 01 CE 04 1D 00 26 04 2B 02 E3 AA 00 14 F0 B6 11 F5 42 DB 1E AA 01 59 03 31 02 BE 01 9C 01 EA 00 DF AA 00 14 F0 72 11 F5 43 DB 1E 95 02 76 02 9A 00 2B 00 00 00 00 00 42 AA 00 14 F0 C8 11 F5 44 DB 1E 00 00 00 00 00 00 00 00 00 00 00 00 AD AA 00 14 F0 CE 11 F5 45 DB 1E 00 00 1E 01 25 03 1C 00 F0 02 DA 01 A6 AA 00 14 F0 88 11 F5 46 DB 1E 6B 01 78 02 65 01 7A 01 55 01 DC 00 68 AA 00 14 F0 16 11 F5 47 DB 1E 47 02 28 02 8C 00 25 00 00 00 00 00 B6 AA 00 14 F0 C8 11 F5 50 DC 1E 00 00 00 00 00 00 00 00 00 00 00 00 BE AA 00 14 F0 CA 11 F5 51 DC 1E 00 00 00 00 00 00 00 00 00 00 00 00 BD AA 00 14 F0 B4 11 F5 52 DC 1E 00 00 00 00 00 00 00 00 00 00 00 00 C0 AA 00 14 F0 FA 11 F5 53 DC 1E 49 00 61 00 FF 00 00 00 00 00 00 00 58 AA 00 14 F0 B0 11 F5 54 DC 1E 00 00 00 00 00 00 00 00 00 00 00 00 C2 AA 00 14 F0 B2 11 F5 55 DC 1E 00 00 00 00 00 00 00 00 00 00 00 00 C1 AA 00 14 F0 B4 11 F5 56 DC 1E 00 00 00 00 00 00 00 00 00 00 00 00 C4 AA 00 14 F0 E4 11 F5 57 DC 1E 3E 00 5A 00 D5 00 00 00 00 00 00 00 24 AA 00 14 F0 88 11 F5 60 DD 1E 00 00 00 00 00 00 00 00 00 00 00 00 CF AA 00 14 F0 16 11 F5 61 DD 1E 00 00 00 00 00 00 00 00 9A 00 FE 03 37 AA 00 14 F0 2C 11 F5 62 DD 1E 1A 05 79 01 7C 00 EF 00 EC 03 87 00 F5 AA 00 14 F0 64 11 F5 63 DD 1E 2D 02 0C 00 15 01 26 00 00 00 00 00 31 AA 00 14 F0 90 11 F5 64 DD 1E 00 00 00 00 00 00 00 00 00 00 00 00 D3 AA 00 14 F0 E0 11 F5 65 DD 1E 00 00 00 00 00 00 00 00 7B 00 F0 02 2B AA 00 14 F0 14 11 F5 66 DD 1E 1D 03 01 01 71 00 D5 00 65 03 7D 00 F4 AA 00 14 F0 B4 11 F5 67 DD 1E E7 01 0A 00 F3 00 24 00 00 00 00 00 CF read last data AA 00 16 F0 80 08 F5 0F 07 00 0A 2D 20 72 read time