If you have an interest in programming your E90 BMW vehicle, there are 2 important hardware components are you are doing to need:
- Computer (Laptop Recommended)
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).
- USB-OBD2 Cable
Obviously you need a way to connect your computer to your BMW vehicle. The cable we recommend for accomplishing this is the BMW INPA / Ediabas K+DCAN USB Interface over at One Stop Electronics. There are cheaper cables out there, but sometimes you get what you pay for, and when programming a car that probably cost you thousands, it is worth spending the extra cash to invest in a reliable cable.
The 3 programs below are needed or recommended for coding your BMW E90 car:
- NCSExpert (Version: 3.1.0 with Daten Files Version: 51.2 or above)
- Inpa (Version: 5.0.2)
- Ediabas (Version: 7.2.0)
The following text editor program is optional but recommended, and is what will be used in some of our tutorials:
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.
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. Helpful link to learn more about NCSExpert: Click Here
Inpa is simply a program used to run diagnostics on your car, for example, checking the status of your air bags.
Some have stated the Ediabas program is used to communicate diagnostics information from your car. Helpful link to learn more about Ediabas: Click Here
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.
- 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!
- Go to System Properties (click the start button, and right click on My Computer and click Properties)
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.msc and click OK.
- After clicking OK, Device Manager will open
- Expand the Ports (COM & LPT) section and plugin your USB Interface cable into your computer.
- 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.
- 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.
- Now we need to make some changes to the USB Serial Port. Right click on USB Serial Port, and click on Properties.
- 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
- Click the Advanced button
- Change COM Port Number to COM1
- Change Latency Timer (msec) to 1 and click the OK button and exit out of Device Manager and return to the Desktop.
- 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.
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.
- 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.
- 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.
- Next we need to tell INPA what type of car we are dealing with. Press F9 for the E90 menu.
- 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.
- 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.
- Unbuckle any buckled seat belts in the car
- In INPA, click the Status (F5) button.
- Click the Buckle (F5) button
- 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.
- 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.
- 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.
- Close INPA and start NCSEXPER.EXE located on the Desktop.
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.
- When you open NCS Expert, you should be presented with a window that looks like the following:
- Click File, and then click on Load Profil
- 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.
- Click File, and then click on Edit Profil, and for the Password, input the following and click the OK button: repxet
- 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.
- 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.
- 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.
- 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.
- Click on the OK button to close the Profile editor.
- 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.
- 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.
- Click File, and then click Save Profil.
- 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.
- After you load the profile, you will see new options to select from under F1, F2, and F3.
- Press F1 or click the VIN/ZCS/FA button.
- 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.
- 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. To learn more about how to change the FA click here.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- After you save the file, notice in Notepad++ the tab should have a title that says, FSW_PSW.MAN instead of FSW_PSW.TRC.
- In Notepad++ use the search option to search for the following parameter: BC_DIGITAL_V
- If you have not noticed already, some parameters have the word “aktiv” under them, and some parameters have “nicht_aktiv” under them. The basic 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 that parameter 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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. To code other features for your car, visit the Coding Tutorials area.