Chevrolet Engine Error Codes Explained (GM OBD-II Fault Codes)
When your Chevrolet or GM vehicle flags a check-engine light, the engine control module (ECM) stores a diagnostic trouble code (DTC) that pinpoints the system at fault. The short answer for most owners: the vast majority of Chevrolet codes are generic OBD-II codes — they mean the same thing on any make — and they point to sensors, air-fuel mixture, ignition or emissions parts, not a dead engine. Only a small handful (jumped timing, widespread misfire with low compression) actually signal internal damage. Read the code with a scanner first, fix the cause, and you’ll usually avoid throwing parts — or a whole engine — at the problem. If a diagnosis does confirm serious internal damage and replacement is the sensible call, you can compare options through Chevrolet engines for sale on the Engine Finder marketplace.
This guide covers the codes South African owners of the Spark, Aveo, Sonic, Cruze, Utility (bakkie) and older diesel models see most often — with the correct SAE/GM meaning for each, the common real-world cause, and the typical fix.
Key Takeaways
| Code | What it means | Typical fix |
|---|---|---|
| P0011 | Camshaft timing over-advanced/retarded (Bank 1) | VVT solenoid, oil level/quality, timing chain |
| P0128 | Coolant below thermostat regulating temp | Stuck-open thermostat, low coolant |
| P0171 | System too lean (Bank 1) | Vacuum leak, MAF sensor, fuel delivery |
| P0172 | System too rich (Bank 1) | Leaking injector, faulty O2 sensor, fuel pressure |
| P0300 | Random/multiple-cylinder misfire | Spark plugs, coils, leads, fuel or compression |
| P0420 | Catalyst efficiency below threshold (Bank 1) | Catalytic converter, O2 sensor, exhaust leak |
| P0507 | Idle RPM higher than expected | Vacuum leak, dirty throttle body, IAC |
| P2135 | Throttle/pedal sensor voltage correlation | Throttle body sensor, pedal sensor, wiring |
💡 A single vacuum leak can set several codes at once — P0171 (lean), P0300 (misfire) and P0507 (high idle) often show together.
⚠️ These are the generic OBD-II definitions. Always confirm the exact code with a scan tool before buying parts — clearing a code without fixing the cause just brings the light back.
📩 Need a replacement engine or hard-to-find GM part? Request a quote through Engine Finder and get prices from used-engine suppliers and scrapyards across South Africa.
How to read a GM / Chevrolet trouble code
Every OBD-II code has five characters, and each one tells you something:
- First letter — the system: P = powertrain (engine/transmission), B = body, C = chassis, U = network/communication. Almost all engine faults start with P.
- First digit — 0 means a generic (SAE) code that means the same on every car; 1 means a manufacturer-specific (GM) code.
- Second digit — the sub-system: 1–2 = fuel & air metering, 3 = ignition/misfire, 4 = emissions (auxiliary), 5 = idle/speed control, 6 = computer/outputs, 7–8 = transmission.
- Last two digits — the specific fault.
So P0301 reads as: powertrain, generic, ignition/misfire, cylinder 1 misfire. You’ll need a basic OBD-II scanner (or a Bluetooth ELM327 dongle with a phone app) plugged into the 16-pin port under the dashboard to read and clear codes. Chevrolet and GM vehicles have used OBD-II since the 1996 model year, so every Spark, Aveo, Sonic, Cruze and Utility on SA roads is covered.
A quick note on “generic vs GM-specific”: almost every code below is a generic SAE code (first digit 0). GM does use its own P1xxx manufacturer-specific codes for deeper diagnostics, but the everyday check-engine faults are the generic ones — which is why a cheap scanner reads them fine.
Camshaft timing & VVT codes (P0011, P0012, P0014, P0015) {#p0011-p0012-p0014-p0015-camshaft-timing}
These relate to variable valve timing (VVT) — where the ECM adjusts camshaft position on the fly. (Note: on Chevrolet/GM this is the VVT system. “VANOS” is BMW’s name for its own system, not a GM term.) On these codes, “A” is the intake camshaft and “B” is the exhaust camshaft on Bank 1.
P0011 — “A” Camshaft Position, Timing Over-Advanced or System Performance (Bank 1). The ECM commanded a camshaft position but the intake cam is more advanced than it should be. Common causes: a stuck or faulty VVT (oil control) solenoid, low or dirty engine oil, a clogged oil passage, or a worn timing chain. Because dirty oil is the number-one trigger, a fresh oil-and-filter service with the correct grade is the first thing to try.
P0012 — “A” Camshaft Position, Timing Over-Retarded (Bank 1). The mirror image of P0011 — the intake cam is lagging the commanded position. Same suspects: VVT solenoid, oil level/pressure, and timing components.
P0014 — “B” Camshaft Position, Timing Over-Advanced or System Performance (Bank 1). The same fault as P0011 but on the exhaust (“B”) camshaft. Check the exhaust VVT solenoid and oil supply.
P0015 — “B” Camshaft Position, Timing Over-Retarded (Bank 1). The exhaust cam is more retarded than commanded. Symptoms include rough idle, hard starting, a rattle from the timing area and reduced fuel economy. Suspect the exhaust VVT solenoid, oil condition, or a stretched timing chain.
Timing correlation & cam/crank sensor codes (P0016, P0017, P0341, P0342) {#p0016-p0017-p0341-camshaft-correlation}
P0016 — Crankshaft Position / Camshaft Position Correlation (Bank 1, Sensor A). The crankshaft and camshaft positions don’t line up within specification. This is often a mechanical timing issue (stretched/jumped timing chain, worn tensioner, failed VVT phaser) rather than just a sensor — take it seriously, as a jumped chain can bend valves. On VVT engines, low or sludged oil is a frequent underlying cause.
P0017 — Crankshaft Position / Camshaft Position Correlation (Bank 1, Sensor B). The same correlation fault referenced to the “B” (exhaust) camshaft. Check timing components, the cam/crank sensors and their wiring.
P0341 — Camshaft Position Sensor “A” Circuit Range/Performance. The cam sensor signal is out of its expected range or not properly synchronised with the crank signal. Usual causes: a failing camshaft position sensor, a damaged reluctor/tone ring, or wiring/connector faults. If P0341 appears alongside P0016/P0017, treat it as a mechanical timing problem, not just a sensor.
P0342 — Camshaft Position Sensor “A” Circuit Low. The sensor’s signal voltage is lower than expected — typically a bad sensor, a short to ground, or a poor connection.
Air-fuel mixture codes (P0171, P0172, P2187, P2188, P2096) {#p0171-p0172-p2187-p2188-p2096-air-fuel-mixture}
These tell you whether the engine is running lean (too much air) or rich (too much fuel).
P0171 — System Too Lean (Bank 1). The mixture has too much air relative to fuel. The classic cause is unmetered air (a vacuum leak) — cracked intake hoses, a leaking intake manifold gasket or PCV plumbing — followed by a dirty/failing mass air flow (MAF) sensor, weak fuel pump or clogged injectors. Left unfixed, a lean mixture runs the engine hot and can cause misfires.
P0172 — System Too Rich (Bank 1). Too much fuel for the air. Common causes: a leaking or dripping fuel injector, high fuel pressure, an over-reporting (contaminated) MAF sensor telling the ECM more air is entering than really is, or a lazy upstream oxygen (lambda) sensor over-fuelling the engine. Symptoms include black smoke, a fuel smell and poor economy.
P2187 — System Too Lean at Idle (Bank 1). A lean mixture that shows up specifically at idle. It points to a small vacuum leak, a dirty throttle body, a weak fuel supply or a faulty oxygen/MAF sensor — this is a fuel-trim code, not a “voltage” code.
P2188 — System Too Rich at Idle (Bank 1). A rich mixture at idle. Suspect a leaking injector, high fuel pressure, a stuck-open EVAP purge valve, or a faulty MAF/oxygen sensor.
P2096 — Post-Catalyst Fuel Trim System Too Lean (Bank 1). The downstream (post-catalytic-converter) oxygen sensor sees a mixture that is too lean after the catalyst. Common causes are an exhaust leak ahead of the rear O2 sensor, a failing downstream oxygen sensor, or an underlying lean condition. Fix any exhaust leak first, since it fools the sensor.
Misfire & ignition codes (P0300, P0301–P0304, P0352) {#p0300-p0301-p0304-p0352-misfires-ignition}
A misfire means a cylinder isn’t burning fuel properly — you’ll feel a shudder, lose power and may see the check-engine light flash.
P0300 — Random/Multiple Cylinder Misfire Detected. More than one cylinder is misfiring, or the misfire moves around. Causes span the whole combustion picture: worn spark plugs, tired ignition coils or leads, a vacuum leak, low fuel pressure, or low compression across cylinders.
P0301 / P0302 / P0303 / P0304 — Cylinder 1 / 2 / 3 / 4 Misfire Detected. The last digit is the cylinder number. Because the fault is isolated to one cylinder, start there: swap the spark plug and coil to that cylinder, check the lead and injector, and if the misfire follows the parts you’ve moved, you’ve found it. If it stays put, test compression on that cylinder.
P0352 — Ignition Coil “B” Primary/Secondary Circuit Malfunction. A fault in the ignition coil circuit for the “B” coil — on most GM engines this is the coil serving cylinder 2. It is a single coil circuit, not “the second and third coils.” Check the coil, its connector and the primary/secondary wiring; a P035x code often shows up alongside the matching misfire code (e.g. P0302).
Catalytic converter codes (P0420, P0422) {#p0420-p0422-catalytic-converter}
P0420 — Catalyst System Efficiency Below Threshold (Bank 1). The catalytic converter isn’t cleaning the exhaust as well as it should — judged by comparing the upstream and downstream oxygen sensors. If both sensors read similar oxygen levels, the converter isn’t storing/converting properly. It’s often a worn catalytic converter, but a lazy downstream O2 sensor or an exhaust leak can trigger it too, so confirm before replacing the (expensive) cat.
P0422 — Main Catalyst Efficiency Below Threshold (Bank 1). A closely related fault — the main (primary) catalyst’s performance is below the required threshold. Diagnose the same way: verify the oxygen sensors and check for exhaust leaks before condemning the converter.
Idle control code (P0507) {#p0507-idle-control}
P0507 — Idle Air Control System RPM Higher Than Expected. The engine idles faster than the ECM commands. The most common cause is a vacuum leak, followed by a dirty throttle body or a sticking idle air control (IAC) valve. On drive-by-wire engines, a dirty throttle body throwing off the idle relearn is a frequent culprit — cleaning the throttle body resolves many P0507s.
Cooling & thermostat code (P0128) {#p0128-thermostat}
P0128 — Coolant Temperature Below Thermostat Regulating Temperature. The ECM has calculated that the engine should have reached operating temperature by now but the coolant sensor still reads too cold. On Chevrolet models (Spark, Aveo, Cruze, Utility, and older GM trucks) this is almost always a thermostat stuck open — so the engine never fully warms up — followed by low coolant level or a faulty coolant temperature sensor. It’s not an internal-engine fault: the usual fix is a new thermostat. Left unaddressed it worsens fuel economy and cabin heating.
(Some GM models with an electronically-heated map thermostat instead throw P0597/P0598 — “Thermostat Heater Control Circuit Open/Low” — which are wiring/heater-element faults on that specific thermostat, not the common stuck-thermostat P0128 above.)
Throttle & pedal codes (P0222, P2104, P2135, P2138) {#p0222-p2104-p2135-p2138-throttle-pedal}
P0222 — Throttle/Pedal Position Sensor/Switch “B” Circuit Low Input. The ECM sees a lower-than-expected voltage from the “B” throttle or accelerator pedal position sensor. This is a sensor-signal fault (low voltage), not a blown throttle motor — check the sensor, its 5V reference and signal wiring, and connectors for corrosion.
P2104 — Throttle Actuator Control System, Forced Idle. The ECM has detected a serious throttle-control fault and put the engine into a limp/forced-idle mode, so the throttle won’t respond. Causes include a failed throttle body (actuator), wiring faults or an ECM issue.
P2135 — Throttle/Pedal Position Sensor/Switch “A”/“B” Voltage Correlation. The two throttle (or pedal) position sensors disagree with each other. Drive-by-wire systems use redundant sensor pairs for safety, so a mismatch usually triggers reduced-power/limp mode. Common culprits: a failing throttle position sensor inside the throttle body, a faulty accelerator pedal sensor, or wiring/connector faults between them.
P2138 — Throttle/Pedal Position Sensor/Switch “D”/“E” Voltage Correlation. As P2135 but on the “D”/“E” sensor pair — typically the accelerator pedal sensors. Suspect the pedal position sensor assembly or its wiring.
Which of these mean major engine damage?
Most codes here are cheap sensor or emissions faults. The ones to take seriously as potential internal damage:
- P0016 / P0017 (timing correlation) — a jumped or stretched timing chain can let pistons and valves collide. If the engine also rattles on start-up or runs rough, stop driving and diagnose before it grenades.
- P0300 with low compression — a random misfire caused by worn spark plugs is trivial; a random misfire that comes back after new plugs/coils and shows low compression on multiple cylinders points to worn rings, burnt valves or a head-gasket problem.
- P0301–P0304 that won’t move — if a single-cylinder misfire stays put after you’ve swapped the plug, coil and injector, a compression test that reads low on that cylinder means mechanical damage, not an ignition part.
Everything else — lean/rich mixture, catalyst, idle, throttle, thermostat, VVT-solenoid codes — is a repair, not a replacement decision.
When it’s smarter to source a used engine
If a diagnosis confirms bent valves from a jumped chain, low compression across several cylinders, or a cracked block/head, the sums change. A full internal rebuild on a Spark, Aveo or Cruze can approach — or exceed — the price of a good, low-kilometre used engine fitted. At that point it’s worth getting comparison quotes rather than committing to an open-ended repair.
You can request prices from used-engine suppliers and scrapyards across South Africa through Chevrolet engines for sale on Engine Finder — one enquiry reaches multiple suppliers, so you can weigh a repair quote against a replacement before you decide.
Frequently Asked Questions
Can I keep driving my Chevrolet with the check-engine light on? It depends on the code. A steady light for something like P0420 (catalyst) can often be driven on for a short while, but a flashing light — or misfire codes like P0300/P0301 — means active damage risk (raw fuel can destroy the catalytic converter). Get it diagnosed promptly and avoid hard driving.
Will clearing the code fix the problem? No. Clearing a DTC only switches off the light; if the underlying fault is still there, the code returns — often within a few drive cycles. Always fix the cause, then clear the code to confirm it stays gone.
Do I need a Chevrolet-specific scanner? For generic P0xxx codes (which is most engine faults), any OBD-II scanner or a cheap Bluetooth ELM327 dongle with a phone app will read and clear them. Manufacturer-specific P1xxx codes and deeper GM diagnostics may need a more capable tool.
Several codes came up at once — where do I start? Fix the most fundamental fault first. A vacuum leak, for example, can set lean (P0171), misfire (P0300) and high-idle (P0507) codes together — repair the leak and the others often clear. Work from causes to symptoms, not the reverse.
When is it cheaper to replace the engine than to repair? When you’re facing major internal damage — a jumped timing chain that bent valves, or low compression across multiple cylinders. At that point compare a repair quote against a good used replacement. You can get prices from suppliers and scrapyards through Chevrolet stripping for spares and used-engine listings on Engine Finder.
Sources
- AutoZone — P0011: “A” Camshaft Position, Timing Over-Advanced or System Performance (Bank 1)
- AutoZone — P0128: Coolant Temperature Below Thermostat Regulating Temperature
- AutoZone — P2096: Post Catalyst Fuel Trim System Too Lean (Bank 1)
- RepairPal — P0507: Idle Air Control System RPM Higher Than Expected
- Kelley Blue Book — P2135: Throttle/Pedal Position Sensor/Switch “A”/“B” Voltage Correlation
Related Articles
Explore more insights on similar topics

Nissan NP200 Gearbox Problems: JR5 Manual, Clutch & Costs (SA Guide)
Nissan NP200 gearbox problems explained — the Renault JR5/JH3 manual, crunchy shifts, 5th-gear whine, soft-clutch cylinder faults, and what a used or recon NP200 gearbox costs in SA.

BMW B47 Engine Problems: EGR Recall & SA Repair Costs (2026)
BMW fixed the N47's chain-snap epidemic with the B47 — but the EGR cooler fire-risk recall, DPF clogging and carbon build-up became the new headaches. Symptoms, SA repair costs, and when a used engine wins.

Toyota Hilux Gearbox Problems: GD6, 4Y, Auto & Manual (SA Guide)
Toyota Hilux gearbox problems explained, manual & auto faults, clutch costs, GD6 vs older boxes, and how to compare Hilux gearbox prices in SA.
Important Disclaimer
This content is for informational purposes only and is based on research from automotive industry sources. Engine Finder is not a certified automotive repair facility. Always consult with qualified automotive professionals before performing any repairs or maintenance. Improper repairs can result in personal injury, property damage, or vehicle malfunction. We assume no responsibility for actions taken based on this information.