Introduction
The I-BUS, or Integrated Bus, is a communication protocol used in BMW vehicles, including the E39 model, to facilitate interaction between various electronic control modules. It serves as a backbone for communication between the instrument cluster, on-board computer (OBC), and other body modules. The I-BUS helps in reducing the complexity of wiring by allowing multiple modules to communicate over a single bus line.
In the E39, the on-board computer is an integral part of the driver information system, providing data such as fuel consumption, range, average speed, temperature, and more. These features can be accessed and customized via the I-BUS communication, which is managed by the instrument cluster electronics (IKE). The customization of the OBC is often performed using specialized software tools like NCS Expert, which allows users to modify the display settings and activate hidden features.
Physical Layer
The physical layer of the I-BUS in BMW vehicles operates on a single-wire communication system. This wire typically carries a voltage level of 12V when idle and drops to 0V to represent a logical '0'. This open collector topology allows multiple devices to connect to the bus line without interfering with each other, as the bus is pulled high by a resistor and any device can pull it low to transmit data.
The wire color for the I-BUS is typically white with a yellow stripe, making it easily identifiable within the vehicle's wiring harness. This design ensures that the communication line is robust and can handle the multiple connections required for the various control modules in the vehicle.
Communication Parameters
The I-BUS communication protocol operates at a baud rate of 9600 bits per second, which is sufficient for the low-speed data exchange required by the vehicle's control modules. The protocol uses a standard 8-N-1 format, meaning eight data bits, no parity bit, and one stop bit for each byte of data transmitted.
Packet timing is crucial in the I-BUS protocol, as it ensures that data is transmitted and received accurately. Each packet consists of a start byte, data bytes, and a checksum byte. The timing between packets is managed by the IKE, which ensures that the bus is not overloaded with data and that each device has an opportunity to communicate.
Packet Structure
The structure of an I-BUS packet is straightforward yet efficient. Each packet begins with a start byte, followed by a source address byte, a length byte indicating the number of data bytes, the data bytes themselves, and finally, a checksum byte. The checksum is calculated as the sum of all bytes in the packet, excluding the start byte, and ensures data integrity.
For example, a packet from the instrument cluster (IKE) to the radio (BMBT) might look like this: 80 04 E7 24 01 00 20 38 3A 33 31 50 4D 73. Here, 80 is the source address (IKE), 04 is the length, E7 is the destination address (BMBT), and the remaining bytes represent the data and checksum.
Device ID Table
The I-BUS uses specific addresses for communication between devices. Below is a table of some common device IDs used in BMW E39:
| ID | Device |
|---|---|
| 0x80 | Instrument Cluster (IKE) |
| 0xE7 | Radio (BMBT) |
| 0xBF | General Module (GM) |
| 0x3B | Navigation System (GT) |
These IDs are used in the packet structure to direct messages to the correct destination module.
Collision Detection & Arbitration
Collision detection on the I-BUS is managed by the IKE, which acts as the bus master. In case of a collision, where two devices attempt to transmit simultaneously, the IKE ensures that the higher priority message is sent first. This priority is determined by the source address, with lower values having higher priority.
Arbitration is achieved by monitoring the bus line. If a device detects that the bus is low when it expects it to be high, it knows that another device with higher priority is transmitting, and it will back off and try again later.
Hardware Interfacing
Interfacing with the I-BUS typically involves using a microcontroller or a dedicated interface chip. Common components include the FTDI FT232RL for USB to serial conversion, allowing a computer to communicate with the I-BUS. Additionally, an open collector driver, such as the ULN2003A, can be used to interface the microcontroller with the I-BUS line.
These components are integrated into a circuit that connects to the vehicle's diagnostic port, enabling the reading and writing of I-BUS messages for analysis and modification.
Software Tools
Several software tools are available for analyzing and modifying I-BUS communications. NCS Expert is a popular choice for coding and customizing BMW modules. It allows users to read and write the coding data stored in the vehicle's control modules, enabling the activation of hidden features or the customization of existing ones.
Other tools include INPA for diagnostics and WinKFP for programming control modules. These tools work together to provide a comprehensive suite for managing the electronic systems within the BMW E39.
Practical Example
Let's consider a practical example of an I-BUS message used for the ignition key positions. The message 80 04 BF 11 03 29 represents the ignition key in position 2 (ON). Here, 80 is the source address (IKE), 04 is the length, BF is the destination address (GM), 11 is the data identifier for ignition status, 03 indicates the key position (ON), and 29 is the checksum.
This message is sent from the instrument cluster to the general module to inform it of the current ignition status, allowing the vehicle's systems to respond accordingly, such as powering on accessories or enabling engine systems.