ECM, PCM & TCM Error Codes: Meanings and Causes (2026)

Guide graphic: decoding ECM, PCM, and TCM fault codes

An ECM error code is a diagnostic trouble code (DTC) your car’s computer stores when it detects a fault in a sensor, an actuator, or its own internal memory. The codes that point to the module itself are internal faults such as P0601 (memory checksum error), P0603 (keep alive memory error), and P0606 (processor fault). Most other codes point to a part the computer monitors, not the computer itself.

Your car or truck’s central computer goes by several names. It can be called an Engine Control Module (ECM), an Engine Control Unit (ECU), a Powertrain Control Module (PCM), or a Transmission Control Module (TCM). Whatever the name, it constantly watches the engine and drivetrain for trouble, assigns a code when something reads out of range, and turns on the check engine light so a technician knows where to look.

Key Takeaways

  • A code names the problem, not always the part. An ECM error code tells you which circuit or system the computer flagged. Most codes point to a sensor or actuator, not to the module itself.
  • Internal codes point at the computer. P0601, P0603, P0604, P0605, P0606, and P0607 are internal module faults. When one sets, the module usually needs to be replaced and programmed, not repaired with a new sensor.
  • The first character tells you the system. P is powertrain, B is body, C is chassis, and U is network communication. A second digit of 0 is a generic code; a 1 is manufacturer-specific.
  • Same code, different cylinder. In the misfire (P0301-P0308) and injector (P0201-P0208) families, the last digit is the cylinder number. P0304 is cylinder 4.
  • A replacement module must be programmed to your VIN. An unprogrammed computer, including one from a salvage yard, sets anti-theft codes and will not start the engine.

How to Read an OBD-II Error Code

An OBD-II error code is one letter followed by four numbers, and the first character tells you which system set it. Every vehicle sold in the United States since 1996 uses this standardized format, so every vehicle shares the same P, B, C, and U code structure.

Definition card: an OBD-II error code is one letter followed by four numbers
Every OBD-II code follows the same one-letter, four-number format, on every US vehicle since 1996.

  • First character (system): P is powertrain (engine, emissions, transmission), B is body (climate, lighting, airbags), C is chassis (braking, steering, suspension), and U is network communication between modules.
  • First number (who defined it): A 0 is a generic code defined by the industry standard and shared across all OBD-II vehicles. A 1 is manufacturer-specific, so a P1495 means one thing on a Chrysler and may not exist on another brand.
  • Last three numbers (the specific fault): These pin down the exact circuit or component, such as a cylinder, a sensor bank, or an emissions valve.

You pull the code by plugging a scan tool into the OBD-II port, usually under the dashboard on the driver’s side. The tool reads the stored codes, and this guide explains what each common one means. If you want the difference between the module names first, read our ECU vs ECM explainer.

Internal Module Fault Codes

Internal module fault codes mean the computer failed one of its own self-tests, so the fault is inside the module rather than in a sensor. These are the codes that most often point to a failed ECM or PCM, and swapping sensors will not clear them.

  • P0601: Internal Control Module Memory Checksum Error. The module ran a checksum on its own memory and the result did not match. This is a hardware-level internal fault, not a sensor problem.
  • P0603: Internal Control Module Keep Alive Memory (KAM) Error. Keep alive memory stores the learned fuel and idle adjustments that must survive when the vehicle is off. A P0603 means that memory failed its self-test.
  • P0604: Internal Control Module Random Access Memory (RAM) Error. The module detected a fault in its working memory.
  • P0605: Internal Control Module Read Only Memory (ROM) Error. The module detected a fault in its permanent program memory.
  • P0606: ECM/PCM Processor Fault. The module’s internal processor failed its own performance check. The computer’s brain is not computing correctly.
  • P0607: Control Module Performance. The module is not performing within its specified range.

When one of these codes sets and clean battery voltage and solid grounds check out, the module itself is the likely fault. The reliable fix is a known-good module programmed to your vehicle. You can find your replacement on our ECM and PCM listings.

