The auto-detect picked /data/media/0/realdata/boot (boot logs, no rlog).
Now scans newest-first for a dir that actually contains an rlog/qlog,
skips 'boot', and inserts repo root into sys.path so it runs from any CWD.
The Seal EPS reports steering torque/prepare/activated state on
508 STEERING_TORQUE_ANGLE (different bit layout; driver torque factor
0.1), unlike the Han which uses 792 STEERING_TORQUE. The Seal's
fingerprint contains 508 but not 792, so alive-checking 792 tripped
canError ("Unknown Vehicle Variant") the moment the interface started.
- carstate: per-platform steering message selection (508 strict-checked
on Seal, 792 on Han; the other parsed opportunistically)
- carcontroller: don't send 792-layout camera feedback on the Seal;
stock 508 forwards unmodified for now (camera-feedback spoofing for
the Seal's 508 to be evaluated after a bus dump + road test)
- panda byd.h: rx check accepts 792 or 508 (first-seen-wins), torque
sampling handles both layouts, driver torque rescaled for 508's 0.1x
factor
- panda firmware rebuilt (panda_h7.bin.signed)
- tests: Seal(508) + Han(792) both verified canValid with correct
torque values; 120 safety tests + MISRA clean
BYD Seal reports steering torque on 508 STEERING_TORQUE_ANGLE while the
Han uses 792 STEERING_TORQUE, and PCM_BUTTONS bus assignment is harness
dependent. This tool prints bus/addr/len/rate tables (with key BYD
addresses flagged) from either the latest recorded route (safe, no
hardware) or a live panda sniff (manager stopped).
car_list.json is generated from the platform registry; the staging copy
was built before BYD existed, so the Vehicle panel's platform selector
had no BYD entries. Regenerated via platform_list.py (377 -> 379 cars).
Explicit parser frequencies made canValid=False when state-dependent
messages are absent (PCM_BUTTONS is event-driven; MPC_LKAS_CMD/ACC_CMD
only flow when stock ADAS is active), tripping EventName.canError.
- Alive-check only control-critical messages, at a conservative 10Hz
(1s timeout): ESC, BRAKE_APPLIED, PEDAL, STEER_MODULE, STEERING_TORQUE,
DRIVE_STATE, ACC_HUD_ADAS
- Parse-but-don't-alive-check (nan) the rest: STALKS, METER_CLUSTER,
MPC_LKAS_CMD, ACC_CMD
- PCM_BUTTONS is parsed on both pt and cam parsers (bus assignment is
harness dependent); MADS reads LKAS_ON_BTN from whichever bus sees it
Verified: canValid=True with idle stock ADAS, LKAS button events work
from either bus, canValid stays True throughout.
Copying the tree to a device with scp/file managers mangles symlinks
(car_list.json et al become text files containing the target path),
crashing the UI with JSONDecodeError. This script deploys via
'git archive HEAD | ssh tar -x', which preserves symlinks, verifies
them on-device, and keeps the previous install for rollback.