Why this took so long to find
The internal bus on pre-2006 cars is well understood by a handful of people and documented almost nowhere. What exists is scattered: a message ID in one forum post, a transceiver pinout in a photo, firmware in a repository that last built in 2014.
Every table, schematic and line of code here was written and tested for this guide. Not a repackaged collection of files you can already find — that is the whole point of it existing.
What's inside
Reference material, not a walkthrough to read once.
- Device and message ID tables — the identifiers you need to decode traffic, for E36, E38, E39 and E46
- Hardware schematics — transceiver wiring with part numbers, levels and power, drawn rather than photographed
- Working firmware — Arduino and ESP32, MIT licensed, tested on a real car rather than on a bench alone
- Reading cluster data — step by step, including what the values actually mean
- Controlling the radio and injecting messages — with the timing constraints that are not obvious until they bite
- Retrofit walkthrough — the wiring and the order to do it in
- Troubleshooting — why your interface reads garbage, and the half-dozen causes that account for almost all of it
Written from a car, not a datasheet
Four things that separate this from what is already online.
Tested on hardware
The firmware runs. The schematics were built. Where something only works under a specific condition, that condition is stated.
Original throughout
Tables rewritten, schematics redrawn, code written for this guide. Nothing collected from elsewhere and repackaged.
Troubleshooting included
The section nobody writes and everybody needs. Garbage on the bus has a small number of causes and they are all in here.
Links out, not around
Where an external resource is genuinely the best source, it is cited and linked rather than copied.
What this is not
Not affiliated with, endorsed by or connected to any vehicle manufacturer. Not a repository of manufacturer documentation.
A word on your car: injecting messages onto a vehicle bus can affect how modules behave. Work on a stationary car, understand what a message does before sending it, and accept that modifying a vehicle is done at your own risk.
