Background:
The protocol
BMW uses a KKL system. The K line is a bi-directional serial bus with a 10.4kbaud data rate. L line is some sort of RTS/DTS line that wakes up the modules on older cars. As such the BMW is not dierctly compatible with RS232, either in baud or signalling levels, and could damage your PC's RS232 port if directly connected.
With the ignition on, the L Line is not needed, since the modules are already awake.
It's called the KKL since there are 2 K lines. One for the engine and Gearbox, the other for everything else.
The car
The car in this case is a 1999 and has both the 20 pin and 16 pin OBD diagnostics.
The pinouts
The 16 pin
4 GND
5 GND
7 K line (1)(D_TXD2)
8 K Line (2)(D_TXD1)
15 L Line (Not fitted)
16 12V
The 20 Pin
1 Engine rotation speed
2 OBD2 Diagnostic
7 Oil service and inspection reset
14 12V
15 L Line
16 IGN 12V
17 K line (2) (D_TXD2)
18 Programming line (PGSP) (not fitted)
19 GND
20 K line (1) (D_TXD1)
Which connector do you need?
If you want to talk to the engine and gearbox you only need the 12V, GND and K line found on the 16 pin connector. If you want the ABS, Airbag or anything else, you need the 12V, GND, and both K lines found on the round connector. Handily both K lines can be shorted to get a simple OBD2 K USB adaptor to work.
[For those of you with pin 7 & 8 fitted on your 16 pin OBDII socket, the pins can be shorted in your USB adaptor and you don't need the 20 pin connector. For those of you without pin 8 fitted, pin 25 on the socket X11175 (right instrument cluster connector) carries a White/Violet wire with D_TXD1 and you can add the additional wire to your OBDII port.]
The adaptors
I bought a £12 USB OBD2 adaptor (FTDI prolific based is mandatory and also common). [You don't want the CAN (CANBUS) version for this age of car, you want a KL or KKL version (pin 7 on the 16 pin socket will be populated).]
Since you will probably want the full suite of modules I N P A software offers, you need a £6 BMW to OBD2 adaptor. This has a wire inside that shorts pins 17 and 20, and connects them to 7.
Here you can see Power and GND (4, 5, 16) are populated and pin 7 (K) pin 15 (L).
So the USB adaptor does the conversion to OBD2 KL protocol. The 16 to 20 pin connects 17 and 20 together and feeds them into the OBD2 convertor.
The software.
EDIABAS=The communication layer to the car
INPA=Module interface
NCSExpert=Programming/flashingsoftware/USB support (?)
1) Create a system restore point and backup your registry.
2) Use the Worlds Most Resiliant torrent site to download INPA.iso. It is 326MB and the only file matching that word at the time of writing.
3) Extract the iso using winrar to a folder called INPA_CD. Place it on C:\.
Open the folder C:\INPA_CD\Programminstallation and run setup.
Click through all the options, install INPA, EDIBAS and NCSExpert as a minimum (I left the install options as default Full Installation). When prompted, tell it you are using OBD and tick the USB to Serial box. Make sure you keep the add desktop icons ticked.
4) Complete the installation and go to C:\EDIABAS\Hardware\OBD. Open USB-OBD.pdf and follow the instructions to change the latency timer from 16ms to 1ms. Force the USB/serial adaptor to COM1.
5) Run OBDSetup.exe. Do not close the DOS box yet. If it says "Warning, some values do not match, malfunction can occur" then the registry needs to be hand edited until those values match. It's DWORD values like buffer sizes and FIFO settings. Run OBDSetup again to verify all the warnings have gone away. Reboot if you have changed the registry.
6) [url=hXXp://vlaurie.com/computers2/Articles/environment.htm]Add the Environment variable[/url]C:\EDIABAS\BIN to your system.
7) Open the file OBD.ini from C:\EDIABAS\BIN add in the UBAT item manually. Check the Hardware=USB
Code: Select all
[OBD]
Port=Com1
Hardware=USB
RETRY=ON
UBAT=OFF
You have now installed the EDIBAS communication handler, configured all of it's FIFO settings, and installed the INPA "whitescreen" framework.
8) Now you need to install the guts of INPA.
Open C:\INPA_CD\Referenz\INSTALL and run Installprog.exe. Chose the English language and install BMW Group Rectification programs UK. Select Upgrade or prefereably Complete when possible. Complete and exit the installation program.
Now when you run INPA from the desktop icon you should see INPA and EDIABAS load, and along the bottom of INPA you can select your car and the modules therein.
9)Wah! It's not working?
If you get EDIABAS initialising errors you need to check the registry DWORDS above, and the USB/Serial latency timer.
If you get INPA IFH-0018 INITIALIZATION ERROR then check the com port.
Download a file called INPA_FAQ for detailed error code help.
Use Teraterm to open COM1 at 9600 baud to see if you can echo characters to prove you are connected to the car.