Diesel injector coding: correction values, EDC17, and when an injector needs a new code
What IMA/injector correction code is, how EDC17 ECU learns each injector, codes P0263-P0272, what OBD-II reads, and why "just replace the injector" on diesel doesn't work.
On petrol an injector is a simple solenoid with 2 states: open/closed. On a modern common-rail diesel (EDC17 Bosch, EDC16 Continental) the injector is a precision piezo mechanism with an individual “passport” — IMA code (Injector Mengen Abgleich). Swapping without programming IMA in the ECU gives P0263-P0272 in 60 mi. Below: how to diagnose and why “just fit a new one” doesn’t work.
What IMA code is
Every diesel injector (Bosch, Delphi, Denso, Siemens) is factory-calibrated — the exact ml of fuel it delivers per regime (idle, cruise, wide-open) is measured. These deviations from “ideal” are stored as a 7-digit code (IMA), e.g. 1234567, engraved on the housing.
When installing a new injector the ECU must be told the new code, else:
- ECU thinks the injector is “old” (with the previous code)
- Uses old correction values → under- or overfueling on that cylinder
- Result: misfire (P0201-P0206), hard starts, extra soot
Key OBD-II codes
| Code | Meaning |
|---|---|
| P0263-P0272 | Cylinder N contribution/balance fault |
| P0201-P0206 | Cylinder N injector circuit malfunction |
| P200A-P200F | Diesel injector deviation limit exceeded |
| P16D0-P16DF | Injector volume correction (Bosch specific) |
| P1670-P1679 | Injector adaptation not complete |
Correction values via OBD-II
Via Mode 22 UDS (Bosch EDC17-specific PID) you can read:
- Injection quantity correction per cylinder (IQ correction) — mg/stroke
- Norm: ±3 mg at idle
- Warning: ±5-8 mg → injector aging, P0263 soon
- Critical: >10 mg → injector “drifted”, overhaul or replacement
Plus:
- Compression balance — computed compression per cylinder (from crank speed variance)
- Injector opening time — for fine-tune
- Rail pressure vs demand — mismatch (HP-pump issues)
Classic patterns
One injector drifted
- OBD: IQ correction cyl 2 = +8 mg, others ±2 mg
- Symptom: rough warm-up, soot from exhaust
- Fix: injector rebuild ($150-300) or new ($400-800) + program IMA
All 4 injectors drifted evenly
- OBD: IQ correction all +6-8 mg
- Cause: HP pump lost pressure, ECU compensates via injectors
- Fix: HP pump replacement or rebuild ($500-1500)
P200A (deviation limit exceeded)
- Symptom: car in limp mode, speed limited
- Cause: one injector exceeded max correction → ECU “disables” it
- Fix: diagnose specific injector, replace ($400-800 + $50-100 IMA code)
New injector, codes returned in 300 mi
- Cause: IMA code not programmed or programmed with a typo
- Fix: re-program correct code (VCDS, VCP, OBDeleven — 5 min)
How to program IMA
Needs manufacturer tool — stock ELM327 cannot write correction values. Options:
-
VCDS for VAG (VW Passat B7 TDI, Audi A4 B8 TDI, Skoda Superb TDI):
- Module 01 (Engine) → Adaptation → Channel 05
- Enter 7-digit IMA per cylinder
-
OBDeleven for VAG — simpler, via smartphone app
-
Bosch KTS for Mercedes CDI, BMW N47/N57 — professional
-
Delphi DS150E for Ford TDCi, PSA HDi
Don’t try via open-source ECU flasher — can corrupt the map.
What OBD-II can hint
Via Mode 22 (Bosch EDC17):
- Learn status — whether “learning” finished after coding (60-300 mi of normal driving)
- Injector age — how many injections a nozzle has performed (computed)
- Fuel rail pressure — real vs demand, delta > 100 bar → HP pump
Our DTC Analyzer for EDC17 diesel reads all 4 correction values and returns a ranked hypothesis:
- “Injector cyl 3 — 78% probability, recon $200”
- “HP pump aging — 65% probability, replace ($600-1500) at 20k mi”
Prevention
- Genuine diesel — not “summer” solvent from unknown-brand pumps
- Timely fuel filter change — 9-12k mi
- Never run the tank empty — HP pump cools with fuel, dry running = death in 30-60 sec
- Every 18k mi — read IQ correction, track trend
Try on free tier — pair an ELM327 adapter. Standard P0201-P0206 and P0263-P0272 available on every diesel. IQ correction via Mode 22 — on paid tier with your make supported.