Using a scantool for troubleshooting

by Oliver Scholz

Since I have built so many scantools in the past years, many people are fascinated by the things a scantool displays, but are unsure about how to properly use it and what you can do with it. The following paragraphs will give you a short introduction on the use of a scantool on the Fiero.


First of all, more important than what you can do with a scantool is what you can not do with it. The scantool is not a miracle tool. It is a tool like a voltmeter or scope, and it can aid you in diagnosing a problem, but it rarely points you directly to the problem. You do need a good working knowledge of how an engine works, and what the possible causes are for the symptoms you experience, and then use the scantool to verify your theory. And even the values you read on the scantool are only what the ECM measures, so a bad sensor reading may not only be caused by a bad sensor, but also by bad wiring or even a defect in the ECM itself. The ECM only monitors the input side (i.e. sensors) and some key internal variables, but it does not check the output side (bad drivers, or defective solenoids). A bad solenoid or short in the wiring can easily fry drivers inside the ECM, which the ECM itself will not detect. Be sure to verify all ECM controlled solenoids at the ECM connectors before installing a new ECM, because if you haven't fixed what caused the old ECM to blow in the first place, you're likely to blow the new ECM as well in short time. Also, the update rate of the values varies from ECM to ECM. The V6 ECM for example only updates values every 1.5 seconds, so it may be too slow to show short glitches in the signals. All these factors have to be taken into account when diagnosing the engine with a scantool.

Basic use

A scantool shows various so called "positions", i.e. readings of certain values. Normally those positions are measured values of sensors, or calculated internal variables. Also, the scantool displays the stored trouble codes (which are the same codes you get when the ECM blinks the trouble codes through the "Service Engine Soon"-Lamp). If you select any position, you can read that value and observe it under various conditions. For example, you can select the TPS (throttle position sensor) and watch its value change when you push the accelerator pedal. When observing variable value, it may be useful to compare the values to a known good vehicle when judging if a value is out of range. The ECM does recognize out of range errors only if they are really out of range, usually caused by shorts or opens in the wiring or sensor. Ideally you have written down some value ranges for the positions when the engine was still okay so you have something to compare with, but an identical vehicle that works is sometimes even better. Some scantools, especially PC-based scantools like the ScanConverter, allow you to monitor all values at the same time, which can be a valuable diagnostic aid not found on most handheld tools.

When to use a scantool