Communication and Network Codes (U-Series)

Communication codes in the U-series mean a module has stopped talking to the rest of the vehicle over the data network, called the CAN bus. When the engine computer goes silent, other modules set a lost-communication code against it.

  • U0100: Lost Communication With ECM/PCM “A”. Other modules can no longer reach the engine computer over the CAN bus. This can mean a dead module, a wiring fault, or a power or ground problem at the module.
  • U0001: High-Speed CAN Communication Bus. A fault on the vehicle’s high-speed data network, often a shorted or open bus wire.
  • P0600: Serial Communication Link Malfunction. The serial data link between control modules has failed.

A U0100 that appears alongside a no-start is a strong sign the module has lost power, lost ground, or failed internally. On heavy-duty and diesel platforms, network faults are common failure points. Match a diesel module by platform on our diesel modules page.

Misfire Codes (P0300-Series)

Misfire codes mean a cylinder is not burning fuel completely, which the computer detects as a drop in crankshaft speed at that cylinder’s firing point. Long-term driving with a misfire can cause costly engine and catalytic converter damage, so these should be fixed quickly. In the cylinder-specific codes, the last digit is the cylinder number.

Code Meaning Common cause
P0300 Random or multiple cylinder misfire detected Vacuum leak, low fuel pressure, or worn ignition parts across several cylinders
P0301-P0308 Misfire in a specific cylinder (last digit = cylinder number, so P0304 = cylinder 4) Worn spark plugs, spark plug wires, or a faulty ignition coil on that cylinder

Start with the ignition parts on the named cylinder. A P0302, for example, points straight to cylinder 2’s plug, wire, or coil. For domestic trucks and cars, match a replacement engine computer on our Ford and Dodge module pages.

Callout: a P0302 misfire code points straight at cylinder 2
The last digit in a misfire, injector, or ignition coil code always names the cylinder.

Fuel Injector Circuit Codes (P0200-Series)

Injector circuit codes mean the PCM or ECM found an electrical fault in a fuel injector or its wiring. The module watches the voltage and resistance at each injector, and when the reading is out of range it sets a code. As with misfires, the last digit is the cylinder number.

Code Meaning Common cause
P0201-P0208 Injector circuit fault on a specific cylinder (last digit = cylinder number) Defective injector, clogged or corroded injector, poor connector or harness wiring, or a damaged PCM

Symptoms include poor acceleration, a rough-running engine, hard starting, or high fuel consumption. Because a damaged PCM can also set these codes, confirm the injector and its wiring before condemning the module.

Sensor and Air/Fuel Metering Codes

Sensor and metering codes cover the inputs the computer uses to control fuel and timing: oxygen sensors, the manifold absolute pressure (MAP) sensor, the throttle position sensor (TPS), and the coolant temperature sensor. Most of these point to the sensor or its wiring, not to the module.

Code Meaning Common cause
P0106 MAP or barometric pressure circuit range/performance problem Intake or exhaust leak, wiring fault, or failing MAP sensor
P0107 MAP sensor circuit low voltage input Short to ground or a failed MAP sensor
P0108 MAP sensor circuit high voltage input Open circuit or a failed MAP sensor
P1297 No change in MAP from start to run (Chrysler, Dodge, Jeep) Faulty or restricted MAP sensor, or wiring fault
P0118 Engine coolant temperature (ECT) sensor circuit high Failed ECT sensor or an open circuit
P0121 Throttle position sensor (TPS) “A” circuit range/performance TPS “A” reading out of range compared with the “B” circuit; can force limp mode
P0122 TPS “A” circuit low voltage Short or a failed throttle position sensor
P0123 TPS “A” circuit high voltage Open circuit or a failed throttle position sensor
P2107 Throttle Actuator Control Module Processor fault Internal throttle-control processor fault; can put the engine into limp mode
P0131 O2 sensor circuit low voltage (Bank 1, Sensor 1, upstream) Failed upstream sensor, wiring, or a lean condition
P0132 O2 sensor circuit high voltage (Bank 1, Sensor 1, upstream) Failed upstream sensor, a short, or a rich condition
P0133 O2 sensor slow response (Bank 1, Sensor 1, upstream) An aging upstream oxygen sensor
P0135 O2 sensor heater circuit (Bank 1, Sensor 1, upstream) Failed heater element in the upstream sensor
P0137 O2 sensor circuit low voltage (Bank 1, Sensor 2, downstream) Failed downstream sensor or wiring
P0138 O2 sensor circuit high voltage (Bank 1, Sensor 2, downstream) Failed downstream sensor or a short
P0141 O2 sensor heater circuit (Bank 1, Sensor 2, downstream) Failed heater element in the downstream sensor

