If your scan tool has returned P0601, P0603, P0604, P0605 or P0606, you are looking at one of the few code families that points directly at the engine computer itself rather than at a sensor, a wire or a mechanical fault. This guide explains what each code means, how to confirm the module is genuinely at fault, and what to rule out first.

The short version
Most trouble codes describe a circuit the computer is watching. These five are different: they are the computer reporting a fault inside itself. That makes them unusually reliable indicators, but it does not make them proof on its own, and there are cheaper faults that imitate them.
What each code means
P0601 – Internal Control Module Memory Check Sum Error
The module ran a checksum on its own memory at startup and the result did not match what it expected. In practice this means the stored calibration has become corrupted. Common triggers are a failed reflash that was interrupted partway, a voltage drop during cranking, or age-related memory degradation.
P0603 – Internal Control Module Keep Alive Memory (KAM) Error
Keep alive memory is the small amount of data the module retains when the ignition is off – fuel trims, idle learn values, adaptive shift points. P0603 means that data was lost or failed its integrity check. This one has an important non-module cause: a weak or disconnected battery, or a poor ground, can wipe KAM and set the code without anything being wrong with the computer.
P0604 – Internal Control Module Random Access Memory (RAM) Error
A fault in the working memory the processor uses while running. Unlike KAM, this is not something a battery disconnect causes. P0604 usually indicates genuine hardware failure.
P0605 – Internal Control Module Read Only Memory (ROM) Error
The permanent programming has failed its check. ROM does not change in normal use, so this points to hardware degradation or a corrupted flash.
P0606 – Control Module Processor Fault
The processor itself failed an internal test. Of the five, this is the least ambiguous – a module setting P0606 repeatedly has almost always failed.
Before you replace anything
Every one of these codes can be triggered by conditions outside the module. Work through this list first, in order, because it costs nothing and it catches a meaningful share of cases.
1. Battery and charging voltage
Low or unstable voltage is the single most common cause of a false internal-memory code. Load test the battery. Check charging voltage at idle and at speed. A battery that reads fine at rest can still collapse under crank and confuse the module.
2. Grounds and connectors
Resistance in a module ground circuit produces symptoms indistinguishable from internal failure. Inspect the main engine-to-body and battery-to-body straps for corrosion. On the module connector itself, look for pushed-back or corroded pins – this is a known issue on JK Jeep Wranglers, where a damaged pin on the PCM C2 harness causes sensor ground loss.
3. Recent work
Did the code appear after a reflash, a jump start, welding on the vehicle, or an aftermarket accessory install? All four can corrupt module memory without the hardware being faulty. In some cases a reflash recovers it.
4. Clear and retest
Clear the code and drive the vehicle. A one-off P0601 or P0603 after a battery change frequently does not return. A code that comes back immediately, every time, is telling you something real.
When it is genuinely the module
Replace the computer when the code returns immediately after clearing, when the scan tool cannot communicate with the module at all, when several unrelated codes appear together for systems that share nothing, or when P0604, P0605 or P0606 are present with good battery voltage and clean grounds.
The failure nobody warns you about
On several engines a shorted ignition coil feeds voltage back into the coil driver circuit inside the module and destroys it. This is well documented on the Chrysler 3.6L Pentastar and on Ford modular V8s. It matters because if a coil killed your computer, fitting a replacement without replacing the coils will destroy the new one the same way.
If your module failed alongside misfire codes, replace all the ignition coils and spark plugs at the same time, using OEM parts. The same fault can also leave the alternator unable to charge, which is why a dead battery sometimes accompanies it.
Does a replacement need programming?
Yes, on essentially every vehicle built in the last twenty-five years. The module has to be matched to your VIN, and on most makes registered to the immobiliser and keys, or the engine will crank without starting. That is why a blank module bought cheaply often leaves a car turning over and never firing.
We programme every module to your VIN before it ships, so it installs and runs without a dealer visit or a locksmith. There is no core charge and nothing to send back.
Finding the right part
Read the service number from the label on your existing module and check it against our ECM and PCM part number lookup, which covers close to two thousand modules. If the label is unreadable, send us your VIN and we will identify it.
You can also browse by module type: engine control modules, transmission control modules, or body control modules.
Still not sure?
If you have one of these codes and you are not certain the module is the cause, call 516-494-7838 and talk it through with a technician before you spend anything. We would rather tell you it is your battery than sell you a computer you did not need.