Exhaust leak upstream of the upstream sensor
An exhaust leak ahead of the upstream sensor lets air in on each pulse. The sensor sees extra oxygen and the trims add fuel at idle, fading with load. The MAF agrees with the estimate, no cylinder misfires, and on a V engine only one bank is fooled.
Fingerprint
Trims positive at idle, near zero at cruise Must be present
Rule: Idle total trim at least +8 percent and at least 6 points above cruise.
The leak pulls air in on each exhaust pulse. The pulses dominate at idle, so the sensor sees extra oxygen there and the module adds fuel; with more flow the effect fades.
MAF agrees with the speed density estimate everywhere Must be present
Rule: Airflow check between 95 and 105 percent in all four cells.
The MAF agrees with the estimate: no air is getting into the intake, so this is not unmetered air.
Only one bank is affected Supports it on a V engine
Rule: On a dual bank engine, the two banks' total trims differ by at least 5 points in some cell.
Only the bank whose sensor sits behind the leak is fooled.
Misfire counts on one cylinder Must be absent
Rule: At least 20 misfires per 1,000 revolutions on one cylinder in some cell.
It belongs to a neighbouring fault.
Downstream sensor sits rich in closed loop Must be absent
Rule: Downstream sensor at least 0.78 V at idle and at cruise.
It belongs to a neighbouring fault.
Why the numbers move
Between exhaust pulses the pressure at a leak dips below atmospheric and air is pulled in. At idle the pulses dominate the flow, so the pulled in air is a noticeable share of the exhaust; as flow rises it is drowned out, and at WOT the leak pushes gas out instead. The sensor reads the extra oxygen as a lean mixture, so the module adds fuel and the engine actually runs rich.
Downstream, the converter sees the same mixed gas the upstream sensor saw, so the downstream sensor sits at a normal steady voltage. No air entered the intake, so the MAF agrees with the estimate: that is what separates an exhaust leak from a vacuum leak with the same trim shape.
The reference numbers
Computed by the model at build time: the fault at its clean reference size on a 3.5 l v6, dual bank, wideband air fuel sensors, with no noise. The fault sits on bank 2; bank 1 is healthy.
| Reading | Idle | 2,500 rpm, no load | Cruise | WOT snapshot |
|---|---|---|---|---|
| Total trim bank 1 (%) | 0.0 | 0.0 | 0.0 | open loop |
| Total trim bank 2 (%) | +12.0 | +5.3 | +3.8 | open loop |
| Airflow check (%) | 100 | 99 | 99 | 100 |
| MAF (g/s) | 4.59 | 12.72 | 19.10 | 146.81 |
| MAP (kPa) | 30.0 | 21.0 | 38.0 | 97.0 |
| Upstream B1S1 | lambda 1.00 | lambda 1.00 | lambda 1.00 | lambda 0.85 |
| Upstream B2S1 | lambda 1.00 | lambda 1.00 | lambda 1.00 | lambda 0.82 |
| Downstream B1S2 (V) | 0.66 | 0.66 | 0.66 | 0.90 |
| Downstream B2S2 (V) | 0.66 | 0.66 | 0.66 | 0.90 |
| ECT (C) | 90 | 90 | 90 | 90 |
| Misfire per 1,000 revs | 0 | 0 | 0 | 0 |
Easy to confuse with
- Vacuum leak. Both raise the trims at idle. The airflow check splits them: unmetered air leaves the MAF short of the estimate at idle; an exhaust leak adds no intake air, so the MAF agrees.
- Upstream O2 or A/F sensor biased lean. Both fool the upstream sensor into reading lean. A bias is the same share at every load and the downstream sensor sits rich; an exhaust leak fades as airflow rises and the downstream sensor sees the mixed gas at stoichiometry.
- Single cylinder misfire. Both fool the upstream sensor. Misfire counts and a rich downstream sensor point to the misfire; an exhaust leak shows neither.
On a real car
- Listen and look for a leak at the manifold and flange at cold start.
- Smoke test the exhaust as the service information allows.
TrimCase is a training aid built on a simulated engine model. It is not a diagnostic instruction for any real vehicle. Follow the service information for the vehicle in front of you.
Where the model is simpler than an engine
The model treats the leaked air as mixed into the exhaust before both sensors. A leak between the upstream sensor and the converter would behave differently.
The full model is on how the model works.
An example case
Case C-ES-0, clean tier. Open it in projection mode.
Case C-ES-0
- Engine
- 3.5 L V6, dual bank, wideband air fuel sensors
- Customer says
- Poor fuel economy
- Check engine light
- Off
- Tier
- Single fault, clean
Warm engine, sea level, 100 kPa barometric pressure. Simulated data for training, not from a real vehicle.
Freeze frame
No code stored. Snapshot saved by the technician at warm idle.
- Codes
- None stored
- Captured at
- Idle
- Engine speed
- 658 rpm
- Vehicle speed
- 0 mph
- Calculated load
- 20.6 %
- MAP
- 30.0 kPa
- MAF
- 4.62 g/s
- ECT
- 90 C / 194 F
- IAT
- 37 C / 99 F
- Fuel system
- Closed loop
- STFT / LTFT bank 1
- +0.9 % / +10.1 %
- STFT / LTFT bank 2
- +0.2 % / 0.0 %
Live data by load cell
| PID | Idle | 2,500 rpm, no load | Cruise | WOT snapshot |
|---|---|---|---|---|
| Engine speed (rpm) | 658 | 2489 | 1800 | 5005 |
| Vehicle speed (mph) | 0 | 0 | 60 | 45 |
| MAP (kPa) | 30.0 | 20.8 | 38.0 | 97.1 |
| MAF (g/s) | 4.62 | 12.46 | 19.12 | 145.49 |
| Airflow check, MAF as % of speed density estimate (%) worked out | 99 | 99 | 99 | 99 |
| Calculated load (%) | 20.6 | 14.7 | 31.2 | 85.3 |
| IAT | 37 C / 99 F | 35 C / 95 F | 29 C / 84 F | 29 C / 84 F |
| ECT | 90 C / 194 F | 90 C / 194 F | 90 C / 194 F | 90 C / 194 F |
| Fuel system | Closed loop | Closed loop | Closed loop | Open loop |
| STFT bank 1 (%) | +0.9 | +1.2 | -0.6 | 0.0 |
| LTFT bank 1 (%) | +10.1 | +4.5 | +3.2 | +3.2 |
| Total trim bank 1 (%) worked out | +11.0 | +5.7 | +2.6 | +3.2 |
| STFT bank 2 (%) | +0.2 | -0.2 | +0.1 | 0.0 |
| LTFT bank 2 (%) | 0.0 | 0.0 | 0.0 | 0.0 |
| Total trim bank 2 (%) worked out | +0.2 | -0.2 | +0.1 | 0.0 |
| A/F sensor B1S1 | lambda 1.00 | lambda 1.01 | lambda 1.00 | lambda 0.82 |
| A/F sensor B2S1 | lambda 1.00 | lambda 1.00 | lambda 1.00 | lambda 0.85 |
| O2 sensor B1S2 (V) | 0.66 | 0.64 | 0.66 | 0.91 |
| O2 sensor B2S2 (V) | 0.66 | 0.65 | 0.65 | 0.88 |
| Injector pulse bank 1 (ms) | 4.78 | 3.39 | 6.45 | 19.79 |
| Injector pulse bank 2 (ms) | 4.37 | 3.25 | 6.25 | 19.19 |
| EVAP purge command (%) | 0 | 20 | 35 | 0 |
| Misfire count per 1,000 revs | 0 | 0 | 0 | 0 |
Rows marked worked out are arithmetic on the rows above them, done for you: total trim is STFT plus LTFT, and the airflow check divides the MAF by the speed density estimate on the model page.