KWP-1281 K-Line trip computer for Arduino Uno with SH1107 OLED display (64×128 portrait).
Reads live sensor data and fault codes from VAG vehicles (Audi, Golf Mk4, Bora, Jetta, ~1998–2006) that use the K-Line OBD interface and the KWP-1281 protocol.
Pre-built firmware is available on the Releases page. See Getting Started for flashing instructions and how to build from source.
- Full KWP-1281 implementation: 5-baud GPIO init, block send/receive, ACK, keepalive, exit
- Supported baud rates: 1200, 2400, 4800, 9600, 10400
- Supported ECU addresses:
0x01Engine,0x03ABS Brakes,0x08Auto HVAC,0x17Instruments,0x19CAN Gateway,0x46Central Convenience (cockpit display with big font for0x01/0x17; others show raw group values) - Three KWP modes: ACK (keepalive only), group read, full sensor read
- 56-case sensor decode table (full VW/Audi KWP-1281 measurement type table)
- Read and clear DTC fault codes
- SH1107 64×128 OLED display (GME64128-02), portrait orientation — pixel-doubled cockpit font, text-only rendering with batch I2C transfers
Needed are (estimated total cost: 10€-15€ depending on deals from chinese sellers)
- Arduino Uno Rev3
- KKL409 Autodia K-Line KWP1281 Diagnostic cable
- 1,3" 64x128 vertical GME64128-02 SH1107 monochrome OLED display
- 5-way joystick button.
See Hardware Setup for the full pinout, OLED wiring, button configuration, and K-Line cable modification steps.
Guidance pictures of my specific K-Line cable modifications in case you are unsure about where to cut and how the RX and TX lines traverse the AutoDia409 OBD adapter:
See Operation for a quick reference, or Screen Reference for per-screen layouts and button actions.
See KWP-1281 Protocol for ECU addresses, measurement group mappings, and protocol details.
If you don't have a car available, OBDisplay-Emu turns an Arduino Mega into a KWP-1281 ECU for bench testing.
Use at your own risk. Wrong wiring can damage the ECU or create a fire hazard. This software only reads measurement groups and sends keepalive blocks — it does not write to or reprogram any ECU. The OBD port was designed for diagnostics only; increased workload on the ECU during driving is possible.
Do not use address 0x15 (airbag) to clear DTCs — on some affected ECUs this can deploy the airbag if an electrical fault is present in the airbag circuit.
Turn ignition ON (engine does not need to be running) before connecting.
See Development for project structure, build environments, build macros, binary debug logging, display rendering details, and CI/CD.
