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
(www.elmelectronics.com). 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