Register and Code a New BMW Battery Comprehensive Guide

Topic: Reading if you’d like to know why it’s important to register and code a new BMW battery, and how you can get it done yourself!


Read me firstly: if you have an older E90, this doesn’t apply to you, this guide only applies to vehicles equipped with IBS (intelligent battery sensor). Registration and coding will not be successful on older vehicles that are equipped with basic power management systems.


Q: I replaced my battery and it works just fine, why all the fuss?

A: Disregarding the need to register and code for a new battery may result in improper charging. Over time, improper charging may have detrimental effects on the lifespan of your cars battery and the operation of the vehicles electronics.


Q: Why do I need to register a new battery?

A: The short answer is that BMW designed the charging system with an algorithm that varies the rate of charge by the age and type of the battery installed. Registering a new battery resets the algorithm back to optimal charging voltage for the specified battery.


The long answer: “The negative battery cable has an electronic control unit on the battery end of it called an intelligent battery sensor (IBS). The IBS measures the state of battery charge and sends this information to the ECU. The ECU uses this information to control how much charging voltage is needed from the alternator to support vehicle electricity needs. A battery deteriorates normally over time and depending upon service demands and driving profile. The IBS reads this and the ECU tells the charging system to increase voltage and amperage output incrementally as the battery matures. Therefore, at battery replacement time, if you don’t tell the ECU it has a new battery it will overcharge the new battery causing it to wear out faster.


The registration process takes place in the ECU, which is the main player in this system. Also, when the IBS sees that battery voltage is too low for normal vehicle operation it can start shutting down vehicle functions to conserve power while keeping the vehicle operational. This would be accompanied by a check control warning of excessive battery discharge.”


Q: Why do I need to “code” for a new battery?

A: The answer to this varies. You may not have to! That is, so long as you replace your old battery with an exact replacement. However, if you switch from a wet-cell type battery to an AGM type battery, or vice versa, you must code for the change.


AGM and wet-cell batteries require a different rate of charge output from the alternator. Moving between these two types without coding can lead to over-charging or under-charging.

Also, batteries have a discharge rating called amp hours (ah). You must specify to the dme what the “ah” rating of your battery is so the car can run the proper charging algorithm.


Q: I bought a lightweight battery, but the “ah” rating for my new battery is less than the lowest setting available in the CAS/NFRM module. Is this ok?

A: While not ideal, you can certainly use your new battery. Code your car for the setting that best matches your new battery. Most important is ensuring you’ve changed the settings from wet-cell to AGM type, if necessary. Consequently, you may negatively impact the life expectancy of the new battery by coding say an 80ah AGM charging map when your lightweight battery has a discharge capacity of only 18ah…


Personally, I am running a Deka/East Penn Sports Power ETX-30L Battery ($103.99). I used XS Power 586 Tall Brass Post Adaptors (M6 Thread). The Deka ETX-30L is rated 400CCA @ 28.6Ah(20HR) and is a 21lb AGM type battery.


My 2011 E82 did not have a charging map listed in the CAS module for anything less than 80ah AGM. Therefore, this is what I chose when I coded my car (initially). There are people that have reported seeing options in the CAS module for as low as 40ah AGM. I believe updating to a newer CAS ZB software may provide more options. Or, maybe the additional options are only available in the CAS module for higher end models like 335is E92’s? I can only speculate as to why some people have more settings available than others.


I ended up using Carly to code my battery again. Even though the lowest setting I found in the CAS module was 80ah AGM, Carly provided a 36ah AGM option. After using Carly to code my new battery, INPA does indeed confirm (see appendix D) the charging system is using a 36ah AGM charging map, or at least INPA recognizes that’s what Carly set it to.


Q: What are BMWtools and where can I get them?

A: You can follow this guide: https://spool [Delete this] stre…uide-setup.13/. This will provide you with a fully loaded virtual machine that can accomplish programming and diagnosing almost any issue with your car. Give credit where credit is do! See Appendix C for a brief overview of various BMW software.


Q: What cable do I need to connect to use BMWtools on my laptop/device?

