Thursday, April 14, 2011

Make ADS interface work with PCMCIA-Serial adapters

PROBLEM: The ADS diagnostic interface for BMW cars is infamous for requiring a "real" serial port and not working with PCMCIA and USB adapters. Serial ports are quite rare on modern laptops.

ANALYSIS: The ADS interface uses a driver that bypasses Windows settings and targets the default hardware address of COM1 directly. Virtual serial ports have a different hardware address (or in case of USB an entirely different access mechanism) - therefore they don't work.

SOLUTION: A tool that patches the driver. Here you go: download AdsPort tool (requires .NET framework 2.0)



The tool will patch your ADS driver to target a different COM port address - this means that it can be used with standard PCMCIA adapters, but not USB adapters.

To see the hardware address of your virtual COM port:
- open the Device Manager window
- right-click on your virtual COM port device
- select Properties
- go to the Resources tab (if there is none, the device probably doesn't have a hardware address and you are out of luck)
- write down the first number from the I/O range (something like "03F8")


Please let me know if the tool works for you in the comments. I have only tested it on a couple of PCMCIA cards, a single notebook and INPA ...


EDIT:
user reports:

- works with INPA + E36 '93, E38 '99, E38 '00
- works with TOOL32 + E39 IKE

Labels: , , , ,

Tuesday, March 17, 2009

BMW E36 multi-function steering wheel retrofit

The leather on my old steering wheel looked really worn, so I started looking for a new wheel. New leather would be an option if the steering wheel looked better, but an old 4-spoke without the BMW badge is not something very aesthetic...



On the other hand, for some reason I don't really like 3-spoke wheels, which left me with a single option - a 4-spoke wheel from a newer E36.



I started searching on e-bay and several other auction sites and I found out, that e39 and e38 had a very similar steering wheel, except it had buttons. I began a long search for a DIY on retrofitting a multifunction steering wheel to an E36.



As it turns out, not many people attempted to do this. I found a Slovenian guy Vlakci at bimmerforums.com, who retrofitted the wheel to his E36, but he used a very different approach than what I was hoping for - he used an OEM head unit and cruise control from the E39 - these can communicate with the steering wheel almost without modification. This solution did not seem ideal, as my head unit is better than factory and a I spent about two months finding and retrofitting the cruise control - I decided to do it my own way.

The steering wheel was produced in 1995, which means that the buttons are not connected directly to the I-bus (which my E36 doesn't have at all), but the signal is first sent to an intermediate "MFL unit", where it is transcoded for the I-bus and for the cruise control unit. I was hoping that the communication between the buttons and the MFL unit was analogue, based on different buttons having different resistances, but I was wrong.

I had to disassemble the buttons and look inside. I found an electronic circuit with several basic components and a microcontroller labeled U-6050B. I spent some time googling and found out that it is a multiplexer made by Temic and that its purpose is to encode a status of up to 8 buttons and send it over a single line. I studied the spec.

http://www.datasheetcatalog.org/datasheet/Temic/mXyzurtr.pdf

According to the specification, there has to be a U-6052B demultiplexer on the other side of the line that reads the status of the buttons and controls relays - one for each button. This was a very positive information, because in E36, all communication between components (except for the diagnostic connector) is realized this way - nothing is digital, only different voltages on every line. Additionally, according to the spec, it is possible to connect two multiplexers in series and read up to 16 buttons - this is exactly how the steering wheel handles two rows of buttons.

Getting the demultiplexer U-6052B is not very easy these days - it's been discontinued some 15 years ago. I decided that I didn't really need the MFL unit which contains a pair of those demultiplexers. I downloaded Eagle, made a schema according to the specification and had a local guy print the circuit board for me.



One of my friends then helped me desolder the tiny demultiplexers from the MFL unit and solder them to my custom circuit board.



Then I soldered some additional resistors and capacitors and after three days of bug fixing, the circuit started working - whenever I press a button on the steering wheel, one of the outputs of the circuit board is connected to ground.







Next I had to deal with controlling the E36 cruise control. At first I thought it would be trivial, because the cruise control switch works by connecting different pins of the cruise control unit to ground, but as it turned out, it is the other way around - the CC switch needs to connect CC unit pins to +12V. How do you "convert" GND to +12V? The easiest solution would be to use relays, but I wanted something without moving parts. I read about transistors on Wikipedia and I found a way to use them instead of the relays.

http://www.rason.org/Projects/transwit/transwit.htm

Another complication was that one of the pins of the CC unit works differently - it needs to be under voltage at all times and interrupting this connection causes the CC unit to disengage. I experimented a little bit with two transistors in series, but then I decided to use the relay for this purpose, because I never use the CC switch to turn the cruise control off, so the relay will almost never be used and I don't care if it has moving parts or not. Plus my experiments with the transistors didn't work :D



Apart from the buttons, I had to deal with airbag and horn connectors and buy a new steering wheel switch holder, which is fortunately very cheap.







Currently, the wheel is in the car, it looks great, it feels good (although it is a little bigger than the previous one), the turn signals work, the horn works, the button lighting works (along with the interior lighting intensity regulator) and the right-side buttons work. I also use the bottom-right button for switching OBC functions, because I don't have the OBC-enabled turn signal switch.



The next step will be to use the left side buttons for controlling the head unit. My Clarion has a jack for "OEM steering wheel controls", but I cannot find any specification for this input. A company called PAC makes universal adapters and Clarion makes one itself, but they are both expensive. My best bet now is that the head unit is controlled by a resistance ladder between the two contacts on the jack - I will have to try and see. If you have any experience with this input, please let me know.

Labels: , , , , ,

Tuesday, January 6, 2009

BMW E36 coupe dashboard retrofit

I have spent a lot of time in the garage over Christmas, working on my car. The temperature in the garage was constantly less then 3°C, but otherwise it was very relaxing.

The point of me almost freezing to death was to upgrade the old half grey dashboard in my 3er to a better looking all black dash that BMW put in these cars after the facelift.





While having the dash off, I also decided it was a good time to rethink, rebuild and most importantly tidy up all the custom electronics that I have been working on over the last year. This includes the wires and crossovers of the front speakers, the alarm and my little black box that takes care of rolling up the windows upon locking the car.

The point of the black box is to intercept the communication between the alarm and the rest of the car and modify it or react to it. The most visible function is the automatic window roll-up upon locking. It also contains diodes needed to connect all door sensors to a single pin on the alarm, a relay that prevents the automatic locking of doors after starting and parts of other mechanisms that I have not yet fully implemented. Unfortunately, I forgot to take a picture of the inside of the box..



The new dashboard fits very well, there are no squeaking noises or similar. The glove compartment door will need a little fixing, though, it doesn't fit very well, probably due to bad mounting of the central panel next to it. I have also spilled some of the substance that I was using for cleaning over the dash as you can see on the picture, otherwise the dash is very clean and looks nice.

The next upgrade will probably be a new steering wheel and some black floor mats.







Labels: ,