DIY Coding BMW E46 ZCS module via NCS Expert

Pre-coding information:

The modules installed in our car, encoded with the default options for the equipment (standard and optional) of the vehicle. This information is stored in one or more modules of our car and need to update it when you add or remove features of the vehicle.

For example, if install Xenon headlights in the car and the light module with the default options, it would be coded for halogen lights and not for new Xenon. So you have to update the information in the ZCS (Central Coding Key).

BMW currently use the VO (Vehicle Order) system, but in older cars the old ZCS system is used, as in the E39 and E46 produced until 08/2001. In this post we will focus only on the ZCS system.

Tools needed:

BMW ICOM Rheingold software NCS Expert

BMW ICOM A2 emulator or INPA K+DCAN cable

ZCS information is saved in FA modules:


Open NCS Expert software

In Menu, select “File” -> “Load Profile”

Select “ExpertMode” -> “OK”

Press the “VIN / ZCS / FA” button.

Press “ZCS / FA f. ECU” button

Select chassis “E46” -> “OK”

ECU choose containing data “KMB” or “EWS” in the E46 -> “OK”

Vehicle information is displayed in next program


Add or remove options to our ZCS code:

You can find files under the codes “C: \ NCSEXPER \ DATEN \” directory with a name that follows the pattern “EXXZST.000”. For example that of the E46 is “C: \ NCSEXPER \ DATEN \ E46ZST.000”

0982 00000000 0000000400000000 0000000000 1 // HARDTOP Hardtop in body color

0620 00000000 0000000000000000 0000000000 0 // Voice Control (Telephone)

0640 00000000 0000000000000000 0000000000 0 // Preparation for car telephone installation

0524 00000000 0000000000000000 0000000000 0 // light automatic / Daemmerungsschalter f. Headlight from 9/01

0663 00000000 0000000002000000 0008040620 1 RADIO_NG / / BMW Professional CD54

What these numbers stand for:

0982: BMW Options

00000000: hexadecimal to add or subtract from our GM figure number.

0000000400000000: to add or subtract hexadecimal our toll SA figure.

0000000000: to add or subtract hexadecimal our number VN figure.

Therefore to add the option of BMW “HARDTOP” we have to add the number “0000000400000000” to our SA “00003A40C4BC74216” and to eliminate if we installed

GM: 646100006

SA: 00003A40C4BC74216 + 0000000400000000 = 00003A44C4BC74216
VN: 000A640628J

Now we only need to encode new information in the modules that store, in the case of E46 in “KMB” and “EWS”. NCS Expert will be used again.

Code a new ZCS code:

I retrofitted the original rear LED on my E46, we will encode the new order of our vehicle.

In the file C: \ NCSEXPER \ DATEN \ E46ZST.000 find the option to retrofit the LEDS:

H LEDH N0997 0001000000 00000000 0000000000000000 1 // Nachruestung LED_HECK Heckleuchten LED-E46 / 2 u. E46 / C Facelift

Open NCS-Expert and follow the steps in the previous section “Obtain information from our vehicle ZCS”.

Press the “Enter ZCS” button.

Select chassis E46


Press the “OK” button when we ask about our “VIN” leaving the default.


Our information “GM”, “SA” and “VN” appears.


Remove the last digit of the “GM”, “SA” and “VN”. Check the “Calculate Checksum” box.

We add “00000000” to “GM”, “0000000000000000” to “SA” and “0001000000” to “VN”.


Press the “OK” button. Press the “Back” button.

Now we will code modules that store information “ZCS”. In the case of E46 in the “EWS” and “KMB”

Press the “Change ECU” button and choose “EWS”.

Press the “Change job” button and choose “ZCS_SCHREIBEN”

Press the “Execute job” button to complete the coding.


Press the “Change ECU” button and choose “KMB”.

Press the “Change job” button and choose “ZCS_SCHREIBEN”

Press the “Execute job” button to complete the coding.


We have change the vehicle order and reset/retrofit the ZCS module. To verify that you have properly coded simply follow the steps in the previous point “Obtain information from our vehicle ZCS” And see if you changed the values correctly.