GM W-Body ECM Trouble Codes
What do you do when the Service Engine Soon light turns on?

In every GM W-Body car, there is a computer that controls virtually all aspects of the engine's operation. This computer is called the ECM, or "Electronic Control Module". The ECM is constantly controlling, adjusting, and monitoring engine conditions. If there is an engine malfunction caused or detected by any one of the many sensors connected to the ECM, a trouble code will be stored in NVM, or Non-Volatile Memory. What you need to do first is find out what trouble codes are presently stored in the ECM. You can read these trouble codes in several different ways. The best and easiest way is to purchase a "scan tool". A scan tool displays trouble codes numerically on a LCD display or computer terminal. The more expensive scan tools also display the details behind the trouble code in full detail, such as the sensor voltage detected and what it should be. The drawbacks to the scan tool method is that a scan tool costs several thousands of dollars. The other method is to perform a "NON-SCAN" diagnostic circuit check by having the "Service Engine Soon" light blink out the codes stored in the ECM.

Regardless of the method used, the secret to communicating with the car's computer is through the ALDL connector (Assembly Line Diagnostic Link). This is where a scan tool would plug in. We will also utilize this connector for our "NON-SCAN" method.

NOTE: The cheap $25-30 "scan tool" and the $5 "scan key" that you find at many auto parts stores are NOT actual scan tools. They are essentially expensive jumper wires. Don't buy them unless you like wasting money, a paperclip or wire will work.

The following "NON-SCAN" method can be used to read these codes.

A steady "Service Engine Soon" light with ignition "ON" and engine stopped confirms battery and ignition voltage to the ECM.

  1. First you must locate the ALDL connector which is located under the dash on the driver's side, to the right of the steering column.

  2. The ALDL connector looks like this 

    For reference, ALDL pinouts are: A. Ground; B. Diagnostic Terminal; C. A.I.R. (if used); D. Service Engine Soon Light (if used); E. Serial Data; F. TCC (if used); G. Fuel Pump (if used); M. Serial Data (if used)
  3. Use a jumper (paper clip) and connect terminal "B" to terminal "A". Terminal "A" is the ground connection. Turn the ignition "ON", but don't start the engine, it must be left NOT RUNNING.
  4. The ECM will cause the "Service Engine Soon" light to flash Code 12 three (3) times consecutively. This would be the following flash sequence: "flash, pause, flash-flash, long pause, flash, pause, flash-flash, long pause, flash, pause, flash-flash" (See Figure 1). Code 12 means the diagnostic system is operating properly. Following Code 12, the other trouble codes will be output if present, or Code 12 will be output continuously if no other codes are stored. If more than one code was stored, they will be output from lowest to highest, with each one being displayed three times.

  5. Example: An error Code 25 will be: 12,12,12,25,25,25,12,12,12, etc.
     


    Figure 1: Example of "Service Engine Soon" light flashing Code 12 continuously.
  6. To quit scanning for codes, simply shut the ignition "OFF" and remove the jumper.
  7. To clear codes, ensure that the ignition is "OFF". Depending on the car, you can disconnect an inline "pigtail" fuse at the positive battery terminal, or remove the ECM fuse in the fuse block. Power to the ECM must be disconnected for at least thirty (30) seconds. This will cause the ECM to reset clearing all Codes, and the ECM will now need to re-learn driving parameters.
The following chart gives Code # and Description of the problem


Click on Malfunction Description to get more detailed information.

ERROR CODE MALFUNCTION DESCRIPTION
 
