How to code BMW E46 with NCS Expert step-by-step

This is a little NCS expert software tutorial on coding BMW E46. Aim to  help if anyone has any questions and of course can carry out any coding changes.




NCS expert coding software

A hardware cable (BMW INPA K+DCAN cable/BMW ICOM etc)


First we will need to set up a coding profile within NCS expert.

1) Open NCS Expert.

2) Open up the ‘Expertmode’ profile.

3) Save as a new profile (give it a name, like the godfather or something powerful sounding).

4) Load the ‘godfather’ profile.

5) Edit it (file –> edit. Password is repxet).

6) Make sure under button ‘Individualisierung’ all options are crossed.

7) Make sure under button ‘FSW/PSW’, that ‘from CVT’ is chosen, and that the bottom two boxes are crossed.

8) Finally, press ‘consistence check’ and check it works.

9) Then press okay

You should now have a coding profile!

You read using the ‘Expertmode’ profile, and code using the ‘Godfather’ profile. (Ignore the other profile)

Once NCS is open Choose File from the top menu

Select Load Profile

Choose Expertmode profile.

Then Press F1 or choose VIN/ZCS/FA


Now press F3 or choose ZCS/FA f. Ecu


Select the model car E46

Chose the Module in which to read the ZCS/FA, In this case we select the top one. If that one doesn’t work for you, choose the next one below, etc until you find one that works. Bear in mind that the bottom two will not let you read all options. If you find that you cannot read the top one, then you may have a key programming issue (i.e. previous owner losing a key, and BMW not programming the new one properly), or that your car has had an ECU changed that doesn’t match the car’s VIN.

Upon seeing the below screen with the FG and FA Values displayed simply hit F6 or Back.


Click Process ECU


You will now get a list of installed modules that were identified when communication with the chosen “main” module as before.


Select the Module/ECU you would like to work with, In this case the GM5


Now you can choose READ ECU to perform a read out of the module.


You will get a NETTODAT.TRC file popup simply close it.


Navigate to the Work folder which resides in your NCSEXPER directory. You will locate a file FSW_PSW.TRC

This file was created when READ ECU was performed and contains the coding values for that module.

Remember this file is overwritten each time a read out of a module is performed. It would be advised to make a back up of this file in the event you need to restore coding settings. (Just right click and copy and paste the whole file on your desktop or somewhere you can remember in case there is any mistake, if you have this copy of original you can fix.)

NOTE:!!! AT THIS POINT, you have not done any programming, you have simply read the module. You should make a copy as above, but at this point you can exit NCS & disconnect from your car…. and take your time to read this copy of the trc file, and decide what you want to change… and come back to it later. When you go to the next steps, this tells you how to actually change things in your car. If you make some mistake, use your original as the .man file to change them back…


Once you have made a backup, Right click and rename the file to FSW_PSW.MAN

*Once you have a .man file and are ready to code your changes to the car, you can do this step, or if you prefer, DELETE the .man file in work folder, and start over again from top.. Just make sure there is only one .man folder in work and that this includes the coding you want to change in the car.

Yes to make the change.


Now right click and choose Open With…


Select Notepad and tick always use the selected program to open this kind of file. Then Press OK.


Now we can make changes to the coding file.


Please see below list of some of the most popular available options that can be changed and their respective modules:-

Module Names

ABG – Airbag Module

AEWS – Immobilizer

AKMB – Instrument Cluster

ALSZ – Light Switch Center

BTM – Passenger mirror Module

CVM – Vert Module – don’t touch this, apparently it’s sensitive


FTM – Driver rearview mirror module

GM5 – ZKE – Central Body Electronics

GT – Navigation


LWS – Light Switch

RAD – Radio

RLS – Rain Sensor

SM – Seat Memory

UEB – Rollover Sensor


QUIT_AKUST_ENTSCH : alarm beep on unlock (two beeps)

QUIT_AKUST_SCHAERF : alarm beep on lock (one beep)

QUIT_OPT_ENTSCH : optical Acknowledge remote un-locking (two flashes)

QUIT_OPT_SCHAERF : optical Acknowledge remote locking (one flash)

ALARM_OPT_ABBLENDLICHT : alarm flashes low beam when tripped

ALARM_OPT_WARNBLINKER : ” ” emergency flashers when tripped

ALARM_OPT_FERNLICHT : ” ” high beam when tripped

BEIKLAPPEN_B_KOMFORTSCHL : press the unlock button twice, and the drivers window will open

FH_TUEREN_HINTEN_TIPP_AUF :rear window power down one touch

FH_TUEREN_HINTEN_TIPP_ZU : rear window power up one touch

FH_ZTR_SCHALTER_TIPP_AUF : window switch down one touch


(do these after modifying the switches)

KOMFORTOEFFNEN_FB_O_FH_HI :remote opens rear window (this has to be nicht_aktiv)

KOMFORTSCHLIE_FB_O_FH_HI : remote closes rear window (this has to be nicht_aktiv)

KOMFORTOEFFNEN_FB_O_SHD : holding open button on remote opens windows without sun roof

KOMFORTSCHLIE_FB_OHNE_SHD : holding close button on remote closes windows without sun roof

KOMFORTOEFFNUNG_FB : convertible top opens by holding the open button on remote..Or opens all windows & sun roof on non convertible

