BMW INPA/Ediabas 20pin to 16pin OBDii connector on E46 1999

This is a real customer review on INPA working on 1999 BMW  E46, who managed to read fault codes, live engine statistics on a per cylinder basis and reset engine adaptations after repairs, using cheap USB interfaces.

Below is all what he said in a BMW forum. share it here and wish this helps!
The protocol
BMW uses a KKL system on the 90’s cars. The latest cars use CANBUS. This guide is for the KKL cars. 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. This may not apply to some early E36 and ///M E36 cars, where older modules with low computing power appear to need the L line for Rx data.

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
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)

Your car may differ on the 16 pin connector. Check it with a torch. If you don’t have the 2nd K line, you can tap into it behind the instrument cluster if you wish.

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 adapter 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 adapter 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.]
Since you will probably want the full suite of modules INPA 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.

You can find these adaptors on eBay by searching for usb (kkl, 409.2, OBDII, OBD2) and bmw (OBD, OBD2, OBDII) (adapter, 20 16). Buy something that resembles the photos above. They appear to be available in blue nowadays.

The software.

EDIABAS=The communication layer to the car
INPA=Module interface
NCSExpert=Programming of KCM and other stuff. Don’t fiddle with this program.

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) Add the Environment variable 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


Copy the file OBD.ini from C:\EDIABAS\BIN to C:\Windows

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 (green icon by the clock), 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.

1) The S52 engine uses the MS 42.0 Engine ECU, which can be found in the E36 menu, by pressing Shift+F9. The E39 and E36 menu is in there too.

2) Don’t reset the engine adaptations while it’s running, so says BMW.

3) A replacement or used rain sensor needs to be reset (initilised) to the screen.

4) This program also installs NCS expert which can be used to code options, I will write a seperate entry on KCM when I get time.

5) I was flapping about not being able to talk to my engine ECU so I installed the USA group rectifications profile over the UK one. They appear to be the same

6) With this software you can do absolutley everything, including triggering airbags and firing the SRS. Get in read codes, clear them. Don’t go stomping around in your size tens. If it ain’t broke don’t fix it.

7) I would probably shy away from drastic re-coding using this system as the shielding on the interface looks a little light and data corruption is not something you want.

8) Some people have reported that installing old versions over new versions causes errors with scripts not being found. Follow the above guide to the letter and you will not need to install an old version over the new one.

Here are some pictures.

Some details are in German (like the above). Most are in English. The last entry there is Sporadic Fault for example.

Here is the registry entry. Put this into a file called serial.reg, right click and choose add to registry, after renaming your old one as serial_old.