BMW Data Link Interface Project

Hardware Practice

The Basics
Hardware Theory
Hardware Practice
DS2 Protocol
ECU Addresses
DS2 Commands
ECU Responses
Fault Codes
BMW Scan-O-Matic
A nice interface offering from

There are several ways to interface a computer's serial port to the data link lines.  For each of these, you can purchase anything from a schematic and a few key parts (cheap) to a stuffed board (usually ~$70) to a full-blown turnkey solution (often $1000+).  Check the links page for a small sample.

Here's what I've found so far:

"Early-Carsoft style" -- Carsoft is a commercial diagnostic program, and their early interface had no intelligence -- meaning that the computer generated all of the signals, and the interface just passed them on.  It required two serial ports on your computer.  COM1 is used to send data on the L-line, and COM2 to send/receive on the K line.  The cable I purchased on eBay is like this, with a bunch of parts omitted.

"Modified Early-Carsoft style" -- Similar to above, but requires only one serial port.  The duties of the second port (basically just sending data to the L-line) are done by the DTR line on the first port.  Evidently folks have figured out how to control that line with code and send the appropriate on/off signals with it.  I'm sure for 5 baud this works well, unclear about 9600 baud L-line transmissions.  Several popular designs use the MAX232 chip.  Others use opto-isolators to keep PC and ECU seperate. 

"Late-Carsoft style" --  The airbag computer is notoriously difficult to communicate with (due to timing issues), and Windows is notoriously bad at allowing exact control of the COM ports.  So by version 3.7 or so, Carsoft had built a microprocessor and EEPROM into their interface cable, so it could do the exact talking to the various ECUs.  I'd also imagine this would cut down on piracy quite a bit, since building that cable is a lot harder than the old style.  It also talks to the programming line and the Inspection Reset pin (pin 7), providing additional capabilities.  And it only needs one serial port on your computer.

"ELM based" -- This refers to a number of interface designs based on the ELM323 chip from ELM electronics (  What's exciting about this is that the ELM chip contains a processor, so it can take care of some grunt work for you.  For example, it handles sending the 5-baud wake-up on the L-line, pings the ECU occasionally to keep the connection open, and adds the headers around the OBD-II messages for you.  This makes it easier to program in Windows because the critical timing of the communications to/from the ECU is taken care of by the chip.  (Windows doesn't allow accurate real-time control of the serial ports.)  And the chip costs around $10.  What's not to love?  Well, it's designed for OBD-II, so it can only send 7 bytes of data to the ECU and it communicates at 10400 baud (unverified), while BMW ECUs communicate at 9600.

"Bare-minimum" -- There are a number of interfaces, including one made up of a couple of transistors, which can be found on the internet.  Typically these only work with the K-line, don't have any isolation between PC and ECU, and are probably susceptible to noise and other problems.  But they work.

This site is not affiliated with BMW in any way.  As if you couldn't tell.