Hi, this is the first thread i'm starting, and i'd like to give some info about diagnostics, the pros and cons and what to do with the info.
What you have
There are plenty of different diag types, most ecus from the 80's have inbuilt diagnostics, called On Board Diagnostics. This was self checking the sensors, and also making sure the sensor values were plausible. This system was active in the US, but in most cases, wasn't fully active in Europe. This first system in the US displayed the CHECK ENGINE light, and would flash simple engine related codes which could be decoded with a reference book.
This is inside the Euro ECUs but the light isn't connected up. That's why the "Stomp codes" won't work in the UK. The check engine light only became active from the full OBD2 era onwards.
To read codes from these, you will need a BMW specific code reader, Peake, Carsoft, or the smarter stuff like DIS/GT1, Autologic etc. ELM327 obd2 stuff won't work.
These BMW specific readers have the protocols installed to talk to the majority of modules while the stomp code just communicates to the ECU.
These are the readers that will diag ABS and airbag problems, as well as any other module installed.
In 96, OBD2 was introduced. OBD2 has features such as a flash memory for reprogramming, adaptation (which is self adjusting it's own maps to match the targets it is programmed with) and the easy OBD2 protocol.
As with before, Europe didn't get this fully working, the software was there, but the easy protocol was deactivated.
The idea was a simple cheap diag system for every car that any garage could use for emission based faults so you didn't have to go to the dealer.
That was the law in the US, but it wasn't in Europe, we still had to wait until 2001 for petrol, and 2004 for diesel.
It was simpler to do a global update for every ecu, but euro stuff was still on "dealer only" as they could get away with it.
You will find some euro cars from '96 that were OBD2 compliant, which was nice of them, but BMW stood back from this.
**this means '96 on Euro BMWs WILL NOT WORK WITH OBD2 READERS**
Yet again, you'll need to use Carsoft etc to communicate.
From 2001 onwards, the familiar OBD2 16Pin plug near the dash started to appear in e39s, e46s etc, and OBD2 was fully switched on.
Remember, the OBD2 system was only concerned with emissions and efficiency, so you won't communicate to the ABS, Airbags etc.
Getting the codes
Once plugged in with the ignition on, follow whatever instructions to pull the codes out. If someone else is reading them, tell them everything you did, whether you unplugged stuff, swapped stuff, the last time the codes were cleared etc. This can be vital information to the diagnoser.
If you are using your own reader, record all the details, including and reference numbers for the code.
DO NOT JUST READ THE FIRST WORD YOU RECOGNISE AND SWITCH OFF!
A common problem is not reading the code description, just taking "lambda" or "MAF" and then going straight out for a new one. If there is no description, still take down the code number and it might be possible to find a description somewhere else.
Understanding the codes and good diagnostics
The diag system checks the sensors in a few different ways, firstly, during start up, it will check the resistances and start up values to make sure everything is still there. Once happy, it'll monitor the readings to make sure everything matches up with it's own criteria.
For example, if you pull an ABS sensor out of the hub and still leave it connected, you won't get any codes after starting. The system has verified the sensor is connected, and the system remains happy.
Once you move off, and get to about 5mph, the ABS system realises it isn't getting the pulses from the loose sensor, and the light comes on.
That would be what's known as a plausibility error.
In other words, there should be no way you'd be driving with one wheel not moving, and the system deactivates.
Switching off and on again, the system will recheck the sensors are connected, the light will go off, and come on again once moving.
For Airbags, the system is smarter. ANY fault whether current or just detected for a fraction of a second will put the light on, and it'll stay on. The system will remain active, but it will decide using the knowledge that one input was known to be bad so don't think that when the light is on, the airbags are all deactivated.
For each of the systems, and the codes recorded, there will be information on what it noticed was wrong. This is why it's important to get the full description of the code.
For most sensors, it will note if it is disconnected, unresponsive, or has a short circuit on it.
An unresponsive ABS sensor could be due to it being loose, or the ABS ring gummed up. Cleaning might fix this, but disconnected could mean either the plug is adrift or the wires are broken internally (very common).
A short to ground or resistance could mean a damp plug.
All of these errors have very different causes and fixes, so it's important to get as much information as possible.
Shooting the messenger
On of the common problems is misreading a plausibility code, and swapping the sensor. It can and does happen that the sensor is bad, but in a lot of cases, the sensor is fine, and is just reporting a condition somewhere else.
A major example would be a vacuum leak.
Take for example the split rubber boot on a MAF. When this occurs, the engine draws in air behind the MAF, which isn't recorded.
Measurements from the lambda sensors will show more O2 passing through the system than expected. Fuel trims will be set higher, and the system will survive.
You may get a code here saying Lambda out of limit, which means there is far too much O2 passing through (lean), adaptation will show the fuel trims are sky high and it might recognise the true cause is the air measurement is wrong.
That would store a MAF code.
air leak can give lambda codes, MAF codes, and adaptation limits reached.
A lot of people here will get a new MAF, or change the lambda sensor, and each attempt is £100+ down the drain from not reading the codes correctly.
Disconnecting the MAF makes matters worse. When that is tried, the ECU recognises the signal is missing, and swaps the an Alpha N system, and guesses the expected airflow from the rpms and Throttle angle.
It'll also set the system to be over rich, as a lean condition could go un-noticed and destroy the engine.
Unplugging the MAF and using the default A.N can often make the problems go away, as it is quite an accurate system.
This can give a "false positive" that the MAF was the cause as plugging it in makes the car run badly.
Still, the airleak hasn't been fixed!
If the system then gets diagnosed, it'll have a MAF disconnected , or often "MAF System- General" code recorded, and it'll look like the problem has been found, when it just recorded your attempts to narrow down the cause.
The OBD is often clever enough to spot a leak, and may record the fault in perfect detail, but don't always expect it.
In an exhaust system, a leak in a join will introduce air into the system. As the pulses of exhaust gas pass the leak, they will PULL IN fresh air, and the Lambda sensor will read high O2. The ECU will respond by adding more fuel in an attempt to fix it, but it won't work, as the fuel can't burn the air.
Yet again, there is a lambda fault code registered, but no problem with the lambda sensor. Getting a new sensor is throwing money away again.
Think like an ECU
Always look at the full code reading and description, and think what the code means, and what can cause it. Not always is it the sensor's fault. It can also be something else that the sensor is reading, but doesn't make sense.
Keep up to date with your codes, you may need to clear the fault memory and drive again to get a clean set of codes.
The codes are recorded in non-volatile RAM, so they won't be cleared by disconnecting the battery. Old codes, or stuff created when trying to diag a system can muddy the waters and guide you up the wrong path.
Always try to consider what other possibilities can cause the problem, and try swapping the sensors with known good ones before buying something new