Tag Archives: Ncs expert

How to solve NCS Expert VIN is faulty COAPI-2000

Have spent my entire Saturday on this:

All running on XP and also tried on Win7 x64

INPA is working fine. Battery and ignition both ON
When running NCS Expert, try to read the VIN from ECU i get VIN Faulty

Vin is faulty
COAPI-2000 Error or in ECU description file (SGBD) IFH-0018 CAS
COAPI-2000 Error or in ECU description file (SGBD) FGNR_LESEN
COAPI-2000 Error or in ECU description file (SGBD) FGNR_A_E65CAS


Solution 1:

If you have Standard tools 2.12 you are fine.

Check if you have E89 folder in C:\NCSEXPERT\DATEN\

And make sure that you copied all files from sp-daten\daten\*.* to here C:\NCSEXPERT\DATEN\ and here C:\NCSEXPERT\DATEN\E89

Just recopy this and check if this helps

Solution 2:

You can only run INPA or NCS one at a time, not simultaneously.

Also, sometimes mine gives me that error. It’s usually because I didn’t initialize the USB cable properly. Unplugging it, closing NCS, plugging it back and restarting NCS usually solves my problem.

Hope this helps.

Solution 3:

you are missing some files for E65 at sp-daten. Try to download newer spdaten and copy at least e65 folder or update whole data.

Solution 4:

make sure you update your daten files correctly as well

you can do the following copy-paste procedure: (copy the files and replace )

Target —————————Source .(SP-Daten-Exx directory )

\NCSEXPER\SGDAT\ ——– .ipo files
\NCSEXPER\DATEN\ ——– coding data (daten) for models
\EDIABAS\Ecu\ ————– .prg files……

If not work, please empty your .man file .. delelete everything inside then save.. then try again




After You Do That.. Try To Read The Car Again.. So Ncs Expert,f1,f3 E89,cas, Then Back

All above solutions are shared on BMW forums; never know he/she is the professional or amateur. So, YOU ARE TRYING EACH SOLUTION ON YOUR OWN RISK.

Reference: NCS EXPERT User Guide

Proceed at your own risk, this is just my interpretation for educational/entertainment value only. I am not responsible for you blowing up your car or damaging your modules. Im serious!


This is roughly how it works… and my dummy interpretation of it. Please read it fully if you want to understand, this isn’t exactly a quick cheat sheet guide.

On Pre ’02 cars the coding is slightly different method than Post ’02 cars. I am only going to elaborate on coding individual parameters, you can go learn how to code entire modules thru the VO later once you learn the basics below.

The first part to understand is what this stuff about ZCS/VO or “vehicle order” is. When BMW makes a car, they create whats called a “vehicle order”, this is basically a bunch of numbers written into the car that tell what modules are installed in the car, regional info etc. This is like your car’s DNA! for example if the car has a sunroof, or a convertible or radio etc etc and that it was meant for US,Canada,France etc. Because each car is different with a different set of options/modules or country that its located, the “vehicle order” aka. “ZCS” or “VO” may be different. Why is it called ZCS you ask? because its abbreviated german, and its confusing as hell.

The VO is written into a couple modules of the car, usually ones that start with an “A”, like AKMB or ALSZ. On some cars its written elsewhere. In my 02 M3, the VO was written in ALSZ and AKMB. On my ’00 328ci it was stored in EWS, KMB. Its nothing more than a string of text/numbers stored in the flash memory of these modules, nothing special. Why is it written into two places? because if one module is failed and has to be replaced, then the other will serve as a backup so you can code the new replacement module to your car. For example ALSZ is the “light switch module” in your car, for some reason it fails. When you buy a new LSZ/LCM, you can retrieve all your settings of VO from AKMB and then code your new LCM to YOUR factory settings. The chances of both modules failing is slim, but if it does… you’ll have to contact BMW so they can give you the VO for your car from their records.

OK the one difference is pre-02 cars don’t have a VO. Those cars have their ZCS (which acts like a VO) stored in the EWS or KMB modules. The stuff below is basically identical however for individual parameter coding.

Now go get into the basics of coding.

1. When you load NCS expert, you need to load a profile. These profiles just change how ncs expert behaves when you read your car. The two profiles i stick to are “expertmode” and “revtor’s expert profile”. if you don’t have it, you can find it on the net easily. In order to code your car the first time, you should pick “revtors“. This has something called “manipulation” enabled… ill elaborate on that later.

2. Once the profile is loaded, you basically need to select Vin/ZCS/FA in order for ncs to download VIN info off your car. Once it does this, it will ask you to select a module. Why? because it needs to know your “vehicle order” information. In most cases it will probably be in an “A” module. if it doesn’t load, or cant be accessed, no harm done, just try a different module. When it is able to read it, you will see a long string next to “FA” starting with your chassis “E46_” followed by numbers and text along with #’s and $’s. This is your VO. Now that NCS Expert knows it, it can code your car properly!

CODING HAS NOTHING TO DO WITH THE MODULE YOU JUST SELECTED TO READ THE VO FROM! This perplexed me for the longest time, I didn’t understand why i selected two modules each time, or what the difference selecting AKMB or ALSZ or etc the first time was. Well… It has no bearing!! all NCS is doing is reading the text/number string that is your VO off the memory in these modules in this first step. You will actually select the desired module to code in later steps.

** PRE-02 cars, you wont see the long FA “VO” string, instead there will be a few lines FG, GM, VN, SA followed by numbers, its basically the same thing different format. For all intents and purposes this is referred to by me as the vehicle order or ZCS for a pre-02 car.

ON POST-02 cars select any module with “A’ in front of it, on PRE-02 the “A” modules wont work, you will need to use EWS or KMB for this step… It doesn’t matter which. 

Now this guide will touch on the basics to code INDIVIDUAL items on your car. The steps to add items to your VO and code your modules is different and i wont comment on that here, because it will confuse the amateur. Just understand the basics of individual coding first, then coding from your VO will all make sense later.

3. The next part is to download your factory settings in your car to your PC. Once you get the VO loaded, you hit the BACK button. The default job in NCS is to write SO BE VERY CAREFUL here. You will see all your modules listed, for example “EWS,ABG,ASC,KMB,APL,…..etc” and underneath “SG_CODIEREN”

