Hi,
I figured out two ways to make ADS interfaces work on modern machines:
1. USB Solution with EdiabasLib
EdiabasLib (Link) is a from scratch reimplementation for EDIABAS. I has a wrapper for the api32.dll, so it can simply be replaced. I have tested this with the a free-ADS interface, an RS232 to USB FTDI Serial adapter with INPA on an E36 cluster and it works as it should. It does not work on an E34 cluster however, use Solution #2 if your ecu does not work with this method either.
How to install:
- Click on the link and go to releases on the top, download the binaries zip
- Go into C:/EDIABAS/bin and create a backup of the api32.dll
- Go into the EdiabasLibConfigTool and copy the contents of the API32 folder into the bin folder
- Open the EdiasbasLib.config file
- Uncomment (Remove <!-- and -->) the first block
- Change the interface to <add key="Interface" value="ADS"/>
- Change <add key="AdsComPort" value="yourCOMPort"/> to whatever port your adapter uses
- Done!
The new dll does not use any of the default EDIABAS config files. To go back, simply rename the new api32.dll and use the old backup dll.
I have tested this with Tool32 and INPA successfully. I have tried to code it with NCSExpert 4.0.1 but it throws an error that the VIN is incorrect. I have found that for E36 clusters, I have to remove the CAN cluster from E36SGFAM.DAT to make it work. No idea why this is necessary, but I can recode the cluster successfully.
The disadvantage with this method is that while E36 clusters are accessible (which arent with OBD) I cannot connect to an E34 cluster with this method. I think this has to do with timing problems, the ADS driver is driving the pins directly (like an Arduino), which is why the DirectNT driver is necessary to allow this. So while some ecus dont seem to care, some others do.
Software Installation: EDIABAS 7.3.0 and INPA 5.06 on Win 10 64-Bit.
2. 64-Bit Solution
This solution still requires a real RS232 port, but it allows to use an ADS interface on a 64-Bit machine! I have recompiled the driver for 64-Bit to make this work, the original driver source was actually created in 1997 by the german computer magazine ct. The source code can still be found on the internet. I used a 64-Bit alternative called GiveIO to recompile a working 64-Bit kernel driver.
The original ads code is fixed to COM1 and a specific hardware address. Jarda has published a utility in a blog post (Link) to change them, which is often required on modern systems. The source and binaries (Release tab) for the 64 Bit driver are on GitHub: Link. I also included Jarda's utility in the download.
There is still a problem however: EDIABAS 7.3.0 does not support ADS. Older Ediabas versions like 6.4.3 do, but the included INPA version 3.01 does not run on 64-Bit systems. So you need to mix EDIABAS 6.4.3 with INPA 5.06. Another hurdle is that windows requires drivers to be signed, which you need certificates for. Since I dont have these, you will have to tell Windows to ignore it.
How to install:
- Install the old BMW toolset with EDIABAS 6.4.3 first. Make a copy (rename) of the EDIABAS installation folder and then delete the rest.
- Install the new BMW toolset with EDIABAS 7.3.0
- Delete the new EDIABAS folder and use the old EDIABAS version
- Click on the link and go to releases on the top, download the binaries zip
- Paste the DirectNT.sys driver in Windows/System32/drivers
- Open your RS232 port in the device manager and look under resouces. Note down the E/A region start, mine was EFC8 for example.
- Open Jarda's utility (included in the github download) and patch the ADS driver with the new E/A region (and COM port if you like)
- Tell Windows to ignore unsigned drivers: Open a cmd with admin privileges and enter bcdedit.exe /set nointegritychecks on
- Reboot. It should work now! You can open a cmd and type sc query directnt to see if its running. You should see the two black dots and be able to connect.
If somebody knows how to sign the driver please let me know. I dont have much experience with kernel driver programming, use at your own risk! The only known issue I have found is that INPA sometimes freezes when you tab out and in again, but I can live with it.
Last edited by 2JZ E36; 01-30-2022 at 01:27 PM.
You are correct, what I meant is that it tries to get the ZCS from every ECU on that list, even though you only chose one. I have experimented more with this and it doesnt seem to be related to the replaced dll at all. I have tried the new dll on an old XP installation with NCS 3.x and it works perfectly fine. So the error is only related to NCS 4.1, not the new dll. After I typed in the ZCS by hand in NCS 4.1 it works just like it should. This is only a problem on older C25 clusters (and probably older ECUs in general), on newer Can Bus clusters it works on 4.1. On the older cluster NCS 4.1 complains that the VIN is incorrect, so there seems to be some differences in how NCS 4.1 validates the VIN compared to NCS 3.x ...?
You can see how it tried to pull the ZCS from the EWS and CAN KMB unit, even though I selected the standard KMB only:
Last edited by 2JZ E36; 12-13-2019 at 11:32 AM.
Okay, I found a workaround: I removed the CAN Cluster from E36SGFAM.DAT and now the older clusters work too! The only small error that comes up now is that NCS throws an error after coding when the ecu resets that it cant connect (duh). But the coding works and sticks. So everything works now! USB ADS on Win10 64-Bit
That is pretty amazing.
For years I have tried different things, now I finally have an ultraportable MicroPC with serial port, and now there is a USB solution. Lol.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
Haven't tried on the car yet, but starting INPA, does not start Ediabas anymore. Is hat corretc?
And would this work with a usb-to-obd-to-20pin cabe?
Last edited by MParallel; 12-20-2019 at 04:11 PM.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
So what cable do you use if it’s not a serial ads cable?
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
I use an FTDI USB to RS232 cable to the free ADS Interface. With obd cable you mean the k line cables with an obd port right? I have tried a chinese one without success...
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
Using Gert’s ADS cable, switchable to OBD and service reset. Loaned from a friend.
Should read all modules in ADS mode, which it does on the native installed 32 bit OS, but running it in VM WinXP SP3 (because my other laptop is uefi64 and can’t install a native 32bit OS (or I don’t know, bios has a Legacy boot option, but doesn’t see my bootable usb/sd cars).
So on both, running Win XP in VM, ADS, two black dots in Inpa. Can read remote controle module, can read gauge cluster (both ads only) but on the DME or ZKE it can’t communicate.
So something with the serial port connection to the VM is acting funny.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
Haven’t had the time/opportunity to test it yet.
Still hope to get the original setup working though.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
If somebody else has gotten this working it might be useful to start a list with proven to be working setups/cables
Not tested yet. But still confused why you think my usb to obd to 20-pin wouldn’t work, but your usb to rs232 to 20-pin would. And then in config file you use ads not usb, which is the connector you start with?
I’m also wondering, I once bought a usb-to-20 pin Do It Auto, which they no longer sell. Advertized as ads compatible, which I doubted, but had to test. Also came with a modified ads32.dll. Well long story short: didn’t work, worse yet, not communicating with any module.
Would be funny if it would with this ediabaslib variant.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
The reason is works is because the RS232 USB cable has a driver that makes it seem like a normal serial port. To the program there is no difference if you use an RS232 cable or an actual serial port (for the most part). The reason why this doesnt work with the original .dll is because BMW adresses the serial chip directly (around the driver pretty much), which doesnt work because its actually USB. I suspect it wont work with an obd cable because it expects an RS232 interface, but you never know until you try it
If the creator of the tinyADS interface wanted to, he could put an RS232 to USB converter chip on his board. Then it would be a true USB interface without an adapter cable...
Edit: I have heard about the Do-it-Auto Interface, but it seems like you werent the only one having troubles with it...
Last edited by 2JZ E36; 01-12-2020 at 05:33 AM.
You mean the FTDI chip?
My usb to obd uses that chipset and drivers. So usb to obd (to 20 pin) should be no different than usb to rs232 to obd/20 pin.
But yes, just need to test all variations, including the USB lines of the config file.
Unless my tinyads will work with the true setup. Still a mystery why through a VM data seems to get lost or interrupted through the serial port.
Last edited by MParallel; 01-12-2020 at 02:18 PM.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
Still trying to understand this. I thought this new method was to make it work without an RS232 interface, as that is the main problem with ADS. But you say it still expects an RS232 interface. Unless I am misunderstanding you.
I finally received my ADS interface (OpenLab). So if I copy your ssetup, I will need a USB-to-RS232 adapter. Too funny as there is an RS232 port on the pc I am using (but can't connect to most modules, as I need a VM 32-bit OS. Can connect to some ADS only modules, but not for example, the DME, which is really weird). I have VM setup to directly access the host's serial port.
There are many different USB-to-serial interfaces. Not sure if they all come wit the FTDI chipset.
I did some quick testing with my USB-OBD-20pin interface. Editting the config files did give different reesults. With ADS set as the interface and com-port set to the one of the USB port, I did get two black dots in INPA, but could not connect with any module.
Maybe it doesn't work with all version of EDIABAS. I was testing with 6.4.7.
Last edited by MParallel; 01-26-2020 at 05:57 PM.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
It thinks it is talking to a real RS232 interface, when in reality it is talking to an adapter. I dont know if that explanation is actually accurate, but thats how I explain it to myself A real RS232 interface is NOT needed.
It doesnt mean that other chipsets dont work, I just used an FTDI chip and it works correctly.
Did you try the OpenLab ADS Interface? Or are you still missing the RS232 adapter?
Personally I dont really care if an adapter is needed as long as it works. My main problem was that I had to carry a superold heavy laptop around just for the serial port on it. Now I can just use my daily ultrabook for the ADS stuff.
hi there!
I've some quick questions for this setup...
so i built my own ADS interface about a 1.5 year ago, and it's working fine. i wondering, i'll like to convert this to USB because my laptop doesn't have a real serial port, just USB.
so what now? which cable do i need to convert serial to usb for my laptop?
i built this interface:
https://www.bimmerforums.com/forum/s...terface/page21
Post #508.
Thanks a lot!
@2JZ E36, Thanks for sharing this. Are you able to also share EDIABAS/INPA installer you used. My current installation files, doesn't seem to be working following your instruction. Also using Win10 64bit. Regards.
I have to get back to this project as I haven't had the time nor need for working ADS. But still would be cool.
I did put lots of time in getting my ADS working with an ADS interface AND native RS232 port, which works fine on my old big heavy laptop, but not on my Win10 64-bit host computer, with Win XP/Win7 32-bit guest OS. Serial port is configured correctly and I am able to acces two ADS-only module, but none of the others. I tried every baud speed and the other 10 million config settings, but none seem to work. I did notice in my EFI (bios) checking the port settings, it reverts back to Baud 11500 whereas normally 9600 is used. I wonder if under water it uses 11500 while 9600 is needed and this cause timing problems in the data transfering, that only two modules don't have a problem with.
Just sucks. Normally I would have simply ditched the 64-bit OS and just install a 32-bit OS, but the fact that the bios is of the (U)EFI variant, this prevents installing anything but 64-bit OS's. Even though it has a setting for legacy Bios in its config screens, setting it to this doesn't make it recognise any bootable 32-bit OS's.
Also after triple reading everything above, the whole USB interface doesn't make any sense. So it works with USB as tested by you (2JZ E36) but are still using an ADS interface, but with a USB-ADS adapter in between. That seems like it still needs the ADS hardware on the ADS side of the adapter.
If this Github setup works with USB, a direct USB-to-20 pin connector or USB-ODB -> OBD->20-pin connector cable should work too. You would think.
Now it sounds like a hybrid solution. You still need an actual ADS cable, but instead of using it directly on an RS232 port, it uses an USB port, with adapter cable in between.
1998 BMW M3 3.2 Cabrio Alpinweiί III on Schwarz German spec 1 of 12
SMG SRA PDC AUC OBC GSM HK UURS IHKA FGR MFL
IG: https://www.instagram.com/iflok/
Bookmarks