Skip to content

Instantly share code, notes, and snippets.

@zerog2k
Last active July 11, 2020 11:17
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zerog2k/f830c5722c4686c327e2850406cb9377 to your computer and use it in GitHub Desktop.
Save zerog2k/f830c5722c4686c327e2850406cb9377 to your computer and use it in GitHub Desktop.
ID115 ble command set exploration
ID115
settings write on uuid 0x0af6 to device:
responses read on uuid 0x0af7 (notify?)
------
startup - scan:
> 0204
< Value: 0204f2fc581240a6
> Value: 0202
< Value: 02025b0a8f01076d6b050f06
bind:
> Value: 0401f10101010b01 (multiple)
< Value: 040100000000
> Value: 0204
< Value: 0204f2fc581240a6
> Value: 0202
< Value: 02025b0a8f01076d6b050f06
> Value: 063000000000 - (multiple)
< Value: 0630
> Value: 030300803801000c00 (multiple)
< Value: 0303
> Value: 0328aa03000000173b
< Value: 032800
> Value: 032b01
< Value: 032b
> Value: 03295517000700
< Value: 0329
> Value: 030200aa0000000000
< Value: 0302
> Value: 0201
< Value: 020129021b0100560100
> Value: 03110202014e020262f4
ack
> Value: 030201aa0000000000
ack
> Value: 0301e2070205121b1500
ack
> Value: 030202aa0000000000
ack
(af1, af2):
> Value: 08010100
< Value: 0801000000000000
> Value: 030203aa0000000000
ack
> Value: 0803010000
< Value: 08030110e207020500000f602200
< Value: 0803021000000000000000000000000000000000
> Value: 030204aa0000000000
> Value: 0803030f00000000000000000000000000000000
> Value: 0803040f00000000000000000000000000000000
some stuff...
...
(af6, af7):
> Value: 02a0 (multiple)
< Value: 02a00000000000000000000000000000000005
(af1, af2):
> Value: 080200
ack
...
-------
af6: Value: 030300102700000800 - step target 10000, sleep target 8:00
af6: Value: 030300803801000c00 - steps: 80000(0x13880), sleep 12h
[UUID: Unknown (0x0af6)]: Value: 0320090014000f00f500
Value: 0320090014000f00f400 - sedentary alert off
Value: 0320090014000f004100 - sed alert on, 900 am - 800p, sat
Value: 0320090014000f006100 - sed alert on, 900 am - 800p, fri, sat
Value: 0320090014000f00ff00 - "" 7 days
Value: 0320090014000f000100 - "" 0 days
Value: 0320090014000f000000 - "" off
Value: 0320090014000f00ff00 - 7 days, on
Value: 0320090014000f00fe00 - 7days, off
Value: 0201, Value: 020129021b0100590100
after app idle, open up:
> af6: Value: 02a0
< af7: Value: 02a00000000000000000000000000f00000005
> af6: Value: 0201
< af7: Value: 020129021b0100590100
> af6: Value: 0201
< af7: Value: 020129021b0100590100
open camera:
> af6: Value: 060200000000
< af7: Value: 0602
< af7: Value: 070106000000 - cam button press (same each time)
...
> Value: 0201
< Value: 020129021b0100580100
exit camera:
> Value: 060201000000
< Value: 0602
"lift wrist bright screen"
off
> Value: 03285503000000173b
< Value: 032800
on:
> Value: 0328aa03000000173b
< Value: 032800
off:
> Value: 03285503000000173b
on:
> Value: 0328aa03000000173b
in the example,
0328aa03000000173b format is:
cccceesssshhmmhhmm
cccc = command
ee = enabled (aa: on, 55: off)
ssss = seconds for screen to stay active, LSB (e.g. 0500 = 5 seconds)
hhmm = active times start and stop (where hh and mm are hex value)
language:
> Value: 03110202014e02026242 - follow system
< 0311
> Value: 03110202014e02026200 - english
> Value: 03110202014e01026200 - chinese
> Value: 03110202014e02026242 - follow system
display:
> Value: 032b01 - landscape
< Value: 032b
> Value: 032b02 - vertical
find my phone:
> Value: 0326aa000000 - on
> Value: 032655000000 - off
.. later when find my phone is pressed on watch,
< value: 0702000f
antilost alert?
> Value: 032103 - on ? (multiple tx)
> Value: 032100 - off
dnd:
> Value: 0329aa17000700 - on, start 1100p, finish 0700am
> Value: 03295517000700 - off
------
reboot: (tx: af1, rx: af2)
> af1: Value: 08010100
< af2: Value: 0801000000000000
> Value: 0803010000 - dump something?
< Value: 08030110e207020500000f602200
< Value: 080302100000000000000000000000000f000000
< Value: 0803030f00000000000000000000000000000000
< Value: 0803040f00000000000000000000000000000000
< Value: 0803050f00000000000000000000000000000000
< Value: 0803060f00000000000000000000000000000000
... (continues til 220 ?)
< Value: 0803220f00000000000000000000000000000000
< Value: 08ee00000000
> Value: 080302 (crc?)
< Value: 08ee00000000
> Value: 080302
< Value: 080302000000
(delay - rebooted?)
> Value: 0804010000
< Value: 0804011000000000000000000002
< Value: 0804021000000000000000000804
< Value: 08ee02000000
> Value: 080402
< Value: 080402000000
> Value: 080200
< Value: 0802
>af6: Value: f001
<af7: Value: f001
------
0201 - get status?
Value: 020129021b0100580100
id115
data synced at 18/02/05, PM 05:18
fw ver: v27 (0x1b)
app v: 2.3.0
remain batt = 88% (0x58)
format: ccccxxxxvvyyggbbzz
cccc: command
xxxx: unknown (2902 is notify uuid, not sure if coincidence?)
vv: fw ver
yy: ?
gg: charge status (01 usb charging)
bb: battery percentage remaining
zz: ?
----
0204 - get bt mac addr
-----
playing around:
> 02a0 (query counters?)
< Value: 02a025000000020000001c0000001100000005
rpt
> Value: 02a025000000020000001c0000001100000005
> Value: 02a025000000020000001c0000001100000005
Value: 02a039000000020000001c0000001a00000005
shaking 10x
Value: 02a025000000020000001c0000001e00000005
shaking 10x
Value: 02a025000000020000001c0000002800000005
(0x28 - 0x1e = 10 dec)
-------
(during pair)
(time/date set):
> af6: Value: 0301e207020512343000
Arrival Time: Feb 5, 2018 18:52:48.165858000 CST
2018 = 0x07e2
18 = 0x12, 52 = 0x34, 48 = 0x30
-------
alarm set:
> Value: 0302015500071eff03 - 1, (every day, 0730am: 0x07 0x1e) on
ack
> Value: 0201
< Value: 020129021b0100560100
> Value: 0302015500071efe03 - 1, off
> Value: 0302015501071efe03 - 1, changed alert type from 1 -> 2
> Value: 0302015501071ed403 - 1, changed to every other day
> Value: 0302015501071ef403
> Value: 0302015501071e8003 - only sunday
> Value: 03020255000809ff03 - 2, 0809am, type 0, enabled, everyday
> Value: 03020255020809bf03 - 2: type 3 (exercise), no saturday
> Value: 03020255020809ef03 - 2: no thurs
> Value: 030202550208097f03 - "" no sun
> Value: 03020255020809fd03 - "" no mon
-------
change units:
> Value: 03110101014e0202629e - metric
> Value: 03110202024e0202629e - imperial
> Value: 03110202024e020262b4 - m -> f
f->m
> Value: 0310bca02800b8070101
> Value: 03110202024e020262fc
m->f
> Value: 03246087a0000000287cf6
> Value: 0310bca02801b8070101
> Value: 03110202024e02026201
> Value: 0310bca02801b8070203 - height cm, weight (kg/100), gender, birthday (yyyy,mm/dd)
> Value: 0310bc102701b8070203 -
> 2106 (repeatedly, dump out diagnostic)
Value: 210655534e3a4646464646464646000000000000
Value: 2106aac007000000000000000000000000000000
Value: 21065571643d302c63713d300000000000000000
Value: 210655736a3d302c676a3d302c64783d31000000
-----------------
activity counters:
steps = 191 (0xbf)
miles = 0.09 = 144.841 m (0x94 = 148m = 0.0919629 mi)
fire = 12 (0x0c)
move time = 2min ? (120 = 0x78)
02a0bf0000000c000000940000007800000005
02a0 bf000000 0c000000 94000000 78000000 05
steps fires? meters move sec ??
time/date query:
0203 e007 01 01 00 06 38 04
2016 01 01, 00:07
some queries from 0201-0206
----------------
05xx commands - notification to device
0CMD uu vv aa bb cccccccc...
0501 0001
CMD = 501
uu = 00 buzzer off
uu = 01 buzzer on
(uu wrong!!)
vv = 00 handset icon center
vv = 01, phone icon left, with text
aa = char pos start
bb = char pos stop
cc... = ascii message
0501010100000000000000000000000000000000
0501 0101 0000 0000 0000 0000 0000 0000 0000 0000
050101010132333435363738 - left tel sym, scrolling numbers (4567...)
050100000132333435363738 - center tel sym
050101010102033435363738 - left tel, sym, (45)
050101010104003435363738 - lef tel sym, (4567)
050101010109003435363738395152535455 - 456789QRS (no scroll)
050102010109003435363738395152535455 - " no diff?
050100010109003435363738395152535455 - ?
050100020109003435363738395152535455 - phone icon center
0501 0001 01 0900 34353637383951525354555600
05010001010f0034353637383951525354555600 - diplay, with buzz
0501 01 01 01 0f 00 34353637383951525354555600 - display, buzzing
0501 00 01 01 0f 00 34353637383951525354555600 - display buzz
0501 00 01 00 0f 00 34353637383951525354555600 - display buzz
0501 00 01 01 05 00 34353637383951525354555600 - display, buzz, 5 chars
0501 00 01 00 05 00 34353637383951525354555600 - 4, 5, 6, 7
0501 00 01 00 05 3334353637383951525354555600
05010201010f0034353637383951525354555600 - nothing
05010100010f0034353637383951525354555600 - no display
05010000010f0034353637383951525354555600 - handset icon, center, buzzing
05010100010f0034353637383951525354555600 - no display ?
0501 00 00 11 0F 353637383951525354555600 - handset icon, center, buzzing
0501 00 01 01 02 03 353637383951525354555600 - left icon, buzz, no text
-----
502 command ??
maybe cancel 0501 notification ?
-------------------
message notification:
0503 00 01 01 00 00 09 313233343536373839
0cmd aa bb cc dd ee ff ggggggggggggggg...
0503 = command
aa = msg id?
bb = msg enable?
cc = msg type (icon?), {1, 3, 4, 6, 7, 8, 9, a, b } (!! DO NOT EXCEED b - will cause reset)
dd = post-string space length for scrolling
ee = startpos
ff = endpos (max: 0xA)
gg... = char string (max 12 chars)
0503 00 01 01 00 00 09 31323334353637383940
0503 00 01 01 00 00 05 33343536373839404142
-----
mysteries:
> 0401 ?
> 0402 ?
> 0101 reboots into some OTA mode
@MoopMoop
Copy link

As you mentioned above, 02 a0 queries counters. The format of the response is:

02 a0 AA AA AA AA BB BB BB BB CC CC CC CC DD DD DD DD EE
AA AA AA AA = stepcounter
BB BB BB BB = kcal counter
CC CC CC CC = distance
DD DD DD DD = active time (in seconds)
EE = current heart rate

EE works only if you are in HR monitor mode or during an exercise. Otherwise it is always 00.

@dalepsmith
Copy link

dalepsmith commented Jul 11, 2020

For the TIme Set
af6: Value: 0301e207020512343000

That last byte is the Weekday. 0..6 is Mon..Sun

Thank you, I can now set the time on my ID115Plus HR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment