I got INPA working on my E46. The hardware side will not be EU E36 compatible for KOMBI, ABS, ASC. It lets me read fault codes, live engine statistics on a per cylinder basis and reset engine adaptations after repairs. Here's how I did it using cheap USB interfaces.
INPA speaks BMW's DS2 only. Basically DS2 is an extended command set.
BMW added alongside their fully featured DS2 system an OBD2 system on the 90's cars. Until then everything had worked on K and L line, TxD and RxD, using RTS/DTS to signal the adaptor. They then smeared in a 1 wire K line for bidirectional communications during the E36, completing with the E46 being fully K line only.
Think about it from the view of the module makers. E34/E36 were designed in the late 80's when RS232 was cutting edge. Tx and Rx data was kept separate and clocked slowly. As the 90's rolled on they could Tx and Rx on the same wire starting with the DME and EGS, and by the late 90's all modules had been redesigned to be K line only for the E39/E46.
They started with US E36 in 1996 for two modules DME and EGS adding TxD2 to the 20 pin and 16 pin connector.
EU Z3 and E36 compact added the OBD2 error code support after 1999ish.
The generic ODB2 system runs alongside the DS2 system on the same K line pins in either connector, and continues to do so to until at least 2008.
All modules continue to support DS2 messaging after OBD2 was forced upon them and still do today.
The E34/E36 needed a two wire serial link but at the 1996 E36 facelift some modules (DME, HVAC and others) got the DS2 port upgraded to a 1 wire K line that works with a VAGCOM lead.
From E46/E39 the RxD L line was redundant and all modules went to a single K line interface for DS2 and OBD2. TxD was repurposed to bidirectional duties. There are two K lines (TxD and TxD2). DME and EGS on one, everything else on the other.
Your 1994-2000 E36 from any country will need an ADS adaptor to access the KOMBI and ABS plus others. This device supports the old school RxD and TxD link fitted to those cars for those modules.
The latest cars (2007+) use K-CAN that runs at 100-500kbps and supports legacy 9600baud OBD2 for very bssic error code-only diagnostics. You will need a faster adaptor than the cheapo VAGCOM ones.
This guide is for the KKL cars E46/E39/X5/X3/Z4 etc.
The K line is a bi-directional serial bus with a 9.6kbaud data rate. L line is an Rx line needed by modules on older cars. It's redundant from E46/E39 onwards. As such any BMW (OBD1 or OBD2) is not dierctly compatible with RS232, either in baud or signalling levels, and could damage your PC's RS232 port if directly connected.
It's called the KKL since there are 2 K lines. Why two lines? Possibly for data rate, possibly to keep non-BMW garages from interfacing with anything other than the legal minimum DME and EGS.
The car in this case is a 1999 and has both the 20 pin and 16 pin OBD diagnostics.
The 16 pin
7 K line (1)(D_TXD2)
8 K Line (2)(D_TXD1)
15 L Line (Not fitted)
The 20 Pin
1 Engine rotation speed
2 OBD2 Diagnostic
7 Oil service and inspection reset
15 L Line
16 IGN 12V
17 K line (2) (D_TXD2)
18 Programming line (PGSP) (not fitted)
20 K line (1) (D_TXD1)
Your car may differ on the 16 pin connector if it is post 1999. Check it with a torch. If you don't have the 2nd K line on your pre 1999, you can tap into it behind the instrument cluster if you wish.
What is supported by which adaptors?
pre 1996 BMW all countries
Full ADS support only
1996+ E36/Z3 all countries;
Partial VAGCOM support
Reported succes with VAGCOM
DME Joylove Yes 1997 328i
ZKE Joylove Yes 1997 328i
PDC Joylove Yes 1997 328i
HVAC Joylove Yes 1997 328i
KOMBI Tonyday - No 1999 323i Joylove No 1997 328i
ABS/ASC Tonyday - No 1999 323i Joylove No 1997 328i IanS- Yes 1996 EVO
Cabrio module Can't remember
Airbag Can't remember Tonyday - Yes 1999 323i
RAD Joylove No CD43
OBC Never tried
EGS (Auto cars) Never tried
Full ADS support
E38/E39 pre 1999
Not sure if ADS or VAGCOM.
E38/E39/E46 1998 onwards
Full VAGCOM support
2007+ K-CAN cars
K-CAN 100kbps USB adaptor
Which connector do you need for your E39/E46 with the 16 and 20 pin socket?
If you want to talk to the engine and gearbox you only need the K line found on the 16 pin connector. If you want the ABS, Airbag or anything else, you need 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 (2004ish+), the pins can be shorted in your USB OBD2 adaptor and you don't need the 20 pin connector because you don't have the 20 pin socket. For those of you without pin 8 fitted you have an option; 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.]
OBD2.8 and OBD1.20 carry BMW's 1 wire DS2. OBD2.7 and OBD.17 carries the DME/EGS DS2 and gimped OBD2. You will not at any time speak OBD2 to the car.
Since you will probably want the full suite of modules INPA software offers, you need a BMW 16 pin to 20 pin adaptor. This has a wire inside that shorts pins 17 (K) and 20 (K), and connects them to 7 (L).
Here you can see Power and GND (4, 5, 16) are populated and pin 7 (K) pin 15 (L).
USB OBD2 adaptors contain the same thing. 1 Prolific PL2303 USB to RS232 chip, and one Melexis TH3122 k line transceiver.
To talk to your E39, E46 and later, all you need to do is connect the USB K line transceiver to all the data pins the car has.
You may not even need the L Line. But it works with KKL shorted.
For 1996+ E36 US models you can talk OBD2 to the DME and EGS.
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. If you are waiting for the USB adaptor from China, splash the extra ~£3 on the 16 to 20 pin. It's gonna be handy to have in your toolbox for the price of a Starbucks coffee. The USB/OBD2 appear to be available in blue nowadays.
Quoted again for the hard-of-reading.:facepalm:USB OBD2 is not VAG specific.
Your eBay USB OBD2 adaptor does not need to mention BMW in the title, or in the description
post 1999 EU cars (1996 US) support OBD2.
Note: Only Engine/Box/Emmisions ECUs must be OBD2 to comply with that law.
BMW 1998 on (E46/facelift E39) are fully OBD2 for all modules. Dunno about Pre 1998 E39, never checked cos I don't have one. Would be interested to hear from pre E39 owners about this.
EDIABAS=The communication layer to the car
NCSExpert=Programming of modules and CKM. Don't fiddle with this program without a guide.
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. If you have an old-school COM port on COM1 already then move it to COMsomethingelse.
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 Path.
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
Port=Com1 ; EDIT: You can use Com2, 3, 4
Hardware=USB ;EDIT You can also try OBD
;MODE=KBUS ;EDIT You can use a Resler interface with INPA
UBAT=OFF ;Battery simulator for USB adaptors
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. These are scripts that talk to the modules and are updatable.
Open C:\INPA_CD\Referenz\INSTALL and run Installprog.exe. Choose 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.
If you get communication errors, check ediabas.ini. Use Interface STD:OBD for USB. Use Interface ADS for ADS. More on ADS adaptors here. ADS adaptors must be on a real COM1, as DTR support is needed for KOMBI, ASC, ABS in the E36. IRQ11/Hex Address 3F38 needed for COM1 ADS.
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 CKM 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 clicking every button to see what happens. If it ain't broke don't fix it. You could end up with a car that won't start and needing a new £500 ECU.
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.
For EU E36 and 90% of US modules (except DME and EGS): Basically the software installation is the same.
Windows Registry Editor Version 5.00
For the hardware, certain modules need an ADS adaptor, and some don't based on the age of the module. In a nutshell, ADS adaptor is a two wire setup, RxD and TxD, instead of a one wire bidirectional jobby as above.
You need to select the options that allow you to use a different adaptor.
Set Interface = ADS to use COM1. You MUST use a proper hardware COM1, NOT USB RS232 adaptor.
Set Interface = STD:OBD and also in OBI.ini set Hardware=ADS then you can use USB-RS232-ADS adaptor.
For 2007+BMW you need K-CAN USB adaptor. It runs at 100kbps, not 9600bps VAGCOM cable cannot run at 100kbps. It is too old. I don't have this car to set up and test this adaptor.
ADS detailed in technical terms
How to use a Resler interface with INPA
What adaptor should I buy for INPA
INPA Idiots guide