12 ERROR CODE DIAGNOSTIC SYSTEM FUNCTIONING CORRECTLY 
13 OXYGEN SENSOR CIRCUIT OPEN 
14 COOLANT TEMPERATURE SENSOR (CTS) CIRCUIT (HIGH TEMP) 
15 COOLANT TEMPERATURE SENSOR (CTS) CIRCUIT (LOW TEMP) 
21 THROTTLE POSITION SENSOR (TPS) CIRCUIT (HIGH) 
22 THROTTLE POSITION SENSOR (TPS) CIRCUIT (LOW) 
23 MANIFOLD AIR TEMP (MAT) or INTAKE AIR TEMP (IAT) CIRCUIT (LOW TEMP) 
24 VEHICLE SPEED SENSOR (VSS) CIRCUIT 
25 MANIFOLD AIR TEMP (MAT) or INTAKE AIR TEMP (IAT) CIRCUIT (HIGH TEMP) 
26 QUAD-DRIVER (QDM) ERROR (if applicable) 
32 EXHAUST GAS RECIRCULATION (EGR) CIRCUIT 
33 MANIFOLD ABSOLUTE PRESSURE (MAP) SENSOR (VOLTAGE HIGH-LOW VACUUM) 
34 MANIFOLD ABSOLUTE PRESSURE (MAP) SENSOR (VOLTAGE LOW-HIGH VACUUM) 
35 IDLE SPEED CONTROL (ISC) CIRCUIT 
41 CYLINDER SELECT ERROR (FAULTY OR INCORRECT MEM-CAL) 
42 ELECTRONIC SPARK TIMING (EST) CIRCUIT 
43 ELECTRONIC SPARK CONTROL (ESC) CIRCUIT 
44 OXYGEN SENSOR CIRCUIT (LEAN EXHAUST) 
45 OXYGEN SENSOR CIRCUIT (RICH EXHAUST) 
51 MEM-CAL ERROR (FAULTY OR INCORRECT MEM-CAL) 
53 SYSTEM OVER VOLTAGE 
54 FUEL PUMP CIRCUIT (LOW VOLTAGE) 
55 ECM ERROR 
61 DEGRADED OXYGEN SENSOR 
66 A/C PRESSURE SENSOR CIRCUIT 

 
 


CODE 12

Trouble Code 12 is a special-case code that is not logged into the ECM's Non-Volatile Memory (NVM) when detected. When the ECM detects no ignition reference pulses from the ignition module when the ignition is in the 'ON' position, it illuminates the Check Engine Lamp (CEL), but does not log this code as it would other codes.

Code 12 is used on most systems when in the Diagnostic mode (ALDL Terminal B grounded, key-on/engine-off) to signal the beginning or end of a so-called 'diagnostic sequence', when the ECM annunciates each stored code in the ECM's NVM on the dash CEL.

When in this mode, the ECM will begin by flashing code 12 on the CEL 3 times. This indicates the beginning of a diagnostic sequence. It will then flash any codes stored in NVM 3 times each before proceeding to the next code. When all stored codes are finished, the ECM will again flash code 12 to indicate the end of the diagnostic sequence. The cycle will continue as long as the ECM is in Diagnostic Mode.

NOTE: Codes are not displayed in order of occurance but rather in numerical order.

Return to Chart


CODE 13

Trouble Code 13 indicates that the exhaust stream oxygen-content sensor (O2 sensor) is not responding as expected. When cold, the sensor is 'biased' by the ECM to about 450 millivolts. Before it warms to at least 600 deg F (315 deg C) it acts as an open circuit and when the ECM reads it, it reads the 450 mV bias. The ECM expects the sensor to warm in a short period of time and begin sending its own voltages. The general conditions for this code getting set are:

Typical causes may include:
  1. Defective or degraded O2 sensor
  2. Deposit-contaminated O2 sensor (running leaded fuel, RTV silicone deposits etc)
  3. Corroded/defective O2 sensor connection
  4. Defective sensor ground circuit
  5. Defective connection at ECM
  6. Defective ECM
NOTE: If codes 21 and/or 22 are also present cause '4' above should be checked first.

Return to Chart


CODE 14

Trouble Code 14 indicates that the Coolant Temperature Sensor (CTS) is reporting abnormally high readings. CTS is used to control fuel mixture, timing, idle speed, TCC and EGR operations among others. The thermistor used has a high-resistance when cold, lowering as the coolant warms.

Code 14 will set if:

Typical thermistor resistances expected are:
 
Deg C  Deg F  Resistance (ohms)
100  212  177
70  158  332
40  104  1459
20  68  3520
41  7280
-5  23  12300
-20  -4  28680
-40  -40  100700
Typical causes may include:
  1. Severe engine overheating
  2. Defective Coolant Temperature Sensor
  3. Short circuit in CTS-ECM harness
  4. Defective ECM


Return to Chart


CODE 15

Trouble Code 15 indicates that the Coolant Temperature Sensor (CTS) is reporting abnormally low readings. CTS is used to control fuel mixture, timing, idle speed, TCC and EGR operation, among others. The thermistor used has a high-resistance when cold, lowering as the coolant warms.

