BMW fault code 2AAF / P10C5 (N54, N55): fuel pump plausibility — the EKP code that precedes every starvation story
2AAF means the DME cross-checked low-side fuel pressure against expectation and it didn't add up. Factory test path, the EKP story, and the upgrade decision.
2AAF is the low-pressure fuel system's honesty test: the DME ran a plausibility check on the low-side (EKP) fuel pump delivery and the numbers didn't match expectation. On N54/N55 it's the early-warning code for fuel starvation — the one that shows up as a high-pressure-fuel code later, after a pull leans out.
What the factory document says
ISTA · factory document2AAF / P10C5 — Fuel pump, plausibility (factory fault doc)Opens in your account's service knowledge — sign-in required.The check is active with terminal 15 on and 3 seconds after start, between coolant temps of −20 °C and 105 °C, tank level above 5 liters, engine speed 600–7,000 rpm, evaluated over 2 seconds. The factory test path is short and good: run the plausibility check on the low-pressure sensor by comparing the DME's monitored value against an actual mechanical pressure gauge; if the two match, replace the EKP (pump control module). In other words — trust, then verify the sensor, then blame the pump system.
What usually actually causes it
Community ranking, paraphrased:
- **A tired in-tank low-pressure pump** — the classic N54/N55 aging story. Delivery sags under load; the DME notices the discrepancy. The 2AAF is your polite notice before it becomes fuel-cut stumble.
- **EKP module faults** — the controller itself, exactly as the factory test concludes when sensor data checks out.
- **Wiring and connections** to pump or module — corroded grounds and connectors sag under current draw.
- **Tune demand exceeding stock delivery** — added boost or [E85](../why-e85-changes-your-boost-targets) raises flow demand; a pump that was fine on stock tune sets 2AAF the week after a flash. That's not a fault, that's physics.
The fix path
- Gauge-verify the low-side pressure per the factory test before replacing anything — the DME value vs a mechanical gauge sorts sensor-vs-system in ten minutes.
- Confirmed weak delivery on a stock-ish car → pump replacement; on a tuned car, skip straight to the [LPFP upgrade guide](../lpfp-upgrade-guide) — doing the job twice is the expensive path.
- Big-power plans → [port injection](../port-injection-guide) takes load off the low side entirely.
- Watch low-side pressure under a logged pull: [reading your datalog](../reading-your-datalog) shows the sag before the code sets.