How to Flash BMW ECUs With E-Sys, Step by Step
Update the software in your F-series BMW's modules with E-Sys: save the SVT, calculate the TAL, tick blFlash, swDeploy and cdDeploy, and flash. Tested and working.
Coding changes how a module behaves. Flashing replaces the software inside it. You flash when a module needs a newer version: a head unit that has to be on a certain level before a retrofit works, a cluster with a known bug, or a whole car brought up to a newer I-Step.
E-Sys does this on F-series BMWs, and the routine never changes. Read what the car has, calculate what it should have, let E-Sys build the list of jobs between the two, then run that list. Below is every click of it.
Tested and working. We've flashed modules with this routine ourselves, and it does what it says.
Credits 
This comes from a PDF called E-Sys Flashing ECU Guide v1.0.1, written in 2014 by an F11 520d owner and shared on Bimmerfest in the thread Flashing ECU's with E-sys. The PDF doesn't carry the author's name, so the thread gets the credit.
The author says it couldn't have been done without shawnsheridan on Bimmerfest, and thanks ap90500 for the notes on ignition and ibaDeploy. We rewrote the steps in our own words. The original PDF, with all its screenshots, is attached to this post.
What You Need
- A real battery charger on the car. The guide asks for at least 50 A, ideally 70 A. A trickle charger can't keep up with a long flash.
- The laptop on mains power, with sleep and automatic updates turned off. Our coding laptop guide sorts that out.
- An ENET cable and E-Sys with the full PSdZData for your car. The Lite package leaves out the files a flash needs.
- Backups. You save the FA and the SVT in Step 2, before anything changes.
The guide used E-Sys 3.26.0 and PSdZData 54.0, current in 2014. Newer versions move a few buttons around, but the routine is the same. Newer PSdZData does need a newer E-Sys, so if E-Sys refuses your data, update E-Sys first.
The Four Boxes You Tick
When you flash, E-Sys lets you pick which jobs to run on each module. You only ever want these four:
| Column | What it does |
|---|---|
| blFlash | Updates the bootloader |
| swDeploy | Writes the new software files |
| cdDeploy | Writes fresh coding to match the new software |
| ibaDeploy | Updates the owner's manual stored in the head unit |
ibaDeploy only matters on a head unit. Ticking it on another module does no harm. Leave every other column alone.
Step 1: Power and Connection
- Put the charger on the car and the laptop on mains.
- Turn the light switch to parking lights. On older cars that keeps the ignition from switching itself off after about 20 minutes.
- In E-Sys, connect with Connection via gateway URL, not by VIN. If the gateway (ZGW) is in your job list and you connected any other way, the ZGW flash fails.
Newer cars ignore the light trick. The guide mentions a 07/2014 F30 that switched off after about 15 minutes anyway. That's fine. Cycle the ignition before the target calculation in Step 4 and again right before you press Start. Once the flash is running, the ignition stays on.
Step 2: Save the FA and the Current SVT
- Go to Comfort Mode → TAL-Calculating.
- Read the FA, save it, then click Activate FA.
- Read the SVT from the car and save it as SVT_ist.
Ist is German for "actual". That file is a snapshot of the software in every module as it is today.
Step 3: Find the Car's Shipment I-Step
E-Sys needs to know which I-Step (integration level) the car left the factory with.
- Open Expert Mode → VCM.
- On the Master tab, under I-Steps, click Read.
- Write down I-Step (shipment). It looks something like F020-17-07-507.
Step 4: Calculate the Target SVT and the TAL
Back in Comfort Mode → TAL-Calculating:
- Under KIS/SVT Target, set the calculation strategy to Complete Flash.
- Set I-Step (shipm.) to the value from Step 3. I-Step (target) is greyed out because your PSdZData decides it. Newer PSdZData, newer target.
- Run the KIS/SVT target calculation and save the result as SVT_soll (soll means "target").
- Run the TAL calculation and save it as SVT_tal.
The TAL is the transaction list: every job E-Sys will run to take each module from its current software to the target.
Step 5: Load the TAL and Pick Your Modules
- Go to Expert Mode → TAL-Processing.
- Load SVT_tal as the TAL and SVT_soll as the SVT target.
- Click Read FA. E-Sys saves it as FA_aus_VCM.xml.
- Select read VIN out of FA and click Read VIN.
- On the ECU tab, untick the top box in the All column. Every tick in the list should clear.
- On the row of each module you want to flash, tick blFlash, swDeploy, cdDeploy and ibaDeploy.
- Click Check software availability.
Step 7 is where you find out you have Lite PSdZData, or a version that doesn't match. Don't skip it.
Step 6: Start the Flash
Cycle the ignition if your car needs it, then click Start. The Log tab shows each job as it runs.
Then leave everything alone. Don't open doors, don't move the cable, don't let the laptop sleep. The cluster will throw all sorts of warnings while modules restart. That's normal. A head unit alone can take 40 minutes. The original guide's last step is "cross your fingers and watch it work", which is about right.
When it finishes, clear the fault memory with ISTA or your usual diagnostic tool.
Dependencies and the Gateway
Some modules need others to be on a certain software level first. The TAL lists these as prerequisites. In the author's F11, the head unit (HU_CIC) depended on the gateway (ZGW), and the cluster (KOMBI) depended on ZGW, HU_CIC and the media combox (CMB_MEDIA). Check the prerequisites of the module you're after and tick those rows too.
The usual advice is to flash ZGW before anything else. The TAL already puts it first. If you'd rather be careful, flash ZGW on its own, restart, then run the rest.
Flashing the whole car works the same way. Tick the four boxes on every row.
Troubleshooting
The ZGW flash fails. You connected by VIN. Reconnect through the gateway URL and start again.
Check software availability says files are missing. Your PSdZData is the Lite package, or not the version the TAL was calculated with.
ACSM needs coding. The airbag module has to be locked first. In E-Sys, click External Applications, then External Application, double-click Transmitter and then ACSM verriegelung_schreiben.
Which Module Is Which?
The PDF ends with a long list of F-series module names, put together by shawnsheridan. These are the ones you'll run into most:
| Name | Module |
|---|---|
| ZGW | Central gateway |
| FEM / BDC | Front electronics / body domain controller, with the gateway built in |
| HU_CIC, HU_NBT | Head units behind iDrive |
| KOMBI | Instrument cluster |
| CMB_MEDIA | Media combox |
| DME / DDE | Petrol / diesel engine control |
| EGS | Gearbox control |
| DSC | Dynamic Stability Control |
| ACSM | Airbag and crash safety |
| FRM | Footwell module, mostly lighting |
The full list is in the attached PDF.
FAQ
Does this work on my car?
The author wrote it on an F11 and expected it to work on every F-series car. The same routine is what you'd use to update an NBT EVO head unit to a newer iStep.
Can I flash just one module?
Yes. Tick only that row, plus any prerequisites the TAL shows for it.
Do I need E-Sys Launcher?
No. Launcher and its token are for FDL coding. For flashing and VO coding, run E-Sys directly.
Never pull the ENET cable or the charger while a TAL is running. More E-Sys guides are under Coding.
Rather not flash it yourself? I can do it remotely while your car is plugged in.
Files
- E-Sys---Flashing-ECU-Guide-v.1.0.1.pdf