Code 15 will set if:

- temperature reported is < -37.30 deg F (-38.5 deg C)

Typical thermistor resistances expected are:
 

Deg C  Deg F  Resistance (ohms)
100  212  177
70  158  332
40  104  1459
20  68  3520
41  7280
-5  23  12300
-20  -4  28680
-40  -40  100700
Typical causes may include:
  1. Open circuit in CTS-ECM harness
  2. Defective Coolant Temperature Sensor
  3. Open sensor ground circuit
  4. Defective ECM

 

Return to Chart


CODE 21

Trouble Code 21 indicates that the Throttle Position Sensor (TPS) is reading abnormally high. TPS volts should be close to 0.42 V at closed throttle and rise smoothly in about 0.02 volt increments to a maximum reading of about 4.85 volts at WOT.

Code 21 will set if:

Typical causes for this code include:
  1. Defective TPS
  2. Short circuit in the TPS harness to +5 volt reference
  3. Open sensor ground circuit
  4. Defective ECM
NOTE: Presence of codes 33 and/or 34 may indicate that the MAP sensor is defective and is reading less than expected. This may cause the above set-conditions to be met falsely and this code to be set.
 
 

Return to Chart


CODE 22

Trouble Code 22 indicates that the Throttle Position Sensor (TPS) is reading abnormally low. TPS volts should be close to 0.42 V at closed throttle and rise smoothly in about 0.02 volt increments to a maximum reading of about 4.85 volts at WOT.

Code 22 will set if:

Typical causes for this code include:
  1. Circuit Open or Shorted to Ground
  2. Faulty Connection
  3. Faulty TPS
  4. Defective ECM
TPS cannot be adjusted, the TPS has an auto zeroing feature.

Return to Chart


CODE 23

Trouble Code 23 indicates that the Manifold Air Temperature (MAT) sensor or Intake Air Temperature (IAT) is reading lower than expected. When the air is cold, the thermistor has a high resistance, which falls as the air charge warms. Low readings thus indicate possible open circuits in MAT circuit.

Code 23 will set if:

Typical causes for this code include:
  1. Defective MAT or IAT sensor
  2. Open sensor ground circuit
  3. Dirty or corroded connection(s) at MAT/IAT and/or ECM
  4. Open circuit between the ECM and the MAT/IAT sensor
  5. Defective ECM
Return to Chart

CODE 24

Trouble Code 24 indicates that the Vehicle Speed Sensor (VSS) is not sending the expected (based on other system parameters like LV8, TPS, RPM etc.) signal to the ECM.

Code 24 will be set if vehicle speed equals zero 0 mph when:

If the code was logged when the vehicle was in motion, the following should be checked:
  1. VSS circuit open, shorted to ground, shorted together
  2. Faulty Connections
  3. Defective VSS
  4. Defective ECM
  5. A faulty or misadjusted Park/Neutral (P/N) switch can result in false Code 24.
Return to Chart

CODE 25

Trouble Code 25 indicates that the Manifold Air Temperature (MAT) or Intake Air Temperature (IAT) sensor is reading higher than expected. When the air is cold, the thermistor has a high resistance, which falls as the air charge warms. High readings thus indicate possible short circuits in MAT circuit.

Code 25 will set if:

Typical causes for this code include:
  1. Defective MAT/IAT sensor
  2. MAT/IAT signal shorted to ground or to sensor ground
  3. Defective ECM
Return to Chart

CODE 26

Trouble Code 26 indicates that the quad-driver is malfunctioning.

QDM symptoms:

This problem can be caused by:
  1. Short to 12 volts on the control circuit by a shorted component.
  2. Faulty ECM.
Return to Chart

CODE 32

Trouble Code 32 indicates that the Exhaust Gas Recirculation (EGR) system has detected a fault. There are two types, the older integrated electronic EGR contains a voltage regulator which converts the ECM signal to provide different amounts of EGR flow by regulating the current to the solenoid. The ECM controls EGR flow with a pulse width modulated signal (turns "ON" and "OFF" many times a second) based on airflow, TPS, and RPM. This system also contains a pintle position sensor which works similar to a TPS sensor, and as EGR flow is increased, the sensor output also increases. The other type is a digital 3-level EGR used in newer engines. Code 32 will get set when:

