Last update 6/07/2003

Tired of being at the mercy of your local BMW dealership to tell you the cause of the 'Check Engine' light?

Do you wish you could simply and quickly determine if it is nothing more then a loose gas cap instead of something serious?

Want to be able to clear the fault codes from the DME?

There are actually several reasonably affordable tools available that will do this for you.


The first is the Peake Research R5-FCX. This handy little gizmo plugs into the BMW diagnostic port under the hood of you car. With a single button press it will interrogate the DME and display the 2 digit hexadecimal fault codes that your DME has stored. If you have multiple faults it will scroll through them one at a time. Peake Research supplies a basic listing of the faults and their meaning as it relates to your car. Different BMWs use different DMEs and the fault codes change between them. For example on a 1.9l Z3 a '0C' fault means your post catalytic converter O2 sensor signal is out of range. But on a 2.8l Z3 a '0C' means the DME thinks there is a problem with the throttle position sensor.
The included chart breaks down which code goes with what vehicle pretty easily. The detail on the fault could be better as it doesn't give the explanation behind the fault at all.

The FCX can also clear the faults and turn off the 'Check Engine' light. Lastly, it has the ability to reset the Oil and/or Inspection Service lights. At $149 this is a very handy tool if you want to get a look behind what is causing the 'Check Engine' light to come on. Its small size lets you keep it stored in the car so you have it whenever you need it. It works on most '88+ and later BMWs with a few notable exceptions including new models. Check the compatibility list before you purchase one.


Just about everybody knows 96+ cars in the US are all 'OBDII' equipped. OBDII stands for On Board Diagnostics version 2. OBDII cars are not possessed by some strange voodoo like the common thought. The purpose behind OBDII was, in fact, to try and do away with some of the 'voodoo' in repairing these cars. Before OBDII each manufacturer had their own way of getting faults out of each cars computer. The equipment to do this was very expensive and specific to certain vehicles only. If you owned a smaller independent repair shop this limited your ability to diagnosing problems in a variety of different cars because each would need its own tool to find out what was wrong with it. Would you spend big bucks on a tool for a type of car you may only see once or twice a year?

OBDII was an attempt to implement a standard so that one tool could work on any car that was OBDII compatible. In theory one tool (or computer program with an interface) could be used to access faults on any 96+ car.

This mostly occurred. It turned out there are actually three electrical interfaces that a manufacturer could use. Some OBDII scanning tool interfaces can handle all three, some can't.

As can be expected the auto manufacturers responded very differently to OBDII. BMW implemented the OBDII interface, the ISO standard, and left it at that. All BMW tools (DIS and MoDic) still use the BMW diagnostic port located under the hood. They don't use the OBDII port for anything but because by law it has to be there it is. GM decided since they had to support it anyway lets do that and expand upon it to make it very useful. It is GM's main diagnostic interface into GM car's computers. Some tools have a 'GM Enhanced Mode' which gives much faster refresh rates, sort of like a higher baud modem, and access to a lot more data data. Others like Ford decided to make life as difficult as possible for any tool to access it while still staying technically within spec. They do things like sending each message three times instead of one. Some tools have a 'Ford' mode to eliminate redundant messages.

To use any OBDII scanning software you first need to find the OBDII port. By law it must be inside the vehicle located within two feet of the driver. On the Z3s it is on the passenger side of the center console. After you plug in the interface, with the car 'On', you run the OBDII software on your computer and connect to the car.

After you are connected you can read any faults that the DME has stored in it. The fault codes are very different from what the FCX can read though as OBDII faults are all standardized. This is good and bad.

It is good because every car uses the same faults so the scanning software itself will know what the fault is and will give you it in English. Since they are standard faults the DME has to 'translate' BMW specific faults into an OBDII compatible fault, usually called 'P' Codes. This can result is faults becoming a little more generic when you read them via. OBDII tools.

Say your 1.9l Z3 was misfiring. If you used the FCX to read the code there are 11 different fault codes having to do with misfires. 2 for each cylinder (catalyst damaging or not), 2 for random/multiple cylinder misfiring (catalyst damaging or not) and 1 for misfiring when the fuel was low. In OBDII P-codes there are only 5 corresponding faults. 1 for random/multiple cylinder and 1 for each cylinder. There are also a few BMW faults which have no corresponding P-Codes. OBDII scanners can not 'see' these faults at all. For example 'Battery Disconnected' has no P-Code associated with it.

OBDII scanners do have a couple of advantages in reading faults though. When a fault is stored the DME also captures 'Freeze Frame Data' which is sort of like a snapshot of various sensor data for when the fault occurred. Vehicle speed, load, RPM and so on are all stored to aid in diagnosing the fault. OBDII scanning software can get this data for you, the FCX can not. They also distinguish between 'Pending' and 'Stored' faults easier. Normally when a fault is first recorded by the DME it is considered 'Pending.' The DME keeps a record of the fault but does not turn on the 'Check Engine' (called MIL=Malfunction Indicator Lamp in OBDII speak). If the same fault occurs again while under similar conditions the fault becomes 'Stored' and the 'Check Engine' light is turned on. The FCX will read 'Pending' faults too but has no way of telling which is which. If you have only one fault you can tell if it is 'Pending' or 'Stored' by looking at the 'Check Engine' light. If you have multiple faults this won't work.

OBDII scanners can clear the faults from the car. This may or may not turn off the 'Check Engine' light. It seems to vary somewhat depending upon the car. After a certain number of drives with no faults the DME will turn off the 'Check Engine' light itself.

