BMW E81 · N47D20 · DDE7.0

A custom engine data display that lives in the dashboard.

ESP32 reads engine telemetry from the car, over OBD2 today and directly off the CAN bus tomorrow, and renders it on a flush-mounted TFT where the air-vent used to be. Fully open hardware, fully documented, built one version at a time.

DRAG TO ORBIT · SCROLL TO ZOOM · RIGHT-DRAG TO PAN

Why I built this

The pre-2008 BMW E-series dashboards show almost nothing about what the engine is actually doing. There's a coolant gauge and a fuel gauge. That's it. No boost, no oil temperature, no DPF soot load, no real-time RPM above the big analog needle.

I drive a 2007 E81 118d — N47 diesel, DDE7.0 ECU — and I wanted the same engine data a modern dash would give me, without ripping out factory trim. So I set out to build a small display that plugs in through the OBD2 port first, then moves onto the CAN bus directly, and eventually lives flush in the air-vent slot with OTA firmware updates.

This site documents every step of that project: the wiring, the PIDs, the sketches, and the hardware. The repository has the source, the docs, and the roadmap.

Current phases

Full roadmap

Version Description Status
v0.1 Fake animated data on 0.96" OLED Done
v0.2 Real OBD2 data via Bluetooth ELM327 on OLED Waiting on parts
v0.3 Full UI on 3.2" ILI9488 TFT with fake data Waiting on parts
v0.4 Real OBD2 data (Bluetooth ELM327) on ILI9488 TFT Pending
v1.0 Switch to direct CAN bus via MCP2515 Pending
v1.1 Hardwired install in car (CAN tap + fuse box power) Pending
v2.0 OTA firmware updates, companion app Future

Full roadmap with commentary →

Documentation