Bank 1 Sensor 1 is the upstream oxygen sensor, mounted before the catalytic converter. Bank 1 Sensor 2 is the downstream sensor, mounted after it. That is the difference between P0135 (upstream heater) and P0141 (downstream heater), which is why the two codes point to different sensors even though they share the same wording.

Emissions Codes (EGR and EVAP)

Emissions codes cover the exhaust gas recirculation (EGR) system, which recycles a small amount of exhaust to lower combustion temperature, and the evaporative emission control (EVAP) system, which keeps fuel vapor from escaping into the air. Most of these codes point to a valve, a solenoid, or a leak, not to the computer.

Code Meaning Common cause
P0400 EGR flow malfunction Carbon-clogged EGR passages, a defective valve, or a vacuum or electrical fault
P0401 EGR insufficient flow detected Clogged EGR passages or a stuck valve
P0402 EGR excessive flow detected An EGR valve stuck open
P0403 EGR control circuit fault A fault in the EGR vacuum solenoid voltage
P0404 EGR control circuit range/performance The valve is open when it should be closed, or the reverse
P0405 EGR sensor “A” circuit low voltage The EGR position sensor is reading below range
P0487 EGR throttle control circuit “A” open (common on diesel platforms) An open circuit at the EGR throttle actuator
P0488 EGR throttle control circuit “A” range/performance Actual EGR valve position does not match the commanded position
P0489 EGR “A” control circuit low Defective wiring or clogged EGR passages
P0441 EVAP system incorrect purge flow A purge valve that is not regulating fuel vapor correctly
P0442 EVAP system small leak detected A loose gas cap or a small leak in the system
P0443 EVAP purge control valve circuit malfunction A failed purge valve or a short in its circuit
P0455 EVAP system large leak detected A loose, broken, or missing gas cap
P1491 Insufficient EGR valve lift (manufacturer-specific) An EGR valve or solenoid fault, seen on some Honda models
P1494 EVAP leak detection pump pressure switch (Chrysler, Dodge, Jeep) A fault in the leak detection pump pressure switch
P1495 EVAP leak detection pump fault (Chrysler, Dodge, Jeep) A problem with the evaporative leak detection pump

Idle, Fuel Delivery, and Charging Codes

These codes cover idle control, the fuel pump circuit, the fuel level sensor, the charging system, and cooling. Several are manufacturer-specific to Chrysler, Dodge, and Jeep, which run their fuel pump and shutdown relays through the PCM.

Code Meaning Common cause
P0505 Idle air control (IAC) system malfunction A faulty IAC valve, a vacuum leak, or a dirty throttle body
P0508 IAC circuit low A short or fault in the idle air control circuit
P0509 IAC circuit high An open or fault in the idle air control circuit
P0230 Fuel pump primary circuit malfunction A fuel pump relay or wiring fault
P1282 Fuel pump relay control circuit (Chrysler, Dodge, Jeep) A shorted or open fuel pump relay control circuit
P0460 Fuel level sensor circuit malfunction A mismatch between the fuel gauge and the actual fuel level
P0462 Fuel level sensor circuit low input The sensor reads a lower level than is actually in the tank
P0463 Fuel level sensor circuit high input The sensor reads a higher level than is actually in the tank
P0622 Generator field “F” control circuit (alternator) An interrupted PWM signal that switches the alternator field on and off
P0480 Cooling fan 1 control circuit malfunction A faulty cooling fan relay or its wiring
P1389 No ASD relay output voltage (Chrysler, Dodge, Jeep) A fault in the automatic shutdown (ASD) relay power circuit

