BMW E46 318d (2005, 85kW) DTC Delete: Removing P0401 EGR and Lambda Code 4298 From the ECU Firmware
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
| Item | Details |
|---|---|
| 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
1. 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.”
2. 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.
3. 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.
⚠️ Only disable codes you actually understand. If you don’t know what condition triggers a code, leave it alone.
4. 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.
🔧 What actually happened on this ECU. The removal tool reported “2 found, 1 disabled” for P0401, the code existed in a primary table and a mirror/backup table, but only the primary got disabled. On BMW EDC16 that’s sufficient, the mirror is only referenced if the primary fails its own integrity check, which it won’t after a clean edit. Most tutorials don’t mention this.
5. 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.
⚠️ Don’t skip this step. Clone flashers sometimes “correct” checksums automatically during the write, but they can do it wrong. Always pre-correct with a dedicated checksum tool first.
6. 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.
🔧 What actually happened on this ECU. Win7 and Win11 reported different file sizes for the same original BIN, 1,014,784 bytes on one laptop and 1,048,576 bytes on the other. It was a Windows display quirk (allocated size vs actual data size), not a corrupted file. LSuite read the correct 1,014,784 bytes. Cost me ten minutes of unnecessary panic.
7. 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
8. 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.
🔧 What actually happened on this ECU. Flash via the KESS V2 clone over OBD took about 5 minutes. Battery held a stable 13.6V throughout on the Victron charger. No interruptions, no errors during the write.
9. 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.
Additional Information & Compatibility Notes
Before using or purchasing any diagnostic tool for this procedure, always verify compatibility with your exact vehicle model, year and system configuration. Supported functions may vary depending on software version, hardware revision and regional limitations.
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
Hi, I am Juraj Lukacko. I got frustrated by unhelpful and scammy mechanics, so I decided to learn everything about car diagnostics myself. I test dozens of new car diagnostic tools every month along with learning new strategies to fix and customize cars.

Responses