There seems to be a lot of understandable confusion regarding what is what with ADS, OBDI, OBDII, E-OBD etc.
OBD is a set of standards rather than a connector type. The standards did not just change from one to the other over the years, some BMW's can have a little of each depending on when they were made. The whole setup centers around two types of data lines called the K-line and L-line (communication wires). A L line is used to "wake up" an ECU and it is then spoken to on the K line. an L line is uni directional and a K line is Bi directiional, so everything can also be done on a K line alone. Some have one K line and one L line, later OBD has two K lines and one L line even later they had two k lines and no L line. My Merc has multiplexed k lines (lots into one) and one L line. So yes it's frikken confusing and you need to work out what your car has.
there are also diferent protocols (languages) used like ADS or KWP-2000 etc
Pre 95 BMW's have either a 16 pin or 20 pin connector and use a proprietary interface called ADS
Post 95 BMW's have either a 20 pin connector OR a flat 16 pin connector OR Both with one under the dash and one in the engine bay, they use the OBD protocol ISO 9141.1 or ISO 9141.2 spec or some can use ADS as well
Later post 2000 came the E-OBD standard which still uses the 16 pin flat connector under the dash.
Now to make it more complicated some BMW software will not talk to a standard (generic) KL-interface because it looks for two signals. one that the battery power is there and the other that the ignition is switched on, so these are the mods that the guys do.
To take it further the BMW software is designed to communicate via a 16550 UART (Serial port chip) using the RS232 standard and many USB converters do not emulate a 16550 UART properly so the BMW software may or may not recognise these properly.
This is the exact reason that the dealers did not use USB interfaces and continued using RS232. If you are programming your car via USB and the translation software is not perfectly written you can "brick" your ecu. if USB works 100 times perfectly, you will brick your ecu the 101th time. RS232 and a 16550 UART is hardware and not software and it's safer end of story.
A while back I developed a PROPPER interface for OBDII and BMW using the correct MAX232 IC , two properly intefaced K lines and an L line and an ignition and battery signal with the correctly buffered translation voltage levels to provide the correct type of communications and offered it on the forum. I withdrew my offer after some guys claimed the Chinese junk was better.
Anyhoo
The easy way out of this is:
Pre 95 just go buy buy an ADS interface with a 16 or 20 pin depending on what YOUR car has fitted. It will work
Post 95 Just Buy an OBDII interface with a 16 pin flat connector and an extra 20 pin connector adapter. one or the other will work after some mods
I don't know how to say this any other way, but your BMW is not a bloody Ipod you can just plug into a PC. If you plan to do DIY diagnostics correctly and safely start Googling and understanding what you are messing with first and only then will you have a statisfactory experience.
These are proprietary technologies that were never developed for the consumer but rather technicians and it takes a shitload of reading before one get's the hang of it. But if you do get it all working you earn the right to feel very proud of your cleverness.