Possible causes include:
  1. Faulty EGR valve-to-ECM connection
  2. Plugged EGR passages and/or sticking EGR valve
  3. Defective EGR valve
  4. Defective ECM
Check the shop manual for details on vehicle specific EGR valve applications.

Return to Chart


CODE 33

Trouble Code 33 indicates that the Manifold Absolute Pressure (MAP) sensor is detecting unusually low vacuum in the manifold. Code 33 will get set when:

Possible causes include:
  1. Faulty MAP-to-ECM connection
  2. Plugged or leaking sensor vacuum hose
  3. Defective MAP sensor
  4. Defective ECM
Check the shop manual for details on vehicle specific MAP sensor applications.

Return to Chart


CODE 34

Trouble Code 34 indicates that the Manifold Absolute Pressure (MAP) sensor is detecting unusually high vacuum in the manifold. Code 34 will get set when:

Possible causes include:
  1. Faulty MAP-to-ECM connection
  2. Defective MAP sensor
  3. Defective ECM
Check the shop manual for details on vehicle specific MAP sensor applications.

Return to Chart


CODE 35

Trouble Code 35 indicates a problem with the Idle Speed Control (ISC) circuit. It will be set when the closed throttle engine speed is 200 RPM above or below the desired (commanded) idle speed for 50 seconds. Possible causes include:

  1. Vacuum Leak (High Idle) - Also check for binding of throttle blade or linkage.
  2. System too lean (High Air/Fuel Ratio) - The idle speed may be too high or too low. Check for low regulated fuel pressure, water in the fuel, or a restricted injector.
  3. System too rich (Low Air/Fuel Ratio) - The idle speed will be too low. May exhibit black smoke in exhaust. Check for high fuel pressure, leaking or sticking injector.
  4. Foreign material in throttle body.
  5. Faulty IAC Valve electrical connections.
  6. Faulty PCV valve.
  7. Faulty IAC.
  8. Faulty ECM.
Return to Chart

CODE 41

Trouble Code 41 indicates an incorrect MEM-CAL has been installed or it is faulty and it must be replaced.

Possible causes include:

  1. Faulty connection due to MEM-CAL not locked in place.
  2. Incorrect MEM-CAL installed.
  3. Faulty MEM-CAL.
Return to Chart

CODE 42

Trouble Code 42 indicates that there may be a malfunction in the Electronic Spark Timing (EST) system. During cranking, the timing is controlled by the ignition module and the ECM grounds the EST line. It expects to see no activity on this line at this time. When the ECM enters EST mode, it applies +5 volts to the BYPASS line and expects to see voltage variations on the EST line.

Reasons for the ECM to set Code 42:

Possible causes include:
  1. BYPASS line is open or grounded
  2. EST line is open or grounded
  3. Poor connections between ignition module and ECM
  4. Poor routing of EST harness and/or poor quality ignition wires (EMI induced electrical noise
  5. Faulty or incorrect ignition module
  6. Faulty ECM
Return to Chart

CODE 43

Trouble Code 43 indicates that there may be a malfunction in the Electronic Spark Control (ESC) circuit. ESC is used to sense spark knock (pinging) and retard the timing to eliminate it. The knock sensor is located at the rear of the engine block. The ECM will retard the timing by as much as 20 degrees in 1 degree increments. A loss of knock sensor signal or loss of ground at the ESC module will cause the signal at the ECM to remain high. The ECM will act as if no knock is present, and may possibly result in engine damage, due to detonation.

Code 43 is set when:

Possible causes:
  1. Open or shorted knock sensor
  2. Loose knock sensor
  3. Excessive mechanical noise within engine
  4. Improper or incorrectly installed MEM-CAL in the ECM or defective ECM
  5. Intermittent open in the EST line to the ignition module
Return to Chart

CODE 44

Trouble Code 44 indicates that the O2 sensor is showing a persistently high exhaust oxygen content (lean), despite the efforts of the ECM to increase injector on-time (thus increasing fuel delivered). Integrator and BLM numbers may indicate > 128 by a substantial margin.

Code 44 is set when:

Possible causes include:
  1. O2 sensor defective or lead shorted
  2. Lean injectors (dirty or blocked)
  3. Water in fuel
  4. Exhaust leaks upstream of O2 sensor
  5. Fuel pressure too low
Note: Presence of Code(s) 33 and/or 34 may indicate MAP problem. This should be the first suspect in the case of a Code 44 being set.

Return to Chart


CODE 45

Trouble Code 45 indicates that the O2 sensor is showing a persistently low exhaust oxygen content (rich), despite the efforts of the ECM to decrease injector on-time (thus decreasing fuel delivered). Integrator and BLM numbers may indicate < 128 by a substantial margin.

Code 45 is set when:

Possible causes include:
  1. O2 sensor defective or contaminated (if incorrect RTV sealant or too much RTV is used, this may happen)
  2. Leaking fuel injectors
  3. Fuel pressure too high
  4. EMI interference from poor plug wires
  5. Evaporative Emission system defect
  6. TPS and/or EGR problem
Note: Presence of Code(s) 33 and/or 34 may indicate MAP problem. This should be the first suspect in the case of a Code 45 being set.

Return to Chart


CODE 51

Trouble Code 51 indicates that the ECM sensed a fault in the MEM-CAL. On power-up, the ECM does a checksum of the MEM-CAL to ensure the MEM-CAL integrity is good. If the calculated sum does not match the sum in the MEM-CAL, the ECM will hardcode 51 and enter Back-Up mode, since the ECM cannot know where in the MEM-CAL the fault lies.

Code 51 is set when:

Possible causes include:
  1. Incorrectly installed MEM-CAL module
  2. Defective MEM-CAL module
  3. Defective ECM
Return to Chart

CODE 52

Trouble Code 52 indicates that the ECM sensed a fault in the CALPACK. The CALPACK is a module separate from the PROM that contains preset calibrations used by the system in the limp-home mode. The ECM checks for its presence at power up.

Code 52 gets set when:

Possible causes include:
  1. Incorrectly installed CALPACK module
  2. Incorrect CALPACK module for this vehicle
  3. Defective or incorrectly inserted PROM
  4. Defective ECM
Return to Chart

CODE 53

This code will be set when the ignition is "ON", and the engine RPM is greater than 800 and the ECM is seeing a ignition fuel reference voltage of more than 17.1 volts. During the time of this failure, all ECM outputs will be disengaged.

Possible causes include:

  1. Faulty generator.
  2. Faulty ECM.
Return to Chart

CODE 54

Trouble Code 54 indicates a low voltage at the fuel pump. If the voltage at terminal "A20" is less than 4 volts for .4 seconds since the last reference pulse was received, the code will be set.

Possible causes include:

  1. Faulty fuel pump relay.
  2. Faulty connection at ECM.
  3. Faulty oil pressure switch.
  4. Faulty ECM.
Return to Chart

CODE 55

Trouble Code 55 indicates that the Analog- to-Digital (A/D) converter in the ECM timed out. The ECM checks this by initiating a conversion and timing how long it takes to complete. If the converter, for whatever reason, fails to signal the End-Of-Conversion (EOC) before a timeout counter runs down, the ECM assumes it is bad and sets this code.

Possible causes for Code 55 are limited to:

  1. Defective or incorrectly inserted MEM-CAL
  2. Defective ECM
If replacing the ECM, be sure to transfer both the PROM and the CALPACK from the old unit. If the old-ECM also indicated PROM failure (Code 51) or a bad CALPACK (Code 52), be sure to verify these components are fully operational in the new unit. If they are not, they too will have to be replaced.

Return to Chart


CODE 61

Trouble Code 61 indicates that the ECM has determined the oxygen sensor is contaminated or degraded, because the voltage change time is slow or sluggish.

Possible causes:

  1. Contaminated Oxygen sensor.
  2. Oxygen sensor needs replacement.


Return to Chart


CODE 66

Trouble Code 66 indicates that A/C pressure sensor has determined that the A/C refrigerant system pressure is either too low (0 psi, .1 volt at sensor) or too high (450 PSI, 4.6 volts at sensor) for 5 seconds or more. If this code is present, the A/C compressor is disabled by the ECM.

Possible causes:

  1. A/C system pressure is above or below calibrated values.
  2. Faulty A/C Pressure Sensor or wiring.
  3. Faulty ECM.
Return to Chart