BMW_E8x_EPS/gateway/rules.suggested.json
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

24 lines
951 B
JSON

{
"_comment": "First best-guess filter, built from files/PTCAN_protocol.md + the clean isolated-bus test on 2026-08-29 (gateway_20260829_164540.csv). Blocks IDs that are almost certainly irrelevant to EPS assist function: VIN, MFL buttons, diagnostics/ISO-TP, DME temps+fuel, cluster warning-lamp broadcast, and other modules' generic status heartbeats (not 0x4B0/0x1FB - those are the EPS's OWN transmissions, confirmed on the isolated bus, not something the car needs to send it). Everything else stays allowed until tested. See eps-comms/findings.md.",
"car_to_eps": {
"default_allow": true,
"overrides": {
"896": false,
"470": false,
"464": false,
"436": false,
"1152": false,
"1170": false,
"1175": false,
"1193": false,
"1408": false,
"1426": false,
"1449": false,
"1472": false
}
},
"eps_to_car": {
"default_allow": true,
"overrides": {}
}
}