A: I use a generic OBDII to USB (K+DCAN) cable I got off, and it works fine ($15.99):


You can combine the cable with an OTG adapter to use with portable devices. This will allow you to use apps such as Carly, Torque, Trackaddict, and Harry’s lap timer to name a few.


Q: Can I use Bluetooth?

A: I bought a generic ELM327 OBDII to Bluetooth adapter for use with apps like Carly, Torque, Trackaddict, and Harry’s lap time to name a few, and it works fine ($6.99):


Q: I installed a battery with exact replacement specs (e.g. 80ah wet cell with 80ah wet cell). How can I register my new battery?

A: There are several methods that can be used to register a new battery. See options 1, 2, and 3 below:


Q: I installed a battery of a different type and/or capacity (e.g. 80ah wet-cell with a 90ah wet-cell, or, 90ah wet-cell with a 40ah AGM). How can I code for the changes I made to the battery?

A: There are several methods that can be used to code for battery changes. See options 1, 2, 3 and 4 below:


Read me firstly: If you got BMW ICOM, it includes all bmw standard tools and add more. it includes all of following mentioned Rheingold (ISTA-D), Ediabas Toolset32, NCSexpert and NCSDummy, etc.


Option 1:



Use Rheingold (ISTA-D) to REGISTER and/or CODE a new battery. The virtual machine, mentioned above, comes pre-loaded with this dealer level software. An ICOM emulator is all setup for you to use this program with the aforementioned K+DCAN cable.


Rheingold is an amazing tool. It will automatically diagnose issues with your vehicle and provide a corrective action plan to fix them. It will even tell you the steps you need to take to re-program things with a separate program called ISTA-P.



1) Turn ignition to the “on” position. INPA can be used to verify the car is communicating properly. INPA shows when the ignition is in the on/off position.

2) Load Rheingold

3) Click the “Identification” tab

4) Click “Read out” tab and then “start” in the bottom right (takes a long time to gather cars info)

5) Once vehicle info has loaded (verify your vin is accurately displaying) click the “Vehicle management” tab

6) Navigate to: Service function>body>voltage supply>battery>register and then click “start search”

7) Select result “ABL register battery replacement”

8) Rheingold then walks you through your options! You can simply register a new like-for-like battery, or you can change the battery capacity. Rheingold will prompt you to perform coding using ISTA-P!


Option 2:



Use Ediabas Toolset32, a software packaged with the BMWtools suite, to REGISTER a new battery



1) Run Tool32.exe

2) Navigate: File>Load SGB>C:/EDIABAS/ECU/[choose the appropriate .prg file for your DME – see appendix A]

3) Look up steuern_batterietausch_registri (near bottom of job list)

4) Go to Jobs menu

5) Select Run Job (German: Job Einmal Ausfuhren [run job once])

6) Verify operation reports “Okay”


Option 3:



This method is a bit incomplete in regard to coding. It uses NCSexpert to edit the settings in the CAS and NFRM modules. Essentially, you are manually changing the settings in the CAS/NFRM module to reflect the new battery.


*****While this method seems like a straightforward way to code for battery changes, it fails to address the issue of vehicle order (VO). This could have implications for future coding and ZB updates. See option 5.


*****After completing this coding, you must still perform “Option 3” to register the new battery using Tool32. Or, you can use ISTA-D to do the registering, but then you might as well also use ISTA to do the programming at that point…



1) Load NCSExper.exe

2) Select a profile that has manipulation enabled: File>load profile> “CNCcoding”

3) Select: F1>F3>select your chassis>select “CAS”

4) Press F6 for back

5) Press F4 to select a specific module “Process ecu” then you get a list of all modules available for your car

6) Select “CAS” then select “READ ECU” this is going to read all the values from the specific module and create an FSW_PSW.TRC file with the values

8) Leave NCSExper.exe open and navigate to the “work” folder ([X]:\NCSEXPER_64\WORK)


The FSW_PSW.TRC file we generated when we “read” the CAS module is where we are going to change the battery settings. After making our changes, we will then change the file extension to the file type NCS uses to write to the selected module (.MAN).


