Note: Not to be confused with the iDrive, which is a BMW proprietary combination rotary controller and head unit (based around Windows CE) for managing in-car systems.

The BMW I-Bus is not a vehicle; rather, it is a 'bus' in the sense of an information transfer system. Put simply, it is a standard method of transporting control signals for cabin electronics around the body of an automobile. It is a proprietary scheme of BMW GmbH, although it is based on openly available standards and some of the specifics of it have been reverse engineered by enthusiasts.

Background
The most important piece of background technology for the I-Bus is the OBD-II standard. The I-Bus is based on a standard known as ISO-9141, which is part of the OBD-II scheme. For more information, see the OBD-II node; but in a nutshell, OBD-II is a data connection and network standard intended to facilitate the transmission of automotive engine and emissions-related metrics out of the running car onto electronic diagnostic and data collection devices. To that end, bus standards as well as message protocols were devised. BMW implemented OBD-II on its vehicles to comply with U.S. Department of Transportation regulations. They also implemented a proprietary complement - their own engine and vehicle control system bus, which they named the K-Bus. That allowed BMW engineers to utilize vehicle and engine control information without disturbing the legally protected OBD-II data. As cars became more complex, particularly in the level of their passenger electronics, BMW decided that it would be advantageous to have their in-car electronic systems talk over a bus rather than via direct wiring - potentially saving several direct wiring runs throughout the car body, and allowing them to standardize components across models.

Description
The I-Bus was originally intended to handle the needs of the radio, telephone and onboard navigation systems inside the car cabin. It was first available in the 1997 model year, and is now on every car BMW ships, including the popular Mini Cooper. The presence of the I-Bus is what allows BMW to put their navigation computers and, in fact, their stereo systems and amplifiers in the rear of their vehicles, leaving only a slightly-intelligent head unit in the cabin. This head unit does little more than turn control actions (button presses, knob turns, etc.) into I-Bus messages, and display I-Bus-encoded status information (radio channel, CD track names, etc.) on the MID, if available. This is why replacing the stock stereo in modern BMWs can be such a headache.

The I-Bus is based on the K-Bus protocols and hardware. It is, at its most physical, a single wire bus which is run to several points in the car. Various devices can be plugged into this wire, and signals put onto the wire are visible to all other devices plugged into it. Signal contention is the responsibility of each individual device. Bus speed is fairly pokey, at the geek-familiar 9600 bps 8E1 (8 data bits, Even parity, 1 stop bit) - which means the I-Bus is really limited to control data, and cannot be used to stream digital media or for any other such broadband application. The bus itself, as a single wire, is pulled high to +12V - the battery voltage of the car - and pulled low (ground) by the talking device. The wire used for the I-Bus is color-coded white/red/yellow.

The Message Format
The message format can be found, if one cares, at the following URL:

http://www.openbmw.org/bus/

...where many folks have contributed to this knowledge and are credited for their pains.

The Unholy Union
Of course, the wonderful thing about the I-Bus is that it can be used to do things that, well, BMW really didn't have any intention of doing. For one example, it is quite possible to stick a car computer in the back of a BMW runing, say, linux, and using a small Perl script to talk to the serial port (and a small adapter which one can find plans, kits or ready-made versions of on the net) one can configure the controls of those same BMW head units to run the controls of one's favorite linux MP3 player, rather than a CD changer. Rather than using BMW and Philips' slow-and-expensive navigation computer in the trunk, it's perfectly feasible to have that same linux machine use GPSDrive, or for additional functionality run a more full-featured Windows GPS route planning package using WINE - again, controlled using the same controls that BMW uses to run theirs, adapted through that Perl listener. Want to watch movies on that little navigation LCD? Sure. BMW will sell you a TV Tuner module for that Navigation LCD, although I'm not sure why you'd want it - but that tells us it's got a composite video input! Add a DVD changer to that input - or, better yet, just rip 'em to the Linux box, and run them straight out of mplayer or some other solution.

It's your car. Let it be all it can be.

Thank you, BMW, for the I-Bus.