Fuel pump relay and shutdown relay faults on Chrysler, Dodge, Jeep, and Ram are also handled through the vehicle’s integrated power module. If a relay circuit rather than the engine computer is the problem, our TIPM repair service rebuilds the integrated power module you ship in.

Transmission (TCM) Codes

Transmission codes come from the transmission control module or the PCM section that manages shifting, and they cover shift solenoids, the torque converter clutch, and transmission relays. Symptoms include harsh or missed shifts, slipping, and limp mode.

Code Meaning Common cause
P0743 Torque converter clutch (TCC) circuit fault Excessive slip between the torque converter and the transmission input shaft, often a failing TCC solenoid
P0751 Shift solenoid “A” performance or stuck off Debris or a fluid-flow problem in the valve body
P0753 Shift solenoid “A” electrical / 1-2 shift circuit Irregular electrical activity, usually a faulty shift solenoid
P1765 Transmission control relay circuit (Chrysler, Dodge, Jeep) A faulty transmission control relay or open or shorted wiring

For Chrysler, Dodge, and Jeep platforms, the PCM and TCM functions are often combined in one module. Match a replacement by platform on our Jeep and Chrysler module pages.

Ignition and Camshaft Timing Codes

Ignition and camshaft codes cover the coil circuits and the camshaft position sensor, both of which control spark timing. A fault here often shows up as a misfire or a no-start.

Code Meaning Common cause
P0340 Camshaft position sensor circuit malfunction A failed cam position sensor or its wiring; can lose spark and injector timing
P0351-P0358 Ignition coil circuit fault (last digit = cylinder number) A failed coil pack or its wiring; the most common symptom is a cylinder misfire

Modern engines use a coil pack that sits directly on top of each spark plug to convert low primary voltage to the high voltage that fires the plug. When one coil circuit fails, the matching cylinder misfires.

Signs the Code Points to the Module, Not a Sensor

A code points to the engine computer itself, rather than a sensor, when the module fails its own tests or stops communicating. Most codes name a part the computer watches, but a handful point straight at the module. Watch for these signs:

  • The check engine light returns immediately after you replace the exact sensor the code named.
  • The engine cranks normally but will not start, and the computer is not pulsing the injectors or firing the spark.
  • The car stalls at random with no clear pattern, as if the module loses its place.
  • A scan tool cannot communicate with the module through the OBD-II port, which often means the module has lost power, ground, or has failed.
  • Several unrelated codes set at once, or an internal (P0601, P0603, P0606) or lost-communication (U0100) code is stored.

An error code does not always mean a bad computer. Before you replace the module, confirm it has clean battery voltage and solid grounds, and inspect the wiring harness and connectors for corrosion, moisture, or chafing. A damaged harness or a bad ground can mimic a failed module. When those check out and an internal or communication code remains, the module is the likely fault.

When an Error Code Means You Need a New Computer

When an internal module fault code or a lost-communication (U-series) code stays after you verify power, grounds, and wiring, the engine computer usually needs to be replaced and programmed to the vehicle. A module pulled from a salvage yard will not fix the problem on its own, because a replacement has to be programmed to your VIN before the anti-theft system will let the engine start. This is a common reason a used module fails to solve the issue.

Callout: a salvage-yard module still has to be programmed to your VIN
A salvage-yard module still needs VIN programming before the anti-theft system will let the engine start.

