290B00 and 290900 Fault Codes: EGR Air Mass Flow Deviation (BMW Diesel)
290B00 and 290900 are sibling codes: the DDE compares measured air mass against its calculated value and stores 290B00 when it is too low, 290900 when it is too high. If both set together, look at the measurement or software side.
— Tekin Code
290B00 and 290900 are sibling codes stored by the DDE on BMW diesels, describing two directions of the same measurement. Both sit under the heading "air system, air to EGR mass flow, plausibility": the DDE compares the fresh air mass measured by the MAF sensor against its own calculated value. If the measured value is clearly lower than calculated it stores 290B00; if it is clearly higher it stores 290900. They are very common on N47 and B47 engines, and forum cases such as a 2014 535d or a 2016 MINI Cooper SD frequently show both setting at the same time.
What Do 290B00 and 290900 Mean?
Understanding the logic is half the diagnosis. The DDE commands a position to the EGR valve and, based on that position, calculates how much fresh air should enter the cylinder. If EGR really is flowing, exhaust gas displaces fresh air and the MAF reads a lower value. That is why each direction describes a different scenario.
• 290900 (measured air mass too high): more fresh air is entering than expected, which means EGR is not actually flowing. The classic cause is an EGR cooler blocked with soot or an EGR valve that cannot open.
• 290B00 (measured air mass too low): less fresh air is entering than expected, so either EGR is flowing more than commanded (the valve will not close) or the MAF sensor is under-reading.
• Both together: the directions contradict each other. A single mechanical cause cannot explain both, so suspicion shifts to the measurement side (MAF drift, an intake leak, a blocked exhaust pressure pipe) or to the DDE software calibration.
Code .............. 290900
Definition ........ Air system, air to EGR mass flow, plausibility:
measured air mass too high compared with calculated
Code .............. 290B00
Definition ........ Same measurement, opposite direction: measured air mass too low
Module ............ DDE (Diesel Engine Control Unit)
Related codes ..... 4501 (EGR control deviation), 4B90 (EGR system fault),
245700/245800 (DPF loaded), 244C00 (charge pressure deviation)
Severity .......... Moderate - power limitation, emissions and DPF impact
Common engines .... N47, B47, N57, B57
The code does not say "the EGR is broken", it says "the air calculation does not add up". So before replacing anything, always establish which direction the deviation runs — the direction changes the entire diagnosis.
Symptoms
• Check Engine light and, on some cars, a "Drivetrain" warning.
• Power limitation or limp mode; usually not abrupt, more a creeping sense of restriction.
• Rough idle, with running problems more noticeable when cold.
• Higher fuel consumption and black smoke under load.
• DPF regeneration starting frequently or failing to complete.
• The code sometimes staying away for days after being cleared (intermittent character).
• Raised NOx values in an emissions test.
Possible Causes
• EGR cooler blocked with soot — exhaust gas passes through too slowly and actual EGR flow stays below target. The most common cause of 290900.
• EGR valve coated in carbon or seized, unable to open or to close.
• Contaminated or drifted MAF (mass air flow) sensor — if the measurement is wrong, the DDE's comparison is wrong too.
• Intake or charge air leak: loose clamp, cracked pipe, split coupler.
• Exhaust pressure pipe (differential pressure hose) blocked with soot.
• Sticking EGR cooler bypass flap.
• On vacuum-operated systems, a cracked vacuum hose or a weak vacuum pump.
• Raised exhaust back pressure from a loaded DPF, indirectly disturbing EGR flow.
• An unfavourable DDE software calibration — BMW recommends reprogramming in this type of case.
• A faulty swirl flap mechanism, disturbing airflow and shifting the calculation.
Diagnostic Steps with OBDThink
With these codes the goal is to separate a genuine deviation from a measurement error. Follow the order and you will avoid removing an EGR cooler for nothing.
• 1. Scan all modules and compare the frequency counters of both codes. Is it only 290900, only 290B00, or both? That single piece of information decides your path.
• 2. Check what else is stored: 4501, 4B90, 245700/245800 or charge pressure codes usually point to where the root cause really is.
• 3. Read the freeze frame: at what RPM, load and coolant temperature was the code stored? EGR works mostly at part load on a warm engine, so a code from that region is expected.
• 4. Watch MAF live at idle and at 2000 RPM; if it is outside the expected range, validate the sensor first.
• 5. Watch EGR target and actual position together: if the command changes and position does not follow, the valve is stuck.
• 6. If you can run a test that disables EGR, see how much MAF changes; a very small change means EGR is not really flowing.
• 7. Pressure- or smoke-test the intake and charge air system for leaks.
• 8. Evaluate DPF soot load and exhaust back pressure; if they are high, deal with that first.
Reference values (vary by engine)
Idle (engine warm, EGR active):
MAF ..................... roughly 10 - 20 kg/h
EGR target/actual ....... deviation should stay < 5%
2000 RPM, part load:
MAF ..................... roughly 25 - 45 kg/h
MAF with EGR active ..... clearly lower than with EGR closed
EXAMPLE OF A FAULT:
290900 set, MAF 25% above calculated -> EGR not flowing (sooted cooler/valve)
290B00 set, MAF below expected -> EGR flowing too much, or MAF drifted
Both set, nothing else stored -> evaluate measurement/software side
On cars such as the F56, when air/boost codes of this type have set fewer than four times and no other codes are stored, BMW recommends an ISTA/P software update rather than parts replacement (NHTSA TSB MC-10148057). So if the counter is low, check the software level first — on many cars this step removes any need to take the EGR cooler off.
The Fix
• Software update: the first step when the code counter is low and nothing else is stored. Low cost and, in many cases, all that is required.
• MAF sensor: clean with a dedicated cleaner if contaminated, replace if the drift persists. Low cost.
• Intake/charge air leak repair: clamps, hoses, pipes and O-rings. Low cost.
• Cleaning the exhaust pressure hose: remove and clear it when soot has blocked it. Low cost.
• EGR valve cleaning or replacement: clean carbon deposits, replace on mechanical failure. Moderate cost.
• EGR cooler: clean or replace when blocked; on some engines this is covered by a recall, so ask your dealer. Moderate to high cost.
• Swirl flap mechanism: repair or replace if it is sticking. Moderate cost.
• DPF: regenerate first when soot load is high, clean it if the blockage is permanent. Moderate to high cost.
After replacing an EGR valve or cooler, remember to reset the adaptation values. Fitted without a relearn, the DDE keeps working with the old deviation and the code comes back.
Can You Still Drive With These Codes?
In the short term this is not critical for safety, but it should not be ignored: disturbed EGR flow increases soot production, which fills the DPF quickly. A small sensor or software issue can turn into a far more expensive DPF repair within a few thousand kilometres. If the car drops into limp mode, be careful in traffic because of the sudden power loss.
Clearing codes is particularly misleading with this pair, because the deviation can be intermittent and the code may stay away for days. The right approach: first establish the direction of the deviation, validate the measurement side, have the software level checked if needed, then do the mechanical repair. Afterwards clear the fault memory with OBDThink and watch MAF and EGR position live at part load on a warm engine across several drive cycles. If the deviation stays within range and the codes stay away, the job is done.