KOMFORTSCHLIESSUNG_FB : convertible top closes by holding the close button on remote..Or closes all windows &sun roof on non convertible

MAUT_N_ABBRECH_N_TUER_AUF – windows carry on opening/closing even when you open the door

VERRIEGELN_AUT_AB_X_KMH : automatic central locking after X KMH

VERRIEGELN_AUT_NACH_2_MIN : automatic central locking is re -locked after 2 MIN if you dont open a door

VERRIEGELUNGSSCHWELLE : locking Device-swells (threshold) (speed of X above)





(these all have to be aktiv for the auto central locking to work on all keys)

PANIK_MODUS – panic mode! press and hold boot button for the siren

CYCL_TI_BLK;1-touch on turn signal blinks. einmal-1 . zweimal-2 . dreimal-3.

One touch indicators, lane change.

BLINKIMPULS_WARNBLK to wert_04 – double impulse hazards

HHS_AUTOMATIK – enable auto rear window fogger

(I haven’t found the last three in any module, but I can see it in the full read-out. So if you find it, then tell!!)


SPIEGELABKLAPPEN_GM – folding mirrors with lock/unlock

ABKLAPPWERT_GM (in GM5) – mirror tilt value

ABKLAPPWERT – mirror tilt value

SPIEGELMEMORY – gives you the option to change the mirror tilt value whilst it’s in reverse


HEIMLEUCHTEN : home lights activated by flashing high beam with key off

HEIMLEUCHTEN_ABBRUCH : home light stop

HEIMLEUCHTEN_AL :home lights are low beam

HEIMLEUCHTEN_BL : ” ” ” turn signals

HEIMLEUCHTEN_FL : ” ” ” high beam

HEIMLEUCHTEN_FUNKSCHL :lights on on closing car with remote (only on e39 )

HEIMLEUCHTEN_KL58G : home lights are interior backlighting, cluster, ashtray etc.

HEIMLEUCHTEN_KZL : ” ” ” license plate

HEIMLEUCHTEN_NSL : ” ” ” rear foglight

HEIMLEUCHTEN_NSW : ” ” ” front foglight

HEIMLEUCHTEN_RFS : ” ” ” reverse light

HEIMLEUCHTEN_SL_H :” ” ” rear parking lights

HEIMLEUCHTEN_SL_V :” ” ” forward parking lights

FL_UND_NSW_NICHT_GLEICHZ : high beam & fog lights come on together when nicht_aktiv (I haven’t got this working yet)

Xenons with high beam:






(I haven’t tried this yet)

LED (ALSZ) upgrade:

KALTUEBERWACHUNG_BL_MI : ” ” ” ” brake light



(if these don’t work, then retrofit with GT1 instead).


AUT_SPIEGELVERSTELLUNG : automatic mirror adjustment linked to specific key

AUT_SITZVERSTELLUNG :choose between automatic seat adjustment [nach_fb_entriegeln] when remote signals door open or[nach_entr_u_tuer_oeffnen] when door opened

(A bit hit and miss with these)


1. DISPLAYANZEIGE_HIGH :temp. display on ihka shows HI if aktive 32*C if not aktive

2. DISPLAYANZEIGE_LOW :temp. display on ihka shows LO if aktive 16*C if not aktive


REGENSCHLIESSEN – Rain sensor closes sunroof! (I haven’t found these yet!)


Car Key memory:

A heres a guide to car/key profile and button in NCS:

The typical sequence for the customization is as follows:

1. Button Select the “individualization”.

-> The operating side, the potential for the individualization ZCS FSWs customizable displays the selectable PSWs. The intended state of PSWs is marked with a prefix ‘S’.

2. Button Select the “READ”.

-> The actual state of the customizable PSWs FSWs is determined and with a leading ‘I’ marked.

3. Button Select the “TAKE OVER”.

-> The currently selected PSW becomes the new target value for the vehicle in the list of gänderten PSWs.

4. Button select “BROADCAST”.

-> The controllers of the vehicle in which PSWs have changed are encoded. Amended by promoting PSWs the list of changed PSWs.

Anyway, back to coding. Once you’ve made the changes you want, save the file.


Choose file and click save. (common mistakes here is saving the .man folder incorrectly as a .txt file, make sure when saving you have a .man file, not .man.txt! will not work. If problem saving, choose instead “save as” and where box says file type. Choose “all files” not text.


Now click Load Profile


Choose the Godfather Profile


Now press Process ECU so we can tell NCS Expert what module we would like to code to.

Choose the Module and press ok. (Make sure this is same modules you read from!)

Press Ok.


Now we are ready to code the to our GM5 unit. Make sure the JOBNAME is set to SG_CODIEREN.

If it is not simply click ‘job’ and choose SG_CODIEREN. Make sure you’re using the module you previously read from: in this case the GM5 (Or the unit you will be working with)

Hit Execute Job to perform coding.

Underneath GM5 a status will appear initially saying CODING ACTIV and then CODING ENDED. Depending on size of file and can be a few seconds or a few minutes… very important not to disturb car or computer here… if battery dies, coding incomplete… you will have to use your back up… not very common, but it’s always possible! Always back up original!!

Once this is completed you may power off the car wait 10 seconds and repower up to see whether your coding changes have taken.