This is the tip of the iceberg though when it comes to OBDII scanners.

In the OBDII spec. vehicles must also give access to what is called 'real time data.' It is very much like having a telemetry link into the DME. Typical things you can watch are RPM, vehicle speed, various O2 sensor outputs (AFR mixture), Ignition advance, coolant temperature, intake air temperature, mass air flow, short and long term fuel trim (adaptation), throttle position, load and so on. What is available will depend a little on the car but all of the above are available on Z3s.

How you use this data, or if you use it at all, will depend upon what you want. It can be used to answer all sorts of questions about your car. A bunch of examples:

Did my new intake help airflow? Plot stock airbox airflow and RPM then compare it against your aftermarket intakes airflow and RPM.

Am I knocking? Watch the ignition timing and RPM and see if you see it retard.

Am I lean? Watch O2 Sensor Bank 1 Sensor 1 voltage and RPM and not only see if you are lean but exactly where in the band it occurs.

Did adaptation play a roll in the dyno test? Look at the Long Term fuel trim from the first run to the last run.

Is the engine heat soaked? Check intake air temp as well as coolant temp.

Did I get a useful performance increase? Plot vehicle speed vs. time and do some pre/post timing runs.

And literally dozens of other useful things. Most programs let you save the above data to a file so you can analyze it later.

I've used OBDII scanning software to test aftermarket intakes to know, without any doubt, if they increased airflow or not. It was very handy in setting up my superchargers mixture and making sure the knock sensors were not kicking in. I also used it to measure the performance increases of the supercharger. Just watching the interaction of the data is a good way to see first hand how your fuel injection system works.

The two products I know of that work with BMWs are OBDSCAN (formerly OBDTOOL) and Vehicle Explorer. Each has options for different interfaces to handle the three different types of interfaces used by manufacturers. They both also sell single interfaces that can handle multiple formats. A 486 laptop with 8-12megs of memory running Win3.1 can handle either of these programs. I use an old P133 Thinkpad that I got on auction. If you don't have a notebook you could pick up a used model for a few hundred dollars which would be sufficient. Just make sure it has a serial port (most but not all do), and either functioning batteries or a car adapter to power it.

The first program I bought was OBDTOOL. I've had it for several years and am very familiar with it. My interface handles ISO and GM vehicles. This setup costs about $600 today. It has a nice clean interface which makes OBDTOOL somewhat easier to use then Vehicle Explorer and I prefer its method of logging data to a file. You can turn logging on and off at the touch of a button... like at the start and finish of a data run. The data is stored in a comma separated text file and there is a simple utility included to graph the data in that file.

However, the original developer passed away and a new company has taken over selling the product. I don't think they have updated the program in several years and they doubled its original selling price. It is also a little limiting in that it can only view/capture two sensors data at a time. You could watch RPM and speed but not RPM,speed and throttle position for example.

Vehicle Explorer is a lot more flexible in the data it grabs and the way it displays it. It can watch as many sensors as desired but the more you read the slower the refresh rate becomes. Unlike OBDTOOL any time you are connected to the car Vehicle Explorer is logging the data to a file. This makes it harder to capture the data from a single run and store it by itself. To view the logged data the program 'replays' it in real time, like a VCR, and you can jump around in the program and watch its various graphs or instrument panel as if it were live. Vehicle Explorer can also export the data to a CSV or a HTML file. Vehicle Explorer has single interfaces available for each of the three formats as well as several multiple format interfaces. An interface that handles all three formats and software will cost $162 and that is the product I purchased. If you just want to handle ISO only (BMWs) it costs $122.

This product is still actively being developed. After talking with the developer he was going to add a logging function similar to how OBDTOOL functions. Grabbing data runs will be much easier when this is implemented. Recently a 'GM Enhanced Mode' was added to the software. Vehicle Explorer was also expanded to use the new KWP2000 protocol. If you have a S54 M Roadster/Coupe your OBDII scanning software *must* support this to be able to talk with the vehicle. 

With either of these programs when you first start using one you are going to be hit with information overload. OBDTOOL came with a decent manual to get you going but it doesn't get very in depth. Vehicle Explorer is online help only and that is fairly scare though their website gives more detail.

There are also a few hardware only OBDII scanners and some very expensive BMW specific scanners. I can't afford any of them so I don't have a clue how well they work.

Depending upon your needs any of the above could be the right choice for you.


The R5-FCX is extremely portable, simple to use, and reads the actual BMW fault codes. If you car is a pre-96 model it wins by default. The additional oil+inspection light functions are an extra bonus.

With the OBDII scanning software you aren't nearly as portable as the FCX, need a laptop, have a little harder setup and get the generic codes. On the plus side is all the real time data which is truly fantastic if you know what to do with it and the freeze frame data associated with the fault codes.

Considering the huge difference in price of the two scanning programs and the greater compatibility of Vehicle Explorer in handling all three interfaces that is the one I recommend. However, I use OBDTOOL more frequently because its method of logging better fits my needs and it is simply what I am more familiar with. When the new logging feature is added to Vehicle Explorer that may very well change and then it recommending it would be a true no-brainer.

I'm personally glad I've got all three. Each has its advantages and disadvantages and I tend to use whichever best fits my needs at that time. The FCX is always in the car and I use the scanning software for testing using the real time data.

Also see Fault Code listings

Back to homepage