NCS at this point is set to SG_CODIEREN, which means to WRITE to ALL modules listed. You don’t want to do that.

4. So now select “Process ECU”, and select the INDIVIDUAL MODULE you want to code. For example LSZ (light switch module). Once you do this, it will say only LSZ (and not all the modules in your car).

5. Now you want to change the job from WRITE to READ. Select “CHANGE JOB”, then select “CODIERDATEN_LESEN”. This is to READ DATA.

6. Once selected it will confirm this by indicating the module and job type on the screen. Now you are ready. Hit “EXECUTE JOB”.

It will say Coding Activ, then Coding Ended.

7. At this point, in your NCSexpert/WORK/ folder there will be a file called “FSW_PSW.TRC”

This is what we want, the coding of your LSZ module that we read earlier. IMMEDIATELY save a backup of this file, rename it to FSW_PSW_LSZ_ORIGINAL.TRC and save it somewhere in case you decide you want to revert to the original copy. Now I want you to resave another copy of this FSW_PSW.TRC file as FSW_PSW.MAN (manipulation…hint hint). Make sure it doesn’t save as FSW_PSW.MAN.TXT or some crap like that, it wont work properly.

OK why all this juggling?? because NCS expert only reads modules and saves EVERYTHING as a FSW_PSW.TRC file. Regardless of what module you read in your car, this is what the filename will be. And everytime you load NCS expert, this file is constantly erased, written and re-written. So thats why we are saving it as FSW_PSW.MAN so we can alter it safely without our copy being overwritten.

8. Now open up FSW_PSW.MAN with a text editor.

You will see a long list of stuff like this..


This is where you can code. now its all in german, so you will need to run these words in a translator (google) to understand it, OR you can use NCS Dummy that translates this stuff for you and gives you all available parameters, but thats a whole different program and you ought to learn how to use it.

This is what the above looks like if translated. Now you can see how we can deactivate/activate certain things. I’m going to deactivate DRLs here.

don’t report



By changing to nicht_activ, it deactivates this setting. Now don’t go crazy, some codes are redundant so changing just one thing wont do the trick. This takes some time and effort to find the right code/codes to work with.

9. Once you are happy, SAVE your FSW_PSW.MAN file.

10. Open up NCS expert, load up “revtors” profile (with manipulation enabled), and reload it to the part where the VO is loaded and its asking you to process ecu (Basically steps 1-3) Look above how to do this. Once you’re there, select “PROCESS ECU”, select the correct module you are coding, in this case “LSZ”. Then select “CHANGE JOB” and make sure you pick “SG_CODIEREN”. Once this is done, you are ready to code the car.

NCS will basically now take the FSW_PSW.MAN file, and overwrite the codes in your car’s LSZ module with your new settings. It only uses the MAN file because you are using a profile with “manipulation” enabled. The other mode “expertmode” does not have manipulation, and you cannot code individual stuff like this using that profile.

11. Hit “EXECUTE JOB”. Wait till it says “Coding ended”. Now your new LSZ is coded. Turn off the car, and restart, and check to see if your results are as expected!

12. Open up the /WORK/ folder, open the FSW_PSW.MAN file, select all, delete, save and exit.

Viola! Thats it. You are now an expert on coding individual features!

Now what do you do if you screwed it up or something is behaving funny and you want to go back to original settings. Or you cant remember all the stuff you changed, or don’t like the results.

To load up the ORIGINAL factory defaults if you mess up.

Go to your /WORK/ folder. Open FSW_PSW.MAN, select all, delete, save & exit.

Load NCS Expert

Select “Expertmode” profile

Hit “VIN/ZCS/FA” to load your Chassis and Vehicle order info



Select the chassis, then module you F’d up on. For example “LSZ”

On Pre-02 cars It will say “LSZ” and underneath “SG_Codieren” along with some files LSZ.Cxx, LSZ.PRG, etc etc. SG_CODIEREN is the correct job you want.

On Post-02 cars It will say “LSZ” and underneath “SG_Codieren” along with some files LSZ.Cxx, LSZ.PRG, etc etc. Hit CHANGE JOB, Select “FA_WRITE” Job.

“xx” is usually the specific Coding index used in your default module, its a number. think of this like “firmware version”.

These files are basically from your /DATEN/ folder and contain the proper coding information specific to your car. How does NCS know which files to use? Because it knows by looking at your VIN and VO, then selects the correct files. NCS will then basically read these files, then read your VO and re-write the proper codes, features, activate, deactivate everything to your factory settings.

The job is SG_Codieren or FA_Write because you will WRITE your original settings back in.


Viola, your original data is re-written and your car will work again. Hopefully.


BMW E60 Coding by NCS Expert and INPA K+DCAN Cable

In this blog you will know how to do BMW E60 coding by NCS Expert software and cheap INPA K+DCAN Cable! Check below screenshots to code BMW Control Units step by step!


NCS Expert & INPA K+DCAN BMW Coding Success Steps

Step 1

Use the BMW INPA K+DCAN Cable to connect car with laptop via the BMW E60 OBD2 port.


Open BMW NCS Expert Coding software.

Click “File” then choose “Load File”.


Select “Default Profile” and click “OK”.


Step 2

Press the F1 button “VIN/ZCS/FA”


Then press the F3 button “ZCS/FA f.ECU” and select BMW chassis “E60”.




Step 3

It will show BMW E60 car VIN number, check it then press F6 button to back.


Check if it show “get coded” then press F3 button “Process car” and F4 button “Process ECU”.


Step 4

Now just select the ECU control unit you want to do coding.

For example, BMW E60 6BMOT, click “OK” to continue.


It will show the selected ECU information, click “OK”.

Check if it show the selected ECU +”get coded” then press the F3 button “Execute job”.


And wait it complete, it will show “Coding ended”.

BMW Coding by NCS Expert and $13.99 INPA K+DCAN USB Interface done!



Use WinKFP to update BMW FRM3 after repaired

BMW WinKFP software is used for updating the software from modules on the car. In this post we will show you how to use WinKFP!

