Introduction
The BMW I-BUS is a specialized communication protocol based on ISO 9141 and K-Bus, primarily used within BMW vehicles to manage multimedia and entertainment systems. It facilitates communication between components such as radios, CD players, navigation systems, and telephones. The I-BUS is notably employed in models like the E39 5-series, where it handles inputs from steering wheel controls to manage audio and phone functionalities.
This protocol is essential for integrating additional devices and ensuring seamless operation across various automotive systems. It operates independently of other critical vehicle systems, such as airbags or engine controls, focusing instead on enhancing the in-car user experience.
Physical Layer
The I-BUS utilizes a single-wire communication system, characterized by a white/red/yellow wire, which can be found at several connection points within the vehicle, including the CD changer and phone connectors. This wire is part of an open collector topology, where the bus is maintained at a high voltage level of +12V when idle, and is pulled low by the transmitting device to send data.
This setup is similar to RS232 signaling, where an interface IC is required to convert the bus signals into TTL digital signals for microcontroller interpretation. The open collector design ensures that multiple devices can share the bus without interference, as long as they adhere to the communication protocol.
Communication Parameters
Communication over the I-BUS is conducted at a baud rate of 9600 bps, utilizing 8 data bits, even parity, and 1 stop bit. These parameters are crucial for maintaining a reliable data exchange between devices, ensuring that messages are transmitted accurately and efficiently.
The protocol's reliance on specific timing and parity settings helps prevent data corruption and ensures that each byte is correctly interpreted by the receiving device. This is particularly important in automotive environments where electromagnetic interference can be significant.
Packet Structure
An I-BUS packet is composed of several key components: the source address, packet length, destination address, data bytes, and an XOR checksum. The source address identifies the sending device, while the destination address specifies the intended recipient.
The packet length excludes the source and length bytes, focusing solely on the data and checksum. The checksum is calculated by XORing all bytes in the packet, excluding the checksum itself, and is used by the receiver to verify data integrity.
Source ID | Length | Destination ID | Data | XOR ChecksumDevice ID Table
The following table lists the known device addresses for the BMW I-BUS, particularly for the E39 5-series:
| ID | Device Name |
|---|---|
| 0x00 | Broadcast |
| 0x18 | CDC CD-Player |
| 0x3B | NAV Navigation/Videomodule |
| 0x43 | MenuScreen |
| 0x50 | MFL Multi Functional Steering Wheel Buttons |
| 0x60 | PDC Park Distance Control |
| 0x68 | RAD Radio |
| 0x6A | DSP Digital Sound Processor |
| 0x80 | IKE Instrument Control Electronics |
| 0xBF | LCM Light Control Module |
| 0xC0 | MID Multi-Information Display Buttons |
| 0xC8 | TEL Telephone |
| 0xD0 | Navigation Location |
| 0xE7 | OBC TextBar |
| 0xED | Lights, Wipers, Seat Memory |
| 0xF0 | BMB Board Monitor Buttons |
| 0xFF | Broadcast |
Collision Detection & Arbitration
The I-BUS employs a simple method for collision detection and arbitration. The IKE (Instrument Control Electronics) is responsible for managing the bus and ensuring that messages are sent without interference. Devices monitor the bus and wait for it to be free before attempting to send a message.
If a collision occurs, where two devices attempt to transmit simultaneously, the IKE prioritizes messages based on predefined criteria, allowing higher-priority messages to be sent first. This ensures that critical messages are not delayed, maintaining the system's integrity.
Hardware Interfacing
Interfacing with the I-BUS can be achieved using various transceiver chips, such as the Melexis TH8080 or the Motorola MC33290. These components convert the I-BUS signals into RS232-compatible signals, allowing them to be processed by a microcontroller or computer.
For hobbyists, building a custom interface using discrete components like transistors and diodes is a viable option. This approach can be more cost-effective and customizable, though it requires a deeper understanding of electronic circuit design.
Software Tools
Several software tools are available for analyzing I-BUS communications. The I-Bus Analyser software allows users to view and interpret messages in real-time, providing a clear text representation of the data being transmitted.
These tools are essential for developers and hobbyists looking to decode I-BUS messages, develop custom interfaces, or troubleshoot existing systems. They offer functionalities such as live scanning, packet filtering, and message logging.
Practical Example
Consider a message sent to display "CD 7-04" on the Radio MID Display. The packet structure is as follows:
68 17 FF 23 C0 30 07 20 20 20 20 20 08 43 44 20 37 2D 30 34 20 20 20 20 45Breaking it down:
- 68: Source ID (Radio)
- 17: Length of the packet
- FF: Destination ID (Broadcast)
- 23 C0 30 07 20 20 20 20 20 08 43 44 20 37 2D 30 34 20 20 20 20: Data ("CD 7-04")
- 45: XOR Checksum
This example illustrates how specific commands are structured and transmitted over the I-BUS, enabling complex interactions between vehicle components.