Unlock the full potential of your BMW's communication network. This project provides a comprehensive solution for interfacing with the BMW I-Bus (Instrumentation Bus) and K-Bus (Body Bus) using microcontrollers like Arduino, ESP32, or STM32.
With this project, you can sniff bus traffic, read real-time sensor data, and send custom commands to control lights, windows, locks, and multimedia systems.
I will share more information about I/K Bus protocol and communication later. Stay tuned 😉.
You can also see my other car projects:
- Тhis project is for BMW with I/K bus system.
- Тhis project is for Cars with CAN Bus.
- Тhis project is for Cars with ISO9141 and ISO14230 protocols.
- Тhis is my OBD2 CAN Bus Communication Library for Arduino IDE.
- Тhis is my OBD2 K-Line Communication Library for Arduino IDE.
- Тhis project is for VAG Cars with KW1281 protocol.
Warning
I am not responsible for any issues or damages that may occur during your testing. Please proceed with caution and at your own risk.
The I/K-Bus is a single-wire, serial communication protocol used in classic BMW models (E38, E39, E46, E53, etc.). It operates at 9600 baud, 8E1 (Even Parity). This repository contains the source code and hardware schematics needed to bridge this automotive protocol with modern development boards.
- Real-time Sniffing: Monitor every message sent across the bus.
- Bi-directional Control: Not just reading; you can inject packets to control car modules.
- Multi-Platform Support: Tested on Arduino Nano, but compatible with ESP32, STM32, and Teensy.
- Hardware Flexibility: Includes schematics for Optocouplers, TH3122, and MCP2025.
This protocol applies to the bus system in the models listed below.
| Model | Series | Period | I-Bus | K-Bus |
|---|---|---|---|---|
| E31 | 8 Series | 1989 - 1999 | ✅ | |
| E38 | 7 Series | 1999 - 2001 | ✅ | ✅ |
| E39 | 5 Series | 1995 - 2004 | ✅ | ✅ |
| E46 | 3 Series | 1997 - 2006 | ✅ | |
| E52 | Z8 | 2000 - 2003 | ✅ | |
| E53 | X5 | 1999 - 2006 | ✅ | ✅ |
| E83 | X3 | 2003 - 2010 | ✅ | |
| E85 | Z4 | 2002 - 2008 | ✅ | |
| E87 | 1 series | 2004 - 2013 | ✅ |
There are several locations in a BMW E46 where you can tap into the K-Bus wiring. Below are common and practical connection points.
- CD Changer connector – Trunk
- Radio K-Bus wiring
- K-Bus junction block (above fuse box)
This is the easiest place to connect an Arduino or similar interface.
- Provides +12V, GND, and K-Bus in one connector
- CD Changer is optional, but the wiring is usually present
- Located in the trunk, driver’s side, behind trim
Connector: X18180 (BMW WDS)
K-Bus wire color: White / Red with Yellow dots
Ground wire color: Brown
12V wire color: Red/ Green
📷 Photos below:
The K-Bus line can also be accessed at the junction block located above the fuse box.
- Used as a central distribution point for the K-Bus
- K-Bus wire color: White / Red with Yellow dots
From this point, you can tap the K-Bus line. +12V and GND must be taken from another location.
📷 Photos below:
- Clone this repository or download the
.zipfile - Open the
.inofile with Arduino IDE - Select your board (e.g., Arduino Nano, ESP32)
- Set the correct COM port and upload the code
Interfacing a 5V/3.3V microcontroller with a 12V bus requires level shifting. I have provided three verified methods:
If you enjoy my projects and want to support me, you can do so through the links below:
For information, job offers, collaboration, sponsorship, or purchasing my devices, you can contact me via email.
📧 Email: [email protected]