There are three reasons why you would hook up a scantool to your car:
  1. You are just curious. That's okay. Take the time to write down some of the values for later reference. It can't hurt.
  2. You are getting the Check Engine Light. In this case you will first read the stored trouble codes with the scantool, and use the diagnostic charts in the Helms manual for troubleshooting (they're very good). Once you have fixed the problem you'll reset the trouble codes by disconnecting the battery for 30 seconds, and check that the codes don't reappear.
  3. The engine behaves weird, but you're not getting a code. "Weird" can be a wide range of symptoms from stalling to bad fuel economy. Remember, whatever's wrong with your engine, it may also be mechanical!

Trouble Code Diagnostic hints

Most people don't take the time to use the diagrams in the Helms manual, and just go ahead and replace a component. This is a bad habit and results in the replacement of unnecessary parts. Pinpointing the exact trouble source is usually not difficult with the diagrams. The following are probable causes for the trouble codes you may be getting.

Code 12: Not a trouble code at all, it only means the engine is not rotating.

Code 13: An open in the oxygen sensor. Either sensor or wiring. The ECM sets this code if it doesn't see O2-Sensor voltage changes. The sensor should be replaced every two years anyway.

Code 14/15: Coolant temp sensor grossly out of range. This is usually a problem with the wiring or ECM contacts.

Code 21/22: TPS sensor out of range. These things are mechanical and do wear. Set the scantool to TPS and check if the value is steadily under 0.2V or over 4.5V while slowly varying the throttle (engine off, ignition on). If so, it's the wiring, if the throttle does vary, the TPS is worn.

Code 23/25: Air temp sensor grossly out of range. This is usually a problem with the wiring or ECM contacts.

Code 24: Speed sensor: This one rarely goes bad, but the plastic gear on the VSS can break. If the speedo is dead you usually get a Code 24 along with it, but sometimes the speedo can appear intact and still deliver no pulses to the ECM. It's easy to switch any Fiero speedo temporarily into the car and check if that cures the problem. (All Fiero speedos are compatible and can be used for that purpose).

Code 32: EGR circuit feedback. Usually the service tech people just replace the EGR solenoid when they get this fault, but it can also be caused by wiring problems or cracked vacuum hoses (or even a leaking EGR valve). So be sure to use the check procedure before running to the parts counter.

Code 33/34: MAP sensor grossly out of range. This is usually a problem with the wiring or ECM contacts.

Code 35: Idle speed error. Replacing the IAC valve is normally not the solution to get rid of this one! This fault means that the ECM could not control the idle speed within its set limits, and this is likely to be caused by other factors, namely vacuum leaks (EGR-tube!), bad sensors, intermittents in the wiring, etc. Again, be sure to use the diagnostic tree in the Helms for this one.

Code 42: EST fault. This is the only code that is difficult to diagnose, because the scantool is no big help there, but Code 42 is usually either caused by a bad module, bad module ground (replace module screws!), bad wiring or interference through misrouted spark plug wires.

Code 44/45: O2 sensor grossly out of range. This is usually a problem with the wiring or ECM contacts, but the sensor does wear and should be replaced every two years anyway.

Code 51: PROM error. Unlikely fault, but easily checked by replacing the PROM with another one. If that doesn't help, the ECM is bad.

Code 52: CalPak error. Even more unlikely than Code 51. Usually the calpak is just missing. Get a new one.

Code 53: System over voltage. Check voltage vs. rpm. If it goes over 15V, you have a bad regulator on the alternator. if not, clear fault and see if comes back again. If it does, the ECM is bad.

Code 55: Bad ECM. Either a bad ground or a bad ECM. Also relatively unlikely.

Scan Position troubleshooting hints

Although the ECM monitors the sensors constantly for out of range readings, some sensors do age and their readings gradually change, which is something the ECM can not detect. Bad contacts can also change readings which stay within the limits and do not cause a trouble code to be set. The effect of this is usually bad fuel economy, sluggish response, etc. The following list contains a short description for each of the positions a scantool displays, what it is, how to diagnose, etc.

MAT: Manifold Air Temperature. This is the sensor reading. It should read close to ambient temperature (or CTS) if the car has been sitting overnight. This sensor does age, so check it every now and then.

CTS: Coolant Temperature Sensor. This is the sensor reading. It should read close to ambient temperature (or MAT) if the car has been sitting overnight. This sensor does age, so check it every now and then. This one is useful to check when the thermostat opens: just observe while the engine gets hotter. You'll see the temperature drop and stabilize when the thermostat opens.

MAP: This sensor is best compared to a known good vehicle with the engine off. With the engine running you can see the value varying, but you can only verify that the value is changing, not really if it's accurate. With a vacuum pump and gauge you can check the reading with the table provided in the Helms manual.

TPS: This sensor does not age, but it wears because it's mechanical. Usually it wears near the idle position, so check the reading by slowly varying the accelerator pedal and see if the value follows. The slow update rate of the scantool is really hurting here, so an analog gauge measuring directly at the TPS may give better results.

BAT: Current battery voltage. Interesting, but not really all that helpful. Only useful for diagnosing a bad regulator.

O2: This is the current O2 voltage. Again, the update rate is too slow, but you can check if the value changes at all once the sensor has heated up. Once the sensor is hot, the O2 sensor indicates changes from lean to rich several times a second, these crossovers from rich to lean or vice versa are called crosscounts. The sensor does age quickly and responds slower and slower with age, causing reduced economy at first, and then later on driveability problems may appear. Replace the sensor every two years.

VSS: Current speed. Used to check Code 24, or to verify the accuracy of the speedo. Not really useful for anything else.

RPM: Current rpm. Useful for checking accuracy of the tach, but not much else.

IAC: Idle Air Control steps. This is what the ECM thinks is the current IAC position, not what it actually is! So, if the IAC sticks or the wiring is bad, the IAC value can be anything but correlate with the real position. The IAC steps are zero with the IAC closed, and increase the more the IAC is open. After startup the IAC is high and as the engine warms the IAC will slowly go to zero. If there is a vacuum leak (EGR-tube), the IAC will close more quickly, because the ECM will need less additional air due to the leak. Comparison to another vehicle or notes from a year ago can be helpful here.

BPW: This is the Base Pulse Width for the injector(s). Interesting, but of little use for diagnostics.

ADV: This is the spark advance in degrees, calculated from a base offset. The base offset it set by rotating the distributor (if equipped), so this again is where the ECM thinks the timing is. A strobe light is much, much better for checking the real timing (remember the 1.5s update rate), so this one again is not all that interesting.

EGR: This is the currently commanded EGR duty cycle (goes from 0-100%). 0% means no EGR, valve is closed. The more EGR is commanded, the more the valve opens. This one is not very useful for diagnosing EGR problems (the EGR diagnostic switch is for that purpose), but it is interesting to see under what conditions the ECM actually commands EGR. Since this is another commanded value, it does not necessarily reflect the actual state of the EGR.

O2X: This is the O2 crosscounts value. The O2 reading will always swing around the center value of 0.45V, at least that's the point of the whole emissions control hoopla. Each time the O2 value crosses the center line, this value is incremented. This value will only count up and wrap to zero if it exceeds 255. The faster this counter counts up, the better the regulation.

INT: The integrator is a variable used for emissions control. If the ECM does not see a crosscount for a while and the mixture stays too rich, the integrator is incremented. If there is no crosscount and the mixture is lean, the value is decremented. Without getting too technical, this value is used to richen or lean out the mixture, to bring the exhaust back into the operating range. The value should be around 128, which is the center value. If it is constantly too high or too low, there may be a vacuum leak or leaking injector that the ECM is trying to compensate for.

BLM: This is a value related to the INT variable, but is a long term variable. You really need to be into the inner workings of the ECM to work with this one.

PROM ID: Some Scantools show the PROM-ID of the installed PROM.GM technicians use this to look up which PROM is installed without opening up the ECM.

Flag Positions

Flags are readings which are On/Off, Open/Closed, etc. Usually they show the value of an input that is not a sensor but a switch, or the state of an output that drives a solenoid.

A/C Clutch output: This flag reflects what the ECM commands the A/C clutch to do. If this indicates "on", the A/C clutch should come on, or there is a problem.

A/C Request input: This flag indicates if the A/C is commanded on. Easy to verify by pressing the appropriate switches on the A/C control head.

Fan Switch output: This means the Fan is being commanded on by the ECM. If this flag is on and the fan is not, either the fan relay or the fan itself is bad.

TCC Solenoid output (automatic only): This flag shows if the TCC solenoid is engaged or not. Interesting to see when the ECM turns this one on, but as with all outputs, if the TCC is not working correctly, this value is not related to what's actually happening.

Shift light output (manual only): Not interesting unless your shift light bulb is burnt out.

EGR Switch input: This is the diagnostic switch that causes Code 35. By applying and releasing vacuum to this switch while observing the flag status, you can determine if the switch is bad, or the wiring, or the vacuum components.

Loop status: When the engine is cold and the O2 sensor not yet working the engine is in open loop, meaning that the emission controls are switched off. When the O2 sensor has warmed up and emission controls kick in, the engine goes closed loop.

Mixture status: This is an internal variable that shows if the mixture is currently rich or lean.

Battery status: Shows if the ECM considers the current voltage to be adequate or not. Frankly, the battery voltage reading is much more useful for that purpose, but hey...

and now...

Well, I hope this information is useful, but as always, I value your feedback and if you have any additions, corrections or suggestions, please let me know!

There have been visitors to this site since May 31, 2000.