My car speaks in hex. I built the thing that listens.
A small ESP32 board sits in the diagnostic port. It asks the car's control units for their data, decodes the answers and records everything on my phone over Wi‑Fi: gears, clutch temperatures, wheel speeds, steering, boost and more.
One real answer from the gearbox, recorded in 4th gear during a full-throttle pull.
The car's control units share a CAN bus. The diagnostic port gives access to it. The board asks one question at a time and turns each answer into a number with a name and a unit.
It only reads. The board sends standard diagnostic read requests and never writes anything to the car.
What the car told me
None of this is documented anywhere. Every value below was found by asking thousands of addresses, comparing the answers in different situations and checking them against physics.
Two clutches take turns
A dual-clutch gearbox drives the odd gears with one clutch and the even gears with the other. The gearbox reports both temperatures. In this run from a standstill to a full-throttle pull, the heat jumps from one clutch to the other with every shift.
The next gear is ready before the shift
While one clutch drives, the gearbox already engages the next gear on the other shaft. Its "next gear" value changes one to two seconds before the actual shift. Here, accelerating from 1st to 6th.
An ABS stop, wheel by wheel
Braking as hard as possible from 83 km/h. The ESC reports all four wheel speeds. At the hardest moment single wheels drop below the others: that is the ABS releasing them for a split second. Peak deceleration was 0.89 g.
Eight gears, measured
Engine speed divided by road speed, from two logged drives. The gearbox now reports the gear directly, and both agree in 99 % of the samples.
Speed at 1,000 rpm, km/h
18.2 km/h
213.6 km/h
319.7 km/h
426.5 km/h
533.1 km/h
640.0 km/h
749.2 km/h
861.5 km/h
The hard parts
Finding the data
No manual says where the gear or the wheel speeds live. I scanned 219,062 addresses across all control units, identified each unit by its part numbers, then repeated scans with the brake on and off, the lever in every position and every door open, until the bytes that changed told me what they meant.
Lost frames
Long answers arrive in up to 22 CAN frames, back to back. Now and then one got lost and the answer was broken. The board now asks each unit to leave a short gap between frames and throws away the rest of a broken answer.
Privacy
Diagnostic data contains the vehicle identification number, serial numbers and the tyre sensor IDs. Every download is cleaned before it is stored, so the logs can be shared without identifying the car.
The gearbox oil temperature
It isn't in the gearbox's main answer, where the gear and clutch temperatures are. A scan one minute after a cold start and another after a long drive found it in a second block: 12 °C cold, 41 °C after almost 40 minutes on a 7 °C day, while the engine oil had long reached 90 °C.
A shy gearbox
After some full-throttle runs the gearbox used to stop answering for the rest of the drive, while every other unit kept talking. On the latest 38-minute drive, full-throttle pulls included, it answered all the way through. I'm keeping an eye on it.
What's next
The first display is already in the car: a CANchecked screen with my own firmware shows oil, coolant, gearbox and clutch temperatures and boost. Next, the board becomes the hub of a small network: several ESP32 boards in the car share their values wirelessly, and each display picks what it needs.
Head-up displaygear, engine speed and boost in my line of sight
More on the cockpit displaytyre pressures, and engine torque once its scale is confirmed
GPS loggerposition and G-meter, logged together with the car data
Map displayoffline map with the driven line, for track days