Home › Fault codes
BMW fault codes
What the most-searched BMW engine fault codes mean, whether you can keep driving, and what usually causes them, with BMW's own bulletins and repair prices. 62 codes on 19 pages.
Last updated
P-codes and BMW codes
- P-codes (P0171, P0456…) are the generic OBD-II codes every car uses. Any code reader shows them.
- BMW codes (2A82, 120308, 801C20…) are BMW's own fault codes, read with a BMW-capable scanner. They are more specific, and BMW's bulletins are written around them.
- One fault often shows as a P-code on a basic reader and as a BMW code on a BMW tool, so each page lists both where we could confirm them.
Looking for paint or option codes? They are under paint and option codes.
Pages
| Page | What it covers |
|---|---|
| P0171 / P0174 (lean) | The engine computer is adding more fuel than it expects to, usually because unmetered air is getting in. Most often a vacuum or crankcase ventilation leak on a BMW. |
| P0011 / P0012 / P0014 / P0015 (cam timing) | The variable cam timing (VANOS) isn't moving a camshaft to where the engine computer asked. On BMWs that usually means oil supply, a VANOS solenoid or, less often, the VANOS gears or timing. |
| 2A82 / 2A87 (VANOS) | BMW's own codes for VANOS (variable cam timing) that is slow or stuck. Common on N51, N52, N54 and N55 sixes. Oil supply and the solenoids come first. |
| 2A9A / 2A9B (cam sensor) | The engine computer can't line up the camshaft signal with the crankshaft. On N52 sixes BMW traced many cases to a sticking VANOS solenoid, not the sensor. |
| P0456 (EVAP small leak) | The fuel vapour system failed its own leak test by a small margin. It doesn't affect how the car drives. On BMWs, check the fuel cap, then the leak detection module. |
| 2A15 / 2A17 / 2A19 (EVAP, older BMWs) | Codes from the fuel vapour system on E-series BMWs. 2A15 is a small leak; 2A17 is the leak-test pump itself; 2A19 is the purge valve circuit. |
| P0300–P0306 (misfire) | One or more cylinders aren't firing properly. On BMWs: ignition coils and spark plugs first, then injectors (N54 and N63 especially). |
| P0299 / 120308 (underboost) | The turbo isn't making the boost the engine computer asked for, so it cuts power (failsafe). Usually a leak in the intake or a boost control problem, not the turbo itself. |
| P0087 / 29F2 / 29DC (N54 fuel pressure) | Fuel pressure is below what the engine asked for. On the N54 twin-turbo six, the high-pressure fuel pump (HPFP) is the classic cause, and BMW extended its warranty. |
| 2AAF (N54 fuel pump plausibility) | On its own, BMW says 2AAF on the N54 is a sensitive diagnosis, not a failed fuel pump. Only investigate if it comes with other low-pressure faults. |
| P1290 / 123401 (wastegate) | The engine computer couldn't learn the end positions of the electric wastegate actuator on a cold start. Check the linkage and actuator; on some B-series engines BMW traced it to wiring interference. |
| P112F / 101F01 (throttle vs manifold pressure) | The intake manifold pressure doesn't match what the throttle position says it should be. On the N55, BMW has a bulletin; vacuum leaks and the throttle body are the usual suspects. |
| P0128 / 1D2008 (thermostat open) | The engine takes too long to warm up, usually because the thermostat is stuck open. BMW has bulletins for both real failures and false codes. |
| P0597 (thermostat heater circuit) | An electrical fault in the heating element that lets the engine computer open the thermostat early. Wiring or the thermostat itself. |
| P0420 (catalyst efficiency) | The rear oxygen sensor shows the catalytic converter isn't cleaning the exhaust enough. Check for upstream causes before replacing the converter. |
| 2A3F (Valvetronic power) | The Valvetronic motor, which controls engine breathing instead of a throttle, has lost its power supply. Expect limp mode. Check the relay, fuse and motor. |
| 2AA9 (DISA intake valve) | A fault with the smaller of the two intake-manifold flaps (DISA valves) on N52 sixes. Not a VANOS fault, despite what some forums say. |
| 801C20 (central fault memory full) | Not a broken part. The central gateway's fault log is full and can't store new entries. Fix whatever is filling it, then clear it with a BMW-capable tool. |
| 1C4002 (oil level too low) | The electronic oil level sensor reads low. Check the oil before anything else; on some N63TU cars a cluster software error hid the warning. |
Every code on this site
| Page | ||
|---|---|---|
| 101F01 | Throttle valve opening angle / absolute pressure intake pipe comparison: pressure too high (F-series) | P112F / 101F01 (throttle vs manifold pressure) |
| 118001 | Mixture control: fuel-air mixture too lean (F-series) | P0171 / P0174 (lean) |
| 118101 | Mixture control 2: fuel-air mixture too lean | P0171 / P0174 (lean) |
| 120208 | Charging pressure control plausibility: pressure too high | P0299 / 120308 (underboost) |
| 120308 | Boost pressure control, plausibility: pressure too low (F-series) | P0299 / 120308 (underboost) |
| 120408 | Charging pressure control: switching off | P0299 / 120308 (underboost) |
| 121001 | Catalytic converter: efficiency too low (i3 REx) | P0420 (catalyst efficiency) |
| 123401 | Electrical wastegate valve, adaptation: cold start not learned | P1290 / 123401 (wastegate) |
| 123411 / 123412 | Electrical wastegate valve, limit position teach-in: end stop (wastegate open) not found | P1290 / 123401 (wastegate) |
| 123437 | Electrical wastegate valve: jammed closed | P1290 / 123401 (wastegate) |
| 190302 | Fuel tank ventilation and purge air system, micro leak: leakage greater than 0.5 mm | P0456 (EVAP small leak) |
| 194006 | Tank leakage detection module, solenoid valve: jammed open | P0456 (EVAP small leak) |
| 1C4002 | Engine oil level: too low | 1C4002 (oil level too low) |
| 1D2008 | Map thermostat (mechanical): jammed open | P0128 / 1D2008 (thermostat open) |
| 1D2009 | Characteristic map thermostat: clamped closed | P0128 / 1D2008 (thermostat open) |
| 1D2401 | Characteristic map thermostat, actuation: short circuit to B+ | P0597 (thermostat heater circuit) |
| 1D2402 | Characteristic map thermostat, actuation: short circuit to ground | P0597 (thermostat heater circuit) |
| 1D2404 | Characteristic map thermostat, actuation: line disconnection | P0597 (thermostat heater circuit) |
| 2882 | DME: mixture control bank 1 | P0171 / P0174 (lean) |
| 2883 | DME: mixture control bank 2 | P0171 / P0174 (lean) |
| 28A0 | Same check, older DME software | P112F / 101F01 (throttle vs manifold pressure) |
| 29CC | Misfirings, several cylinders (E-series sixes) | P0300–P0306 (misfire) |
| 29CD–29D2 | Misfirings, cylinder 1–6 | P0300–P0306 (misfire) |
| 29DC | Cylinder injection cut-out: pressure too low in high-pressure system | P0087 / 29F2 / 29DC (N54 fuel pressure) |
| 29E0 | DME: fuel mixture control (BMW E-series) | P0171 / P0174 (lean) |
| 29E1 | DME: fuel mixture control 2 | P0171 / P0174 (lean) |
| 29F2 | Fuel high pressure: fuel pressure undershot | P0087 / 29F2 / 29DC (N54 fuel pressure) |
| 2A15 | Fuel tank ventilation and scavenging air system: fine leak | 2A15 / 2A17 / 2A19 (EVAP, older BMWs) |
| 2A17 | DMTL (tank leak diagnosis module): system failure | 2A15 / 2A17 / 2A19 (EVAP, older BMWs) |
| 2A19 | Tank venting valve: output stage | 2A15 / 2A17 / 2A19 (EVAP, older BMWs) |
| 2A3F | Valvetronic, actuator: power supply | 2A3F (Valvetronic power) |
| 2A77 | Controller, internal error: Valvetronic output stage | 2A3F (Valvetronic power) |
| 2A7A | VANOS, exhaust, cold start | 2A82 / 2A87 (VANOS) |
| 2A7C | VANOS, inlet, cold start | 2A82 / 2A87 (VANOS) |
| 2A82 | VANOS intake: stiff, jammed mechanically (also "variable cam control test") | 2A82 / 2A87 (VANOS) |
| 2A87 | VANOS exhaust: stiff, jammed mechanically | 2A82 / 2A87 (VANOS) |
| 2A98 | Crankshaft–inlet camshaft correlation: value outside reference range | 2A9A / 2A9B (cam sensor) |
| 2A99 | Crankshaft–exhaust camshaft correlation: value outside reference range | 2A9A / 2A9B (cam sensor) |
| 2A9A | Cam sensor, inlet signal: signal invalid for synchronization | 2A9A / 2A9B (cam sensor) |
| 2A9B | Cam sensor, exhaust signal: signal invalid for synchronization | 2A9A / 2A9B (cam sensor) |
| 2AA9 | Variable intake system: servo motor 2 activation | 2AA9 (DISA intake valve) |
| 2AAF | Fuel pump plausibility: integral component outside valid range | 2AAF (N54 fuel pump plausibility) |
| 2B16–2B1D, 2B22 | Engine misfires, individual cylinders / several cylinders (N63 V8, E71 X6) | P0300–P0306 (misfire) |
| 2C57 | Boost pressure control, plausibility: pressure too low (E-series) | P0299 / 120308 (underboost) |
| 2FBF | Fuel high pressure: plausibility (stored alone with the light on) | P0087 / 29F2 / 29DC (N54 fuel pressure) |
| 801C20 | Central gateway module (ZGM): central fault memory full | 801C20 (central fault memory full) |
| P0011 | "A" (intake) camshaft position: timing over-advanced or system performance (bank 1) | P0011 / P0012 / P0014 / P0015 (cam timing) |
| P0012 | "A" (intake) camshaft position: timing over-retarded (bank 1) | P0011 / P0012 / P0014 / P0015 (cam timing) |
| P0014 | "B" (exhaust) camshaft position: timing over-advanced or system performance (bank 1) | P0011 / P0012 / P0014 / P0015 (cam timing) |
| P0015 | "B" (exhaust) camshaft position: timing over-retarded (bank 1) | P0011 / P0012 / P0014 / P0015 (cam timing) |
| P0087 | Fuel rail/system pressure too low | P0087 / 29F2 / 29DC (N54 fuel pressure) |
| P0128 | Coolant thermostat (coolant temperature below thermostat regulating temperature) | P0128 / 1D2008 (thermostat open) |
| P0171 | System too lean (bank 1) | P0171 / P0174 (lean) |
| P0174 | System too lean (bank 2) | P0171 / P0174 (lean) |
| P0299 | Turbocharger/supercharger "A" underboost condition | P0299 / 120308 (underboost) |
| P0300 | Random/multiple cylinder misfire detected | P0300–P0306 (misfire) |
| P0301–P0306 | Cylinder 1–6 misfire detected | P0300–P0306 (misfire) |
| P0420 | Catalyst system efficiency below threshold (bank 1) | P0420 (catalyst efficiency) |
| P0456 | Evaporative emission system: small leak detected | P0456 (EVAP small leak) |
| P0597 | Thermostat heater control circuit open | P0597 (thermostat heater circuit) |
| P112F | Manifold absolute pressure to throttle angle: too high (bank 1), = BMW 101F01 | P112F / 101F01 (throttle vs manifold pressure) |
| P1290 | Cold start turbocharger wastegate stop not learned (as reported on N20 cars) | P1290 / 123401 (wastegate) |
Tap a column header to sort.
A warning message on the dash? See BMW warning lights explained.
Sources
- OBD-Codes.com: generic OBD-II definitions
- BMW service bulletins filed with NHTSA, linked on each page (all bulletins)
- BMW SI B07 03 14: Diagnosing stored fault codes to help avoid repeat repair visits (NHTSA)