This WinKFP job was after FRM3 repair/reflash by Xprog like in our FRM3 repair post!
After FRM3 was repaired, then need to flash the correct software in FRM3 module.
The flash can be done with WinKFP, and in 2 ways.
Comfort mode and develop mode!
The develop flash mode you need when the FRM3 module repair dump not exacly belongs to car, and because safety reasons winkfp not leaves to update! In that case You need to use winkfp develop mode, which allows to be flashed any kind of software in any module!
First of all need to update winkfp spdaten.

After spdaten is updated , then open the WinKFP and choose comfort mode and enter ZUSB (bmw zb, part number), will pop up one window where u will see the choosed zb number, accept it!


When You updating with winkfp, then need to enter the LONG vin number!
Then click done

use-winkfp-5Now you can start programming!
If you getting error , to can`t update because software incompatibility, then need to do by Develop/Expert mode!
In that case note down the details like in pic 4.
Ecu address, Identification number,PABD,P-SGBD.
Now You need to copy the data file from spdaten (exx/data/module name/coresponding data file) to winkfp develop folder (c://ec-apps/nfs/data/develop)
click on expert mode and choose manually all data what u noted down,and the coresponding zb number also!
Now You can start to flash with expert mode!
BMW Coding Tool Winkfp also have more functions like diagnostic , check aif and so on!
If you like to change vin number in any unit, the winkfp is the easiest way!
After finished the flashing, need to recode with ncs expert!



Change BMW Navigation Display Language by Ncs expert

This is step-by-step guide on how to use BMW INPA K+DCAN cable to change E60 navigation language, running with bmw software inpa, ncs expert and ncs dummy.



to change bmw navigation display language





To change the navigation language for free:

Only Italian, Dutch, English available in iDrive menu if using this method







Using K+DCAN cable to change E60 navigation language display:

First: check the battery and ignition status in INPA

Connect K+DCAN cable to the car and car


(the port is close to the left front door, near the the steering wheel)

Run INPA on Windows xp system


Check the battery and ignition is on


Then quit inpa software


Next, Run NCS Expert

Go to the menu bar, select File-> Load file


Select Revtor’s NCS Expert Profile


Click on FG/ZCS/FA (F1)


Then ZCS/FA.. (F3)


Select E60, then CAS



Click on Zuruck (F6), and get the info


Then click on SG bearbeiter (F4)





Then click on SG auslesen (F4), and get the new info



Then, run Run Ncs Dummy

Select module (it’s read by ncs expert)


Browse for FSW/PSW or Nettodate trace 1 (it’s PSW_PSW.TRC)


Page down for SPRACHEN – Languages


Here, take French. Select FSW_PSW.MAM


Then close NcsDummy and will pop up message: trace manipulation file “FSW_PSW.MAM” is not empty. It’s recommended to empty this file after coding. Do you want to empty the file?

Click on Cancel

get the Job Name info


Click on Job andern (F2) in NcsDummy

Select the job name



Click on Job ausfuhrer (F3)



Click on Zuruck (F6) and close the interface


Finally, Check the navigation language

it’s French as the setup just now




How to fix BMW E90 FRM Module by Launch X431

Many BMWs have a Foot Well Module or FRM that controls electrical functions such lighting.
This is the module that sits on the drivers side foot well, behind the hood release (in US cars).


Which vehicles are affected?
E90 Series BMW 3 Series Cars
E70 X5 Series
E81,E82,E87,E88 1 Series
What Faults are covered?
Various faults including
Reversing Lights Not Working
Number Plate Lights Not Working
1 or more sidelight,headlight,brake or tail lights not working



What causes these problems?
The FRM Footwell Module monitors & detects short circuit’s either in the wiring (common in the
E90 boot area) or a short circuit bulb. If you do not get the fault repaired quickly then the module
will eventually permanently switch off that particular output. Once it’s switched off it doesn’t make
any difference if you have repaired the fault the light will stay off.


BMW mechanic replace the complete FRM module at a cost of several hundred pounds including coding the module to your car. Here is the procedure in action on a reset we did to a E90 recently.


Load/re-write the original eeprom dump (parts requires coding as well)
Vehicle model example:
2011 BMW 3-series E90


Read FRM module CPU data with VVDI Prog, Xprog or CG100 ecu programmer. Follow the wiring diagram and read eeprom data.
CPU type 9S12XEQ384



You can see all data shows F, blank data, CPU data may has been lost

Load the original eeprom dump and re-write to CPU.



When do you need coding/don’t need coding?
There are many variants of FRM (Footwell Module) FRM1, FRM2, and FRM3 which all have different controls and functions such as lights, windows and doors. If the eeprom data is exactly the same as your car original data, you do not need coding.  If fog light or aperture still flashes after load original data, you need to do coding.


Device optional:

BMW ICOM Engineering software Ncs expert, Launch X431 V pro, Autel Maxisys Pro MS908P etc



Here is the instruction of Launch X431 Pro, it is easier than ICOM engineering software.

Select vehicle make: BMW
Select Coding/Programming


Select detail model: 3 series E90

Select data stream: FRM Module has been replaced


Select FRM module


Download file


Flash/Reset FRM




FRM module is repaired.


Xprog and Winkfp fixed BMW R56 MCS FRM3 module

Successfully repaired my dead FRM3 model on my BMW R56, with the MINIMUM cost (xprog and BMW ICOM Winkfp)! Here, i wanna share something useful with you all.xprog

Note: The setup below did work for me, but i’m not sure of yours. You are at your risk.


My model:

2011 BMW R56


Reason for FRM repair:

I disconnected the battery and the DME to change the thermostat and when I put it back together the FRM was dead.


Tool i used:
Except the BMW ICOM A2 emulator plus ISTA+ I had, i also was shopping for xprog v5.55 boxes from


Before this whole ordeal of the junk BMW/MINI FRM dying the only software I used was playing with was Carly for iOS and Dashcommand. But cannot solve issues.


BKGD location:

BKGD is on the HC(S)12 BDM adapter in the attached photo.

Vdd(+5V) = Vcc
GND = GND (do not use the GND that is B0)

I think since we are not using the XCLKS and EXTAL flashing works with or without the BDM adapter.
Xprog m software installation:

I was not able to get this software to work with windows 7 64-bit. I was lucky enough to have an old HDD with windows 7 32-bit.
Before plugging in the xprog hardware go to system properties and change the device installation settings to never install driver software from windows update.
Xprog and FRM fix using Xprog:
Once the software was setup I hooked up the frm to the xprog and tried to make a backup of the existing EPROM via the MCU/MPU -> Freescale 9S12XE -> MC9s12XEQ384_EEE profile. Error partition corrupted. Set the sector to 16. I also made a backup of the existing P-FLASH via the MCU/MPU -> Freescale 9S12XE -> MC9s12XEQ384_P-FLASH profile. I think I got errors the first few times I tried to do this but restarting the program resolved the error.
In the MCU/MPU -> Freescale 9S12XE -> MC9s12XEQ384_EEE profile: erase, blank, open good EEE dump, write, verify, close, new, read.
This took several tries because the read back was still showing as blank.
I removed the BDM adapter and went direct into the xprog box. I also closed the program and reopened it when it kept giving me errors. After I was able to get a good write to the FRM I installed it back into the car and it was working again with a couple of errors (xenon high beam failure and fog light failure).
NCS expert & WINKFP setup for FRM:
In NCS expert I backed up the FRM, changed the VO and VIN, reset the FRM to factory and still had the high beam and fog errors. I proceeded to WINKFP to update the FRM and none of the ZB-numbers for my ECU worked. I updated WINKFP with BMW coding tool and the list of available ZB-numbers changed. After WINKFP was able to update the FRM I went back to NCS Expert and copied the VO from the CAS to the FRM and then set the FRM back to defaults. Everything was fixed. Fired up ISTA+ and cleared fault memory.


Afterwards I hooked the frm back to the xprog and made a backup of the EEE and pflash.

R56 HIGH EKS 35 frm3r pl3 6135 3456395 01 23994322 sw141030 hw07 5324828c5
Internet file:
R56 HIGH EKS 35 frm3r pl3 6135 3456987 01 23994322 sw156033 hw11 5324828r5

According to realoem parts 61353456395 and 61353456987 are Bilaterally exchangeable.

xprog-repair-frm3-1 xprog-repair-frm3-2 xprog-repair-frm3-3 xprog-repair-frm3-4

Hopefully this demonstrates to people it’s possible to repair these modules with the minimum cost.


How to retrofit BMW E90 NBT into factory CIC?

Here is the very detail guide on retrofit BMW E90 NBT into factory CIC by a Canadian BMW expert.

Car infomation:
2006 E90 330i
For equipment relevant to the retrofit, my car was equipped with CCC /w voice control, telematics, Logic 7, heated seats, and ALU satin trim. Your car may be different and may require parts suitable for your equipment package.

You ar at your risk. I am NOT responsible if you buy parts that do not fit your car or if you damage your car in the process.

Acronyms and Definitions
CCC – Car Communications Computer iDrive Generation 1: dino era to ~2008
CIC – Car Information Computer iDrive Generation 2: ~2009-2012
NBT – Next Best Thing (aka CIC-High) iDrive Generation 3: ~2012+
K-CAN1/2 – Car Area Network communications protocol
MOST – ring topology fiber optic communications protocol
ALU – aluminum (referring to my aluminum interior trim)
ECU – electronic control unit
TCU – telematics control unit for telematics and BT (TCU also stands for transmission control unit, but were not working on the transmission here)
TRSVC – control unit for rear and side view cameras
quadlock – main square wiring harness on the HU
kombi – instrument cluster
fzd – front courtesy light


Required Parts


eBay NBT kits:
NBT HU (I have HW:07 with internal gyro, although any HW version will work with the emulator I got, including HW:21)
NBT CID (must be 8.8″ from a F20, F25 or F30)
iDrive Controller (see below)

iDrive Controller:
NBT kits on eBay typically include either the F-series standard controller or the touch controller. These run on the newer K-CAN2 protocol, have different mounting points, and have slightly different dimensions than the CIC iDrive controller.

CIC controllers use a separate frame (the black trim you see in pictures)
F-Series controllers have a built in frame

F-series controllers are NOT plug and play on my emulator and will require moving the two iDrive controller CAN wires from before the emulator to after the emulator. They also require your own ingenuity to mount and, at least on mine, a few mm needs to be shaved off from the CIC controller opening in the ALU trim. It’s about 2 mm longer.

My CCC controller with haptic feedback would not register scrolling. You can try your luck with a CCC controller without haptic feedback but you’d be missing the best part of the newer controllers – the shortcuts!

Needless to say, I used a CIC controller and saved the headache. Touch can always be a later project. There are many CIC controllers available on eBay with different part numbers. Not sure what the differences are but they should all work.

If you’re going the touch controller route, it also requires the touch ECU, which is specific to your language.

Whichever route you go, here are some handy part numbers:
CIC Controller Frame 51169170917 (only for <2011 CIC controllers)
Touch ECU English 65829320275 (not confirmed)

E-series cars use K-CAN (100kbps) while F-series cars use ENET K-CAN2 (500kbps). The emulator does nav activation and video-in-motion, but more importantly, acts as a CAN bridge to adapt the communications between protocols. There is no way to use NBT in an E-series without an emulator that does CAN bridging. An F-series activation emulator will not be sufficient.

OEM components coming from CCC (not needed if you have CIC):
CIC HU Front Panel 6 Button+AM/FM+Mode 65129270248 (More info later)
OR Euro CIC HU Front Panel 8 Buttons 65129270250 (not available in NA)
CIC HU Front Panel Knob 65129114289 (CIC front panel came with the knob)
CIC Dash Cover 51459120979 (This has heated seats cutout. Find a different part if you don’t need the cutout.)
E90 LCI Center Console Trim ALU Satin (for CIC controller. Different PN for diff finish.) 51169145143
5x MQS Pins (for eNet) 61131393703
5x OBD2 Pins (for eNet) (No part number since I was given these. Ask at BMW parts counter.)

OEM components coming from either CCC or CIC:
4-6x MQS Pins (for microphone rewiring) 61131393703
Bluetooth Arial Cable 61120137616 (this is from an X5)
Aux/USB center console socket (4 pin version) 84109237653 (you’ll have this if you have USB already. There’s some 6 pin versions but not sure what they’re used for.)
USB cable 61119129360
CAT5 network cable (I used these wires for eNet and microphone rewiring, although any wire would work.)

My car already had AUX so no new AUX wiring to HU was required.

(NBT does not officially have a glovebox USB akin to CIC’s, but one can be hooked up if desired to USB2

OBD2 pins on the bottom and MQS pins on the top


OEM components to remove TCU (since BT is built in to NBT):
If you have a TCU, MULF or Combox, you’ll need to remove it.

MOST Termination Loop 61136917541
MOST Termination Plug 61136917978 (I didn’t need this but other modules might have a combined MOST plug with 4 conductors. Buy it anyways. It’s a few dollars.)
(Optionally you can also disconnect the MOST connection from the MOST junction under the rear seats, but this just seemed easier.)

Aftermarket Components:
NBT CID Display Cable 70CM+ (from the emulator seller)

There is no OEM NBT display cable that I’m aware of that’s long enough to use in an E90. Your other option is to purchase an OEM F30 cable and extend it yourself. It has 4 shielded conductors plus two power lines.
(NBT F30 CID Display Cable 61129261850)

2x #8×3/8″ tapping screws (for CIC faceplate mounting – home depot sku 887480010213)
2x #6 washers (for CIC faceplate mounting – home depot sku 887480024517)

Backup Camera (optional)
Since my NBT emulator emulates the TRSVC unit, I can use any el-cheapo eBay backup camera. I purchased an E90 rear CCD camera that replaces the trunk handle for ~$50 oneBay. NBT takes standard NTSC composite video. Everyone should do this when you retrofit NBT!

The NBT emulator I purchased does not support dynamic parking lines. Neo also has another unit that will superimpose the parking lines based on steering wheel angle. I wish I knew he offered this when I made my purchase!

Random Stuff:
Trim removal tools (ebay)
Cheapo multi-meter
Dremel with cutoff wheel
zip ties
fabric tape
electric tape
heat shrink tubing
torx screwdriver bits
random common tools
Posi-Taps and Posi-Locks (for those who want to avoid soldering. available on amazon)
0.5A fast blow fuse and inline holder (for rear view camera)

Coding Hardware and Software:
ENET cable
INPA K+DCAN USB Cable (comes with pin7&8 switch, do not need to solder pins 7&8)
Laptop running 32bit windows (use vmware if necessary)
eSys + PSdZDATA (and token and/or patched esys jar files)
NCS Expert + datan (to decode any removed modules)


I’m not going to cover everything. Instructions to remove specific parts can be found all over the internet. All you need to do is google “bmw e90 remove [part]”. I’ll only cover areas that are not well documented or I had trouble doing as others suggested.

Most of the pins, including the quadlock, are standard MQS pins. The exception is the OBD2 port, which uses different pins. See eNet section for pictures.

Remove existing HU
This has been well documented with the CIC retrofit threads.

Wire eNet if coming from CCC
CIC equipped cars are already prewired with eNet wiring. CCC cars need 5 new wires.
On my car, pin 29 on the quadlock was already occupied by a positive fan power line for the CCC unit. This won’t be needed since we’re taking out CCC. In it’s place, you can wire up ETH_A.
Match up the wires from the quadlock to the OBD2 using these two pinouts diagrams.



Wires can be pulled under the carpeting in the driver footwell. Remove the driver foot panel and the panel covering the obd2 port. 3 torxs screws on the foot panel. 2 philips screws on the obd2 cover. Careful with the MOST diagnostics port connected to the foot panel. As always, treat fiber optic cables with the utmost respect! Do not bend them any more than absolutely necessary!

Wire microphone from courtesy lights to quadlock
Remove FZD (courtesy lights) by taking out the two sun visors. You can get your hand between the headliner to release the two clips right above the circular lights. I tried using the screwdriver prying method others talk about online to no avail.

Remove A-piller.
Remove glovebox

Pull wire down, making sure the wire in the A-piller is where the existing wires are bundled and not in front of the curtain airbag. Wires went behind the square metal bar used to hold he glovebox in place. If wiring is above, below or in front, I would expect trouble reinstalling the glovebox.

Microphone and quadlock both use MQS pins. Mine had two conductors although some may have three.









Wire BT antenna from driver footwell to HU
Remove driver side foot panel. It’s three torx screws. BT module is the little black box towards the left mounted on the backside of the panel. You’ll need to shave off one of theflanges on the NBT Bluetooth connector to fit the BT cable. Look carefully and you’ll know which one needs to go. No modifications necessary on the BT aerial end.

Wire USB from center console to HU
Remove rear air vent by pulling the back or using a trim tool. Pull air vent back as far as possible by releasing the retention clips on the sides. Stick your hand between to push out the aux faceplate strait up and out. This was a real punisher with lots of pain.
Take out the gear shifter by pulling strait up. Pull up the black plastic frame surrounding the gear shifter by grabbing the edge through the faux leather. Take out the centerconsole trim by grabbing through the gear shifter hole and pulling strait up hard. Pull the new USB wire to the HU.

Note: USB cable needs to be rotated 180 degrees. You can do that by shaving the connector and cutting off the clip on one side.






Wire backup camera from trunk lid to HU
Instructions are all over the internet for installing it on your trunk. Pull the composite video cable up to the quadlock and plug in the two MQS pins.

To get wiring past the backseat to the cabin, remove the seat cushion by pulling it strait up near the corners. You can pull this wire without taking out all the trim on the right side of the car. Simply slip it under the black plastic edging. Here, you’ll be up to the glovebox.
Inner wire on the composite cable is the positive.

I got a switched positive lead from pin 13 from the quadlock using a posi-tap on the plug and play harness. This is a radio_on trigger line with a 0.5A current load. Although the camera consumes <100mW, make sure to add a 0.5A inline fast blow fuse to protect the head unit. Ground can come from most nuts and bolts in the trunk. Use a multimeter to test for power.










Retrofit NBT LCD to CCC/CIC monitor frame
Get the CCC or CIC screen out. See CIC retrofit threads if needed. It’s only held in by two torx screws at the top.

Take off the back plastic cover from the NBT CD screen by releasing the clips. The LCD is attached to the front glass by double sided foam adhesives. You’ll need to break the bond with brute force. Grab the LCD and pull directly out as hard as you can. You’ll break the outer glass in the process. After it breaks, just keep pulling until you get the screen out. The inner frame will take the stress off the LCD panel and you won’t damage the LCD in the process.
Next, cut off the lower edge and metal hooks with a dermal.

The NBT LCD had a thinner bezel than my CCC screen. Shave or dremel out anything that prevents the LCD from sitting flush in the frame, namely the two edges where the wings are different. Remember to use masking tape and paper/bag/something to seal the LCD opening in the CCC frame to prevent shavings from entering the area while you’re trimming the edges.
Take a look at the screen in the frame to feel out the “center” position for the LCD screen. Cut and stick 3M double-sided foam adhesives to the LCD frame. Stick. Done. You’ll only have one shot. Get it right! If you want to go crazy, dremel out everything that’s preventing the back plate from clipping back together.














Install NBT head unit in dashboard
I used a plug and play wiring harness instead of tapping and cutting the original wires. This was by far the most painful part of the installation. It took me 4 hours and a lot of scrapes. At the end, I had to remove the radio/climate frame and put all unnecessary stuff to the empty space on the right. I also needed a zip tie to hold up the bundle of wires to clear the USB, BT, and video connectors.

I haven’t made new mounting points to screw in the HU yet. It should require drilling two holes and moving the metal clips that the screw threads catch on to.
Note: If you have Logic 7 and going for the plug and play wiring harness, you’ll need to transfer the fiber optic lines from the original quadlock to the new quadlock. Be gentle with the fiber optic cables.


Remove redundant parts (TCU, MULF, Combox)
My TCU was in the trunk under the removable bottom panel. I didn’t take any pictures in the process but it’s pretty simple. Just unplug everything, plug the MOST line in to the MOST terminator and wrap everything up with foam to prevent rattles. This took me at most five minutes.




Install new CIC front panel and dash cover
Cut upper pins. Cut clips. Shorten guides and screw in front panel.



You’ll need your emulator provider to do the coding or provide instructions. The coding to get it working at a bare minimum level is beyond me and probably specific to the emulator’s implementation.
I did some coding myself with e-sys. There’s no DHCP server handing out IP addresses to the NBT. Connect via gateway URL using default IP: port with windows Ethernet IP set to and gateway I had to make my own VO file before e-sys would code successfully.
I should have needed to remove TCU VO to prevent SOS error. However, for some reason, mine didn’t throw an error on the kombi so I didn’t do this step.

Open Issues with Coding/Firmware

I’m sure most of these can be corrected with coding.

  1. [FIXED with firmware update] North America 2015-1 NEXT maps don’t map addresses correctly in my area. NA 2014-2 seems better.
  2. RDS-TMC traffic not working
  3. [Fixed with coding] Can’t seem to remove BMW Assist menu items (probably some coding issue)

Observations about NBT in E-series

[FIXED with firmware update] Reads but cannot play MP3s from USB. Oddly, can copy to hard drive and play without issues.

[FIXED with firmware update] Navigation arrival time wrong. Makes the nav unit just about useless.

Emulator supports video in motion.

Sports display units do not stick. Will need to change to HP & lbs/ft each power cycle.

CIC front panel backlights are lit when I enter the car. Apparently this is to match cars with FRM2 and FRM3’s welcome lights that turn backlights on on unlock.

US CIC faceplate with 6 buttons, AM/FM and Mode buttons. 1-6 are touch sensitive, and AM/FM and Mode act as shortcut 7&8. Coding to 6button_us only disables AM/FM. Fix, buy euro faceplate?

[FIXED with firmware update] Service required menu shows two blanks for sparkplug and microfilter. Apparently these fields were removed from F-series vehicles. Can be coded out of kombi on E-series to remove the blanks.

Next Steps

[Done] Drill new holes in dash bracket to secure NBT head unit.
[Done] Clean up rear view camera wiring.
[Done] Reinstall dash trim.

NBT is great! Best thing you can do for your car if you’re looking for something refreshed from CCC or CIC. Not much more I can say asides from the system being absolutely wonderful to use! It has all the bells and whistlers of any modern media system.

DIY Coding BMW E90 with INPA,Ncs Expert on K+DCAN

Here is the detail tutorial on coding BMW E90 vehicle for beginners.

Tools needed:
1. Computer/ laptop(Dell D630 is better)
We recommend that the computer you use has a Windows XP 32bit operating system (OS) installed. Although, others have reported to get the software needed to program BMW E90 vehicles to work on Windows 7 and above OSs as well as 64bit OSs, but most users have the most programming success using the recommended OS (Win XP 32bit).

2. Diagnostic cable:BMW INPA K+DCAN USB interface, cheap US$13.99 at obdii365.com.


The Software

The 3 programs below are needed or recommended for coding your BMW E90 car:

NCS-Expert (Version: 3.1.0 with Daten Files Version: 51.2 or above)

INPA (Version: 5.0.2)

Ediabas (Version: 7.2.0)


We recommend buying cj83lex’s Everything You Need To Code Your BMW package for $5.00. You will probably want to go ahead and grab the latest data files addition he has for $10.00 extra. So for a total of $15.00 you will have everything you need software wise to program your BMW E90 car. Note, everything that he does provide in the package you can find around the internet, but it can take a lot of time to gather up the right software versions as well as finding download links to the software that are still active.

Some have stated the Ediabas program is used to communicate diagnostics information from your car.

NCSExpert is a program that is used to read and write new parameters to your car. NCSExpert will be the main program you use to code your car.

Inpa is simply a program used to run diagnostics on your car, for example, checking the status of your air bags.


  1. Setting Up The Coding Environment

The next thing we need to do is to get your computer’s programming environment setup. For most, setting up the environment is usually the toughest part. But after your computer is setup, the rest is really straight forward.


Step: 1 – C Directory Configuring & OBD Setup

Unzip the “NCSEXPER.rar” file, and place the 3 folders (EDIABAS, INPA, and NCSEXPER) inside the zipped file in the C:\ folder. Your C:\ folder should have the following highlighted folders added:


Navigate to C:\INPA\BIN

Right click on INPALOAD.exe and create a shortcut to desktop

Navigate to C:\NCSEXPER

Create a shortcut to your desktop of the “WORK” folder

Navigate to C:\NCSEXPER\BIN

Create a shortcut to desktop of “NCSEXPER.EXE

Navigate to C:\EDIABAS\Hardware\OBD and run the OBDSetup.exe. Your screen will look something like the image below. Since I have ran this script previously, it might look a little different the first time you run  it. Press any key to close the window, and then restart your computer!


Step: 2 – Setting Up Environment Variables

Go to System Properties (click the start button, and right click on My Computer and click Properties)

Click on the Advanced tab

Click on Environment Variables

Under System variables, highlight “Path” and click edit


Add the following to the end of the Variable value:;C:\ediabas\bin


Click OK. You can then close out of all the open windows and return to your desktop.


Step: 3 – INPA USB Interface Configuring

For this step, I am assuming you have the BMW INPA / Ediabas K+DCAN USB Interface cable mentioned above under the Hardware section. If not, the following steps may not apply to you, and a different configuration may be needed to properly setup communication to your car.

From desktop, press the WINDOWS KEY + R and type devmgmt.mscand click OK.


After clicking OK, Device Manager will open

1)Expand the Ports (COM & LPT) section and plugin your USB Interface cable into your computer.

2)You should then notice a new device show up called USB Serial Port (COM*). For my computer, since COM1 and COM2 were already in use, my computer automatically assigned the device to COM6. Since INPA and NCS Expert are by default setup to use COM1 to communicate with the vehicle, we will need to change the assigned port to COM1. Note, there is a way to change the communication port INPA and NCS Expert uses to communicate to your car, but I find it easier to just assign the USB Interface cable to COM1.


3)Since in my case COM1 is already being used by something else, I needed to Disable that device from using that communication port. Right click Communications Port (COM1) and click on Disable.


4)Now we need to make some changes to the USB Serial Port. Right click on USB Serial Port, and click on Properties.


5)Click on the Port Settings tab, and verify the following values are as follows:

Bits per second: 9600

Data bits: 8

Parity: None

Stop bits: 1

Flow control: None

6) Click the Advanced button


7)Change COM Port Number to COM1


8)Change Latency Timer (msec) to 1 and click the OK button and exit out of Device Manager and return to the Desktop.


9)Plug your USB Interface cable into your car if you have not done so already. Do not start your car just yet. Next, open up the INPALOAD.EXE program located on your Desktop.

I recommend keeping a battery charger attached to the car’s battery, since the following steps require the ignition to be on to work correctly.


Step: 4 – Coding E90 with INPA

INPA is a great tool to use to verify that your car is correctly communicating with your computer. Again, INPA is only a diagnostics program used to check the conditions for different parts of the car. For now, we only care to use it to make sure there are no communication problems and our USB Interface cable is working.

1)When the program opens, you should see 2 circles. One for Battery, and the other for Ignition. At this point, if you have not turned on your car’s ignition, only the Battery circle should be solid black.


2)Turn on your car’s ignition but do not start the car’s engine. After doing so, in INPA, the Ignition circle should turn solid black.


3)Next we need to tell INPA what type of car we are dealing with. Press F9 for the E90 menu.


4)On the Scrip selection popup window, select Karosserie, and in the second window pane, double click Airbag.


If you receive a “Versions do not match” and “Language variants do not match” error, everything is usually fine. According to some, it has something to do with the newer version of  EDIABAS. If you do not receive any errors, that is fine as well.


5) Normally, if you did not receive any errors after clicking on Airbags, or if you received the 2 errors mentioned above, most would say you are ready to move on to using NCS Expert. However, just as a precaution, let’s verify we do not receive any errors if we check the state of our seat beat buckles. This test will only work if you do not have any seat belt buckle issues already. So I’m assuming your seat belts are in working condition.

6)Unbuckle any buckled seat belts in the car

7)In INPA, click the Status (F5) button.


8)Click the Buckle (F5) button


9)You should now be on a Buckles screen that has several sections with circles. We are going to only focus on the Driver’s buckle for this test. If you are following this guide step by step, the Buckle plugged should read “no” and Buckle attached should read “yes” with a solid black circle.


10)On the driver side of the car, buckle the seat belt into the buckle. After doing so, in INPA, the Buckle plugged should read “yes” with a solid black circle.


11)If you received no errors while performing the seat buckle test, congratulations! You are now successfully communicating with your car and ready to move on to using NCS Expert. Again, INPA is a great tool to use to make sure the communication between the car and your computer is working correctly before using NCS Expert.

12)Close INPA and start NCSEXPER.EXE located on the Desktop.


Step: 5 – Using NCS Expert

For this step, we will create a new profile in NCS Expert which will be what you will use for most of your coding in the future. Also, just to get your hands wet for the first time, I will show you how to code/activate the famous BC Digital Velocity feature for the car.

Do not skip any of the following steps. AGAIN, do not, do not, do not skip any of the following steps. Doing so leads to the risk of you screwing up your car from starting or worse. If you receive any errors from NCS Expert at anytime, STOP moving forward in this guide and recheck your steps or try Googling the problem you are having.

1)When you open NCS Expert, you should be presented with a window that looks like the following:


2)Click File, and then click on Load Profil


3)Choose the Expertmode profile and then click the OK button. Note, the list of profiles you have to select from may be different than mine. That is fine. If you do not have an Expertmode profile, you need to retain a copy before moving on.


4)Click File, and then click on Edit Profil, and for the Password, input the following and click the OK button: repxet
5)In the Profile editor popup window, click on the Car-Keymemory button and make sure all 3 boxes are checked on the Car Memory popup window and then click the OK button.


6)Click on the consistence check button, and you should receive a popup Info window that says “konsistence check OK”. If so, click the OK button on the popup window.


7)Click on the FSW/PSW button, and verify the from CVT option is selected, and check both boxes for FSW-/PSW-Trace and FSW-/PSW-Manipulate with FSW_PSW.MAN. Next click the OK button.


8)Click on the consistence check button again, and you should receive a popup Info window that says “konsistence check OK”. If so, click the OK button on the popup window.


9)Click on the OK button to close the Profile editor.


10)Click File, and then click on Save Profil as. Change the File name to FZG2.PFL, and make sure the File name does not already exist in the select pane below it. Also make sure the PFL folder is selected in the Folders select pane. Then click the OK button.


11)Click File, and then click Edit Profil, and enter the same password (repxet) as before. Next click the Profile info button and change Profile name to FSW PSW MAN and then click the OK button. Then click the OK button to close the Profile editor window.


12)Click File, and then click Save Profil.


13)To sum of what we just did, we have just now created a profile that will write information to the car from a .MAN file that will be located in our NCS Expert WORK folder. We will get to that in a minute. The most important point here is, in the future when you start NCS Expert, you need to load the FSW PSW MAN profile instead of the Expertmode profile. If you click File, and then click on Load Profil, you will notice the new profile (FSW PSW MAN) you just created is now listed as an option to select.

14)After you load the profile, you will see new options to select from under F1, F2, and F3.


15)Press F1 or click the VIN/ZCS/FA button.


16)Press F3 to choose the CHASSIS for the vehicle. I am going to assume you are trying to code an BMW E90 vehicle, so in the pop-up window, choose E89 from the list and press the OK button. We are basically telling what type of vehicle we are working with. Another window will pop-up after clicking OK, and from that window, choose CAS for the ECU and press the OK button. We need to choose the ECU so NCS Expert can retreive the car’s VIN number and Vehicle Order (VO) so that it knows what parameters to use to program the car.



17)In NCS Expert, you will notice beside FG is the VIN number and FA contains the VO for the vehicle. The FA string can be changed if needed, but we will not get into that in this guide.


18)Press the F6 button or click the Back button. Note, the Function buttons may be grayed out for a few seconds. When you press the Back button, NCS Expert is reading all the values from every module in the vehicle and storing them in a FSW_PSW.TRC file located in the NCS Expert WORK folder. It does this automatically, and will overwrite the file if it already exists.


19)Open your NCS Expert WORK folder (you should have a shortcut on your desktop to the folder). As mentioned before, you should notice a file in your work folder called FSW_PSW.TRC. This file was automatically created or updated by NCS Expert. A common practice is to make a backup of this file each time you plan to make coding changes to a module in the car. I normally have a folder inside the WORK folder called Backup, and I place all my backups in that folder. So copy the FSW_PSW.TRC file and paste it in the Backup folder or somewhere else on your computer in case you need to restore your settings.




20)In NCS Expert you will notice under get_coded a list of modules selected to get coded. All the parameters/settings for these modules are what’s listed in the FSW_PSW.TRC file you just took a backup of.


21)Since to activate the BC Digital Velocity we only need to deal with the KOMBI module, we are going to select only that module to get coded instead of all the modules. Press F4 or click the Process ECU button.


22)Choose the KOMBI ECU from the pop-up window and press the OK button. Note, for my 2009 BMW E90 my BC Digital Velocity settings were located in the KOMBI module. For some, it may be the CAS ECU you need to select. But for now, just follow along, and if you cannot find the line to edit in the KOMBI module, just start back at this step and select the CAS ECU instead of the KOMBI ECU.


23)You should now notice in NCS Expert under the get coded text that only the KOMBI module is listed instead of all the vehicle’s modules.


24)Press F4 or click on the Read ECU button. This will overwrite your FSW_PSW.TRC file in the NCS Expert WORK folder again. However, this time around it will only read in the values from the KOMBI module instead of all the modules in your car. You will notice the size of the FSW_PSW.TRC file is a lot smaller than before as well. In my case, it was only 9KB instead of 234KB when NCS Expert read in all the values for every module. You will also notice a NETTODAT.TRC window pop-up.Just exit out of that window. Additionally, you will notice a string of text under KOMBI that says Coding ended. That means NCS Expert has completed reading the ECU.



25)In the NCS Expert WORK folder, open the FSW_PSW.TRC file in Notepad++.  Note, if you do not have Notepad++ installed, you can also open the file in the standard Notepad program.


26)We need to go ahead and save this file with a .MAN extention instead of .TRC since NCS Expert is setup to code your car with the FSW_PSW.MAN file located in your NCS Expert WORK folder. So in Notepad++, click on File, then click on Save As, and then change the file name to the following: FSW_PSW.MAN
Note, it is okay if the FSW_PSW.MAN file already exists in your WORK folder. Just overwrite it.




27)After you save the file, notice in Notepad++ the tab should have a title that says, FSW_PSW.MAN instead of FSW_PSW.TRC.


28)In Notepad++ use the search option to search for the following parameter: BC_DIGITAL_V


29)If you have not noticed already, some parameters have the word “aktiv” under them, and some parameters have “nicht_aktiv” under them. Thebasic fundamentals for most parameters are, if it has the word “aktiv” underneath it, it means that parameter is active (enabled). If the parameter has “nicht_aktiv” underneath it, it means thatparameter is not active (not enabled). As you can see from the above screenshot, the BC_DIGITAL_V parameter is not active. So to activate the BC Digital Velocity feature, replace the word “nicht_aktiv” with the word “aktiv” and save the file.


30)In NCS Expert, press F5 or click the Basic functions button. In the pop-up window select the coapiReadSgGetFswPsw function and press the OK button. Selecting this function simply tells NCS Expert that we would like it to use the parameter values from the FSW_PSW.MAN file that we just edited when we code the car. Another pop-up window (coapiReadSgGetFswPsw) will appear that has the CBD name and other text fields. Do not change anything, and just press the OK button.



31)A pop-up window (coapiReadSgGetFswPsw) should appear with the message that says, “basic function perfect ended”. If it does, pres the OK button. If it does not, you may have done something wrong in one of the above steps, and do not continue forward.

32)We need to change the JOBNAME from CODIERDATEN_LESEN, which means NCS Expert will read the information from the module instead of writing to it, to SG_CODIEREN, which means we want NCS Expert to write the information to the module. Press F2 or the Change job button, and in the pop-up window, select SG_CODIEREN and press the OK button.



33)Finally, the step you have been waiting for. We are now ready to write the changes to the module. Make sure beside JOBNAME NCS Expert has SG_CODIEREN selected. Next, Press F3 or the Execute job button.


34)Next under KOMBI, you will notice a text string that says Coding activ, which means coding is taking place, and after it is done coding the changes, the text string will say, Coding ended.


35)Congratulations! You have coded your first feature on your car! After the coding has ended, the vehicle will restart. Afterwards, press the BC button a few times until you see the velocity screen.


I hope this guide was useful for you. I know it was extremely long, but once you code a few more features, this process will be second nature to you and you’ll look like a pro in no time.