At this point, you can also use a program called NCSDummy to make things easier. You can use NCSDummy to import the .TRC file. NCSDummy will provide translations and descriptions for all the settings in the CAS module. I will not cover the details on how to use NCSDummy, it is very easy if you search. The following steps continue with how you can just simply edit the .TRC file in notepad to achieve our goal of coding a new battery:


9) Open the generated FSW_PSW.TRC file with notepad

10) Select: File>save as>FSW_PSW.MAN (be sure to select “save as type” to all files so that it will accept the “.MAN” extension. If you fail to do so it will just save it as a text file .TXT)

11) Search for the option “KLASSE_BATTERIE” and change the value from its current setting to a setting that most closely matches the rating of your new battery (e.g. “90ah” to “70ah” or if using an AGM battery “70ah_agm”) (see Appendix E)

12) Select: File >Save

13) Back to NCS now hit F5 for basic functions

14) Select “coapiReadSgGetFswPsw” and then “ok.” You are basically telling NCS to read all the values from your .MAN file. You will see a screen… just press ok. Then press ok again.


Ok now take a look where it says “JOBNAME = CODIERDATEN_LESEN” We need to change that to a coding function because we want to write the changes to the module, not READ as we did earlier.


15) Select F2 “job”

16) Select SG_CODIEREN and press ok

17) Then press F3 to execute the job. After a pause you will see the “coding ended” message!


I am not sure if these steps are 100% what you’ll see. It’s been a while since I coded my battery, but I’ll update the steps as needed.


Instead of clicking “Process ECU”, you can click “Process car” (F3), and then “Code Car” (F1). This will code every module in the car (might take longer like 5minutes) for the changes you made in the .MAN folder for the CAS module we read. There are changes that may need to be made in NFRM that this will take care of.


The battery rating should now be updated in the system. You can verify the coding was successful by performing the steps outlined in Appendix D.


Option 4:



This is the proper method to manually code for changes to the battery. Your vehicle order (VO) stores all the information regarding the various hardware your car came with from the factory. For example, if your car came with a wet-cell 70ah battery, your VO will read out with attribute -B070 (see Appendix B). Now, lets say you used option 4, above, to manually change the CAS module to reflect a new 70ah AGM battery. Your VO will still reflect the old battery of –B070. You want your VO to be updated to read -A070 (see Appendix B).!


If you go to the dealer, their software (Rheingold/ISTA-D and ISTA-P) will read your VO and recommend diagnostic/programming changes as if you still have that old battery installed. Basically, their software would overwrite the changes you made in option 4 and set all the coding back to the settings that reflect the old battery!


This is also how people lose their DEALER flashed PPK tune. The dealer fails to perform the proper programming portion of the PPK flash and the VO is never updated to reflect the PPK tune is installed on the vehicle. Return visits to the dealer then results in the dealers software to recommends DME updates that overwrite the PPK dme software! If you properly update the VO then only software, and settings, that matches your cars hardware will be recommended!


Steps: Changing VO

  1. Open NCSEXPER.exe
  2. Select: File > Load profile > Select a profile that has manipulation enabled (“CNCoding”) > Click OK
  3. Press F1 (VIN/ZCS/FA)
  4. Press F3 (CS/FA f. EC) > Select E89 (chassis family for E9x and E8x vehicles) > Click OK > Select CAS > Click OK
  5. Press F6 (Back)
  6. Press F1 (VIN/ZCS/FA)
  7. Press F2 (Enter FA) > Select E89 > Click OK
  8. A window labeled “Enter VIN” appears with your vehicles VIN number filled in > Click OK
  9. A window labeled Enter FA appears > scroll to find VO for old battery (-B090) > highlight –B090 and press delete on keyboard
  10. Enter –A080 (see Appendix B) in the “Attribute” box > Click Add > Click OK
  11. Press F6 (Back)
  12. Press F4 (Process ECU) > Select CAS > Click OK
  13. Press F2 (Change Job) > Select FA Write > Click OK
  14. Press F3 (Execute Job)
  15. Verify that the write is complete “Job Ended”
  16. Press F1 (Change ECU) > Select FRM/NFRM > Click OK
  17. Verify lines: get coded, FRM, JOBNAME = FA_Write
  18. Press F3 (Execute Job)
  19. Verify that the write is complete “Job Ended”
  20. Press F6 (Back) > Exit NCSEXPERT


