This guide shows how to permanently disable two stored fault codes on a BMW E46 318d EDC16 ECU by modifying the firmware, not just clearing them with a scanner.
I earn from qualifying purchases and sometimes get tools for free (full disclosure). It never affects my scoring.
Used tool in this guide
Video: How to delete a DTC from a BMW EDC16 ECU
This video shows how to read, modify, checksum-correct and flash back an EDC16 ECU on a real BMW E46 318d to permanently remove two fault codes.
Supported vehicles
| Vehicle |
|---|
| 3-series-e46 |
Technical overview
| Vehicle | BMW E46 318d (85kW) |
|---|---|
| Year | 2005 |
| System | Bosch EDC16C31/C35 ECU |
| Procedure type | ECU firmware DTC delete |
| Difficulty | Advanced |
| Time required | ~45 to 60 minutes total (read, modify, checksum, flash, verify) |
| Prerequisites | Working KESS V2 clone setup, DTC removal software, checksum tool for EDC16, stable battery support, INPA for pre/post verification |
Step-by-step procedure
Confirm the exact ECU
Read the BMWTNR field in INPA before touching anything. EDC16 and EDC17 use different memory layouts and checksum algorithms, so the family has to be confirmed, not assumed from "it's a Bosch diesel."
Read and back up the original file, twice
Save the original BIN on the laptop and separately on a USB stick or cloud. This is the only way back if the flash fails. I use a naming convention with the last 7 VIN digits and a status tag, for example E46_318d_XXXXXXX_ORIGINAL_2026-05-01.bin.
Identify both fault codes to disable
For this car: P0401 (EGR flow) and BMW-specific code 4298 (Lambda). ECUs store codes in more than one internal table, so having both the OBD code and the manufacturer code helps the removal tool find every instance.
Modify the BIN file
Run the DTC removal tool against the backed-up copy, never the original. Two options: disable (sets a flag, suppresses the code) or remove (deletes the diagnostic logic entirely). For EDC16 I used disable, it's less invasive.
Recalculate the checksum
EDC16 uses multi-level checksums (program checksum + map checksum). Any modified byte needs a recalculation pass or the ECU will refuse the file or go into limp mode on boot. I ran LSuite 1.0, took about 30 seconds.

Verify before flashing
Two checks, both mandatory:
- File size must match the original byte for byte. A different size means something's wrong, don't flash.
- Hex compare the original against the final file in HxD. Differences should only appear at the DTC offset and the checksum bytes. Differences scattered across hundreds of locations means the file is corrupted.
Prepare for the flash
- Battery support providing a stable 13.5 to 14V under load
- All accessories off, radio, climate, lights, fans
- Doors closed, nobody in the car
- Laptop on AC power, high performance mode
- USB direct to the laptop, no hub
Flash back to the ECU
Over OBD, EDC16 takes 5 to 15 minutes. Once the write starts, don't interrupt it. If the progress bar looks stuck for 2 to 3 minutes, wait another 10 before assuming it failed.

Verify after the flash
- Ignition off for 30 seconds
- Ignition on, engine off, engine warning light should illuminate during the bulb check. If it doesn't, the ECU is bricked.
- Start the engine, should fire normally
- MIL should extinguish within 5 seconds of running
- Connect a scanner and confirm no active codes
- Drive 15 to 20 minutes
- Re-scan after the drive
On this car: bulb check displayed correctly, engine started normally, MIL cleared in 3 seconds, no active codes in INPA, and cylinder smooth running values stayed within ±1 mg/Hub across all four cylinders, meaning the adaptive logic wasn't disturbed by the flash.
Legal & safety notice
This procedure modifies vehicle system settings through the control module. Incorrect use may cause faults or warning lights. Always ensure the vehicle is secured and follow proper safety procedures.
Modifying emission-related diagnostic systems on a road-going vehicle is a tampering offense in the EU, UK and most of the US. P0401 is emission-related. Enforcement varies by region, but it is not legal regardless of enforcement. Never delete DTCs on a car you're about to sell without disclosing it, doing so is fraud.
Most popular OBD2 guides
