BMW E-Sys coding: a complete beginner's guide
What E-Sys is, what you need, and every step from connecting to the car to coding your first change, safely.
What is E-Sys?
E-Sys is BMW's own engineering software for coding and programming the control modules (ECUs) of BMW's F series, G series and I series cars, and of the MINI and Rolls-Royce models built on the same electronics. Coding means changing a module's settings: switching a feature on or off, changing how long a light stays on, or making a retrofitted part work. Programming (flashing) means replacing a module's software.
E-Sys works on settings files called CAFDs. Each module has one, and E-Sys turns it into an editable file (an NCD) with every setting of that module. You change the values you want and E-Sys writes them back to the module.
What you need
- A Windows PC (Windows 10 or 11). A laptop you can bring to the car is easiest.
- BMW E-Sys, installed on that PC.
- PSdZData: BMW's data pack E-Sys needs to know your car's modules. The Lite pack is enough for coding; the Full pack is only needed for flashing. See What is PSdZData?
- A connection to the car: an ENET cable (Ethernet to the OBD port) or a BMW ICOM. See ENET cable or ICOM.
- A battery charger on the car while you code. A dropping battery voltage is the most common reason a coding goes wrong.
Bluetooth and Wi-Fi OBD dongles made for phone apps cannot connect E-Sys, and K+DCAN cables are for the older E series.
Before you start
- Connect the charger, switch the ignition on (press Start without the brake) and keep the engine off.
- Turn off VPN software on the PC; it can send E-Sys's car search the wrong way.
- Make a backup of every module's coding before you change anything, so you can always go back.
Step by step: your first coding change
- Connect. Plug the ENET cable into the car's OBD port and the PC (or connect the ICOM). In E-Sys press Connect, pick your car's series and choose Connection via VIN; your car is listed with its VIN. With an ICOM choose Connection via ICOM/Ethernet instead.
- Read the vehicle order. Open Expert Mode > Coding, press Read under the vehicle order (FA) and then Activate FA. The vehicle order is the list of everything your car was built with; E-Sys uses it to know which settings fit.
- Read the module list. Press Read SVT. E-Sys lists every module of the car with its CAFD.
- Read the coding data. Select the module you want to change (for example the head unit or the body module), then Read Coding Data. E-Sys saves the module's current coding as an NCD file. Keep a copy: this is your way back.
- Edit. Right-click the module's CAFD and choose Edit FDL. The FDL-Editor opens with every setting. Find the one you want and change its value, for example from
nicht_aktiv(off) toaktiv(on). Save. - Code. Back on the Coding page, select the module's CAFD and press Code (in some E-Sys versions Code FDL or Code NCD). E-Sys writes the new coding and shows a report.
- Test. Switch the ignition off and on again and try the feature. If something is not right, code the saved NCD back.
Why are the settings called "." or in German?
Setting names come from BMW's data. Since around 2016 BMW removes the names from the PSdZData it publishes, so many settings in current E-Sys show only as a dot, and the ones that are named are short German abbreviations. That is why coders use cheat sheets: lists of which setting does what.
E-Sys MAX adds the missing half inside E-Sys: English names and explanations for thousands of settings, ready-made changes for your car, a full backup in one click and a history of every change. Every write to the car still waits for your Yes.
Questions
Is E-Sys coding safe?
Coding changes settings, not the module's software, so it is the gentler of the two. The real risks are a weak battery, a lost connection in the middle of a write, and a wrong value. Use a charger, back up first, change one thing at a time, and keep the original NCD so you can put it back.
Which E-Sys version should I use?
A recent version works best with recent PSdZData and G-series cars. Versions 3.x run older F-series work fine; versions 22.x to 25.x handle current cars and DoIP. E-Sys MAX works with E-Sys 3.x up to 25.x and was tested with 25.10, 24.06, 22.10, 22.06 and 3.40.
Can I code a G-series BMW with E-Sys?
Yes. The steps are the same. G-series modules have far fewer named settings in public data, so English names and ready-made changes matter even more there.
Do I need to flash to code?
No. Most coding changes need no flashing. Flashing is only needed to update a module's software or when a retrofit requires it, and then you need PSdZData Full.
Code your BMW in plain English
E-Sys MAX works inside your own E-Sys. Try every feature free for 3 days.
