CANBus & BMW diagnostics

While I wait for the car I’ve started sketching out the electronics and particularly the bus systems I will need to tap into in order to keep things like the instrument panel working. The ZRoadster forum has been absolutely invaluable here with links to wiring diagrams and service manuals for the Z3.

Z3s, which were built on the E36 3-Series platform, use two different bus systems – the digital communications networks for the electronics. And they still have a bunch of individual stuff as well – sensors and controls that have their own wiring rather than sending everything over a shared bus. This is both good news and bad. It’s potentially simpler to wire up, but there are more wires to deal with.

These are the two buses I will be dealing with:

CAN Bus: the Controller Area Network (CAN) bus is used to communicate with the DME (Digital Motor Electronics – the bit that runs the engine and charging system, when it’s an internal combustion engine. Largely interchangeable as a term with ECU – Engine Control Unit), ABS (Anti-lock Braking System), and on an automatic (I think) the EGS (Electronic Transmission Control – guessing the acronym comes from the original German). I will need to replicate some signals from the DME, and likely send some signals to the ABS system to keep things working.
D-Bus: The Diagnostic Bus is what routes information from the car out to service technicians so that they can plug in a computer and work out what is going on. My plan is to collect all the diagnostic information from inside the car and route it so some sort of onboard computer or microcontroller for logging and perhaps local control.
I used to own a late 90s E36 Coupe, and being a hoarder, I kept the diagnostic cable I bought for it back then.

bmw diagnostic cable

Now, according to this diagram, the OBD2 (On-Board Diagnostics) port should offer me access to both buses. But my 99 car is fairly early for compliance with the OBD2 standard, so I suspect it may not. Sure enough, a look at the relevant pages of the wiring diagram shows that the CANBus isn’t brought through to the 20 pin connector under the bonnet, and having opened up the serial cable I can see it is only wired for the D-Bus and other old-school connections.

BMW INPA

BMW’s diagnostic software to use with the cable I have is now widely available, particularly the stuff for my vintage of car. I acquired a set but then remembered that it requires a true serial port rather than a USB adapter. This meant digging through my box of old laptops (of course I have a box of old laptops) until I found something suitable. A 16 year old Dell X300 with a docking station, and a serial port on that docking station. I also managed to find a matching PSU in my box of laptop PSUs (of course I have one of those as well). The laptop was running an old version of Ubuntu with a command line interface so I loaded LXLE onto it, then added Virtualbox on top of that, then installed the free version of Windows XP into there. Probably easier ways to go about it, and I won’t document the whole process here, including screwing around with ini files and configuring serial port access, but eventually I had a running XP instance and could install INPA on that.

After a bit of fettling the machine started talking to the car and I could begin to do some diagnostics…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.