Secure Coding in a nutshell
Secure Coding – also often referred to as NCD 2.0 – means that control units only accept coding data that has been digitally signed by the manufacturer. Data that has been modified without a valid signature is rejected. The process primarily affects newer BMW and MINI models from the G Series.
Why does Secure Coding exist?
Modern vehicles are rolling networks with many interconnected control units. This also increases the requirements for IT security. Manufacturers want to ensure that
- safety-critical settings (e.g., brakes, suspension, battery) are not changed without authorization,
- control units only accept data from a trusted source,
- legal requirements for vehicle cybersecurity are met.
Secure Coding is therefore primarily a security mechanism – not a "coding ban" in itself, but it has major implications for hobby coders.
Which BMW models are affected?
Secure Coding was gradually introduced starting around 2021. The model itself is not the only deciding factor, but rather:
- the I-level (the vehicle's software version),
- the individual control unit – not every control unit in the same vehicle uses Secure Coding.
The newest G Series models and current electric vehicles are most commonly affected. Many F Series and G Series models with older software versions can still be coded using traditional methods.
Tip: We explain how to determine the I-level in I-Level & I-Step Explained.
Key coding terms
| Term | Meaning |
|---|---|
| FA | Vehicle order – list of equipment (SA codes) and production data. |
| SVT | Control unit installation table – which control units are installed with which software. |
| CAFD | Control unit coding file – contains the settings. |
| NCD | The specific coding data generated from the FA and CAFD. |
| FDL | "Function data list" – change individual values specifically (e.g., "active" instead of "inactive"). |
| VO coding | Coding based on the vehicle order (add/remove equipment). |
Practical example: What a simple change looks like
Suppose you want to activate a comfort function in the body control unit. Traditionally, you read out the CAFD, search for the appropriate parameter, change it from inactive to active, and write the data back. On a control unit without Secure Coding, the function is active afterward. On a control unit with Secure Coding, the signature no longer matches after the change – the control unit rejects the data.
Why traditional coding fails
The signature refers to the entire data set. As soon as even a single value is changed, it becomes invalid. The control unit checks this during writing and rejects it. Re-signing is not possible without access to the manufacturer's server.
Procedure for control units with Secure Coding
If you are working on an affected vehicle, you should proceed systematically:
- Back up the original state: Save the FA, SVT, and current coding data (CAFD/NCD) before you change anything.
- Clearly define the goal: Which function is to be changed – and is coding even necessary for this, or is it a matter of activation?
- Use valid data: Signed coding data only comes from an official source, e.g., via online coding by a workshop with manufacturer access.
- Write the data: Only with stable voltage (battery charger!) and a stable connection (ENET or ICOM).
- Check the result: Test the function, read the fault memory, and clear it if necessary – e.g., with ISTA+ Standalone.
Coding, activating, programming – what's what?
| Process | What happens |
|---|---|
| Coding | Control unit settings are adjusted (Secure Coding affects exactly this). |
| FSC / Activation code | A function is activated via code, e.g., navigation maps or CarPlay on older systems. |
| SFA | Activation of functions via the manufacturer's backend (functions "on demand"). |
| Programming / Flashing | New software is written to a control unit – this often changes the I-level. |
Example: A function requires several steps
Not every function can be activated with a single coding operation. A good example is Apple CarPlay on NBT EVO: This requires a valid activation code (FSC) and the appropriate coding of the head unit. If either is missing, the function will not work. On newer systems, Secure Coding or activation via the backend also comes into play.
More on this: CarPlay Activation for NBT EVO.
Can signed data be edited?
In short: no. Signed coding data can be read and viewed, but any change makes the signature invalid. The control unit will then no longer accept the data. Caution is advised with offers that promise to "bypass" Secure Coding – both legally and technically.
What happens during a software update?
- An I-level update can activate Secure Coding on control units that were previously freely codable.
- During an update, the coding data is usually overwritten – custom coding is lost in the process.
- Therefore, before every update: back up the original state and check which software version is being installed.
Typical errors and their causes
| Symptom | Possible cause |
|---|---|
| Coding fails in E-Sys with an error | The control unit uses Secure Coding, and the signature is missing. |
| Coding completes, but the function remains inactive | The data was discarded, or the function requires additional activation. |
| New fault memory entries after coding | Authentication failed or coding was incomplete. |
| Connection lost during writing | Unstable voltage or unsuitable cable. |
For connection problems, our post on ENET, K+DCAN & ICOM helps.
Safety rules for coding
- Always connect a battery charger.
- Before every change, back up the original state.
- Do not perform coding on safety-critical systems (brakes, airbags, steering) without expertise.
- During the process, do not interrupt the ignition, laptop, or connection.
- Only use known, reputable software and data.
Conclusion
Secure Coding changes the rules for coding newer BMW vehicles: coding data is signed, and custom changes are rejected on affected control units. Diagnostics, fault memory, and service functions are not affected. On older F Series and G Series models with older software versions, traditional coding with E-Sys still works. If you have a newer vehicle, you should check the I-level before every change and back up the original state.
Frequently Asked Questions
Is Secure Coding the same as NCD 2.0?
Yes, both terms describe the same process with signed coding data.
Can I still code with E-Sys?
Yes, on control units without Secure Coding. On affected control units, modified data is rejected.
Does Secure Coding also affect diagnostics?
No. Fault memory, live data, and service functions continue to work.
Will my coding be lost during an update?
In many cases, yes – therefore, back it up beforehand.
How can I tell if my BMW is affected?
The I-level and control unit are the deciding factors. Both can be read out with ISTA+ or E-Sys.
Note: This post is for general information purposes. Coding is performed at your own risk. Brand and product names are used exclusively for identification, description, and compatibility information. Bimerpro is an independent provider and is not affiliated with the respective brand owners. Diagnostic, coding, and programming functions may vary depending on the vehicle, software version, interface, and authorization.