The CAS and NFRM/FRM modules will now always default back to the new attributes you assigned to the VO!


It is important to now use NCSExpert to code the car to the new VO settings. If you properly changed the VO, NCSExpert will automatically write the battery capacity and type settings to the various modules. This is what we did manually in option #4!


  2. File > Load profile > Select a profile that has manipulation enabled (“CNCoding”) > Click OK
  3. Press F1 (VIN/ZCS/FA)
  4. Press F3 (CS/FA f. EC) > Select E89 > Click OK > Select CAS > Click OK
  5. Press F6 (Back)
  6. Press F3 (Process Car)
  7. Press F1 (Code Car)


Appendix A:

MSV70,MSV 70.0 for N52 (NG6),

MSV80,MSV 80.0 for N52KP (NG6),

MSD80,MSD 80.0 for N43 N53 & N54 with EWS4/CAS,

Mevd172KW, Mevd 172 for N55 (Older N55’s up to late 2011 production)

Mevd176k, Mevd 176k for N55 (late 2011 production date or newer)

MSS60,MSS60 for S65 (M3),


Appendix B:

“B” represents wet-cell, while “A” represents AGM in the VO.

E B046 BATT_46AH //46 Ah-Batterie

E B055 BATT_55AH //55 Ah-Batterie

E B070 BATT_70AH //70 Ah-Batterie

E B080 BATT_80AH //80 Ah-Batterie

E B090 BATT_90AH //90 Ah-Batterie

E A070 BATT_AGM_70AH //70 Ah-AGM Batterie

E A080 BATT_AGM_80AH //80 Ah-AGM Batterie

E A090 BATT_AGM_90AH //90 Ah-AGM Batterie


Appendix C:


ISTA/D (aka Rheingold) is the current dealership diagnostic software for all Exx and Fxx cars.

ISTA/D is the replacement for older dealership “DIS” diagnostic software.

ISTA/P is the current dealership programming software for all Exx and Fxx cars.

ISTA/P is the replacement for the older dealership programming software “SSS.”

ISTA/P & ISTA/D are designed to be used with an ICOM Interface, and with full ICOM-A-B-C, you can connect to older cars. The ICOM “C” Connection is for the older BMW ADS 20-pin round “Pacman” connector in the Engine Bay. You can find versions of ISTA/D with an ICOM Emulator built-in that allows you to use it with an ENET Interface for Fxx cars and a DCAN Interface for Exx cars.

INPA (interpreter for test procedures) is an older factory floor diagnostic software, designed to run test procedures. While INPA can be set to an English User Interface, most of the Test Procedures (scripts), which can be difficult to find, are in German.

WinKFP is for flashing/reprogramming modules

NCSexpert is for coding, it can be used to set up options and enable things

Tool32 is like a DOS cmd box for the modules, it’s text based and can it’s able to ask the ECUs various questions and show the answers (like status, programming data etc)



Appendix D:


Verify changes:

To see the current rate your battery is charging at, open the INPA program>> E90>>ENGINE>>MSD80>> Status(F5)>>PM-IBS>>PM FIELD 2 . Under the PM Field option look at the ah reading registered, to see what it’s set at to charge your battery at present. If it’s incorrect, you need to re-try the options outlined above. Once you have done this, re-register your battery using the Tool32 program. Then go back into INPA and check the PM Field 2 again to see if the new ah reading has been registered.


Appendix E:


wert_00 value 00

80ah 80 ampere-hours

90ah 90 ampere-hours

110ah 110 ampere-hours

70ah 70 ampere-hours

55ah 55 ampere-hours

46ah 46 ampere-hours

70ah_agm 70 ampere-hours (agm)

90ah_agm 90 ampere-hours (agm)

60ah_agm 60 ampere-hours (agm)

80ah_agm 80 ampere-hours (agm)