- 19 September 2020
- 280
- 417
- E-Scooter
- Legend "Lite"
Reverse-Engineering-Ergebnisse an meinem Legend Lite.
Das Protokoll funktioniert wie github.com/teixeluis/escooter-lcd-esc-decode aber mit folgenden Unterschieden in der Nachricht:
Ein bisschen echte Kommunikation:
Kennt jemand ein kompatibles LCD mit mehr offenen Einstellungsmöglichkeiten? Dann könnte man mehr Bedeutungen herausfinden.
Das Protokoll funktioniert wie github.com/teixeluis/escooter-lcd-esc-decode aber mit folgenden Unterschieden in der Nachricht:
Code:
LCD -> ESC
==========
serial protocol
1200 baud, 5V level (idle high), 1 stopbit, 1 startbit (the usual "Arduino" style)
1/400ms frame frequency
LCD frames always 15bytes long
Offsets in frame and meaning:
00
always 0x01 (frame begin marker 1/2)
01
always 0x03 (frame begin marker 2/2)
the inter frame gap of over 200ms can be used to sync as well
02
packet counter/sequence number (used for cipher as key index)
+1 with every new frame, rolls over after 255
03
always 00 ?
04
always 0x0F = 15 ?
05
encrypted gear, 1 or 2 or 3 after decryption
TODO are higher gears supported? If yes => traceless gm
06
0x12 == 0b00010010 right now (only kick2start active)
0b----x--- enable strong acceleration
0b-----x-- enable cruise control
0b------x- require kick to start
07
always 00 ?
08
P9 setting, speed limit percentage (100 == full speed, 5 is minimum but motor doesnt turn at all then)
09
0b10000000 high beams off
0b10001000 high beams on
0b----x--- high beams
10
idle:
0x2A = 42
0x2B = 43
0x2C = 44
observed values seem randomly distributed
throttle pos? current?
full throttle:
0xAA = 170
0xB2 = 178
0xB3 = 179
half throttle:
0x62 = 98
0x63 = 99
0x4D = 77
throttle+brake:
turns the motor off ;-)
constant:
43 * x = 0.91V_thr => x=0.021
178 * x = 3.55V_thr => x=0.020
conclusion:
throttle pos sent again digitally
11
0b00000001 regen brake enabled
0b00001001 regen brake disabled
0b----x--- regen brake enable
12
always 0x58 ?
13
always 0x0A ?
14
XOR checksum
Ein bisschen echte Kommunikation:
Code:
#194
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Raw frame: 01 03 c2 00 0f 50 06 00 32 80 b3 00 58 0a ca
Gear:3; Ludicrous:0; Cruz:1; Kickstart:1; HiBeams:0; Regen:0
Limiter:50; Throttle:179
#195
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Raw frame: 01 03 c3 00 0f 75 06 00 32 80 b2 00 58 0a ef
Gear:3; Ludicrous:0; Cruz:1; Kickstart:1; HiBeams:0; Regen:0
Limiter:50; Throttle:178
#196
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Raw frame: 01 03 c4 00 0f 7e 06 00 32 80 b2 00 58 0a e3
Gear:3; Ludicrous:0; Cruz:1; Kickstart:1; HiBeams:0; Regen:0
Limiter:50; Throttle:178
#197
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Raw frame: 01 03 c5 00 0f 73 06 00 32 80 73 00 58 0a 2e
Gear:3; Ludicrous:0; Cruz:1; Kickstart:1; HiBeams:0; Regen:0
Limiter:50; Throttle:115
#198
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Raw frame: 01 03 c6 00 0f 74 06 00 32 80 2a 00 58 0a 73
Gear:3; Ludicrous:0; Cruz:1; Kickstart:1; HiBeams:0; Regen:0
Limiter:50; Throttle:42
#199
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Raw frame: 01 03 c7 00 0f 79 06 00 32 80 2b 00 58 0a 7e
Gear:3; Ludicrous:0; Cruz:1; Kickstart:1; HiBeams:0; Regen:0
Limiter:50; Throttle:43
#200
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Raw frame: 01 03 c8 00 0f 72 06 00 32 80 2b 00 58 0a 7a
Gear:3; Ludicrous:0; Cruz:1; Kickstart:1; HiBeams:0; Regen:0
Limiter:50; Throttle:43
Kennt jemand ein kompatibles LCD mit mehr offenen Einstellungsmöglichkeiten? Dann könnte man mehr Bedeutungen herausfinden.