For most gas and diesel platforms, including Ford, Dodge, Jeep, Chrysler, Honda, Toyota, and the common Cummins and Power Stroke diesels, we ship a remanufactured module pre-programmed to your VIN, mileage, and latest factory software, with keys and most anti-theft systems pre-synced. Because it arrives programmed, most buyers install it and drive without a dealer visit. Every module runs through a 13-point quality check on a computer-aided vehicle simulator that tests each circuit under load before it ships, and it carries a free lifetime warranty when you return your old core, the original failed module.

Two segments work as a send-in repair instead of a shipped replacement. Mercedes ECU and PCM repair and Dodge, Chrysler, Jeep, and Ram TIPM repair are services where you ship your module in, and we rebuild, test, and reprogram it. You can read what buyers say about the process on our customer reviews page.

Frequently Asked Questions

Can I drive with a bad ECM?

Driving with a failing ECM is risky and often not possible. A bad engine computer can put the vehicle into limp mode, cause random stalling, or prevent the engine from starting at all. Even when the car still runs, a misreading module can dump extra fuel, foul the catalytic converter, or run the engine in a way that causes further damage. If the module has set an internal or no-communication code, address it before relying on the vehicle.

How do you clear an ECM code?

You clear an ECM code by erasing it with a scan tool through the OBD-II port, or by disconnecting the negative battery cable for a few minutes to reset the module. Both methods clear the stored code, but neither fixes the underlying fault. If the problem is still present, the computer will set the same code again on the next drive cycle.

What causes an ECM error code?

An ECM error code is caused by a fault the computer detects in a monitored circuit or in the module itself. Common triggers include failed sensors, corroded or broken wiring, moisture intrusion, poor grounds, low system voltage, a dead or weak battery, and improper jump-starts. Internal module fault codes are caused by a failure inside the module, not by an external part.

Can I replace an ECM myself?

Yes, replacing an ECM or PCM is a bolt-on job on most vehicles once you locate the module. It connects with one or more wiring harness plugs and a few mounting bolts. The one requirement is that the replacement is already programmed to your VIN, or the anti-theft system will not let the engine start. A module that ships pre-programmed removes the separate dealer programming step.

How much does it cost to fix an ECM?

A dealer ECM replacement is expensive because it bundles the module, VIN programming, and labor into one bill, often running several hundred to a few thousand dollars depending on the vehicle. A remanufactured module that ships pre-programmed to your VIN removes the separate programming fee. For a full breakdown, see our guide to engine control module replacement cost.

The Bottom Line

An ECM error code is the computer’s way of naming a fault, and reading it comes down to two questions: which system set it, shown by the first character, and whether the code points to a monitored part or to the module itself. Most codes name a sensor, an injector, or an emissions valve you can test and replace. Internal module fault codes and lost-communication codes in the U-series point at the engine computer, and those usually call for a replacement programmed to the vehicle.

We have built Car Computer Exchange on remanufactured, VIN-programmed vehicle computers since 2011, serving more than 150,000 customers, and every module ships tested and ready to install. Once your scan tool shows the code and you have ruled out wiring and grounds, find your exact ECM, PCM, or TCM by entering your year, make, and model.

Sources

  1. RepairPal: OBD-II Trouble Code Chart
  2. OBD-Codes: P0601 Internal Control Module Memory Checksum Error
  3. OBD-Codes: P0606 ECM/PCM Processor Fault
  4. Edmunds: P0135 O2 Sensor Heater Circuit (Bank 1, Sensor 1)
  5. YourMechanic: P2107 Throttle Actuator Control Module Processor
  6. AutoZone: Understanding OBD-II Diagnostic Trouble Codes
  7. Edmunds: How to Read and Understand Trouble Codes
Brian

About Brian

Diagnosing, repairing, and reprogramming the "digital brains" of modern vehicles. Years of specialized experience in ECM/PCM electronics and advanced automotive diagnostics. Making complex car tech simple.

Secret Link