BMW_E8x_EPS/tools
Luca c32c4645b5 Reverse-engineer BMW E8x EPS for standalone operation
Tooling and findings for running an E8x/E9x electric power steering unit
outside its donor car, e.g. in an EV conversion.

Headline result: the EPS needs only two CAN messages plus a 12V enable
wire, not the 69-message set the car puts on the bus:
  0x130 CAS terminal status (100ms) brings the unit up
  0x1A0 DSC road speed (20ms) sets the assist level
Total required rate is 60 frames/s. Protocol write-up, including what is
proven vs. inferred and the open questions, is in eps-comms/.

Contents:
  adapters/   CANdapter (its SLCAN dialect differs) and generic SLCAN
  gateway/    car<->EPS relay, replay, message bench, EPS controller,
              4-tab Streamlit UI
  decoder/    PT-CAN frame decoding and live/replay sources
  can-io/     XIAO ESP32-S3 firmware: CAN IO board + USB-CAN bridge with
              a CAN-independent digital IO channel
  tools/      capture, bitrate scan, startup-order and session analysis,
              checksum solver
  captures/   reference working session + the replay set eps_control reads
2026-08-29 19:34:43 +02:00
..
analyze_bench_session.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
analyze_startup_order.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
extract_dio_timeline.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
gateway_log_to_capture.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
log_can.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
probe_adapter.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
raw_dump.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
read_can.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
scan_bitrate.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00
solve_checksum.py Reverse-engineer BMW E8x EPS for standalone operation 2026-08-29 19:34:43 +02:00