5.22.2020

BMW Lane Change Assist Coding with E-sys

For those who have been waiting, after a year of trying to figure it out, it finally works!! 

It seems that in addition to the codes originally found by simpaty, BMW is using additional codes to block certain features from working in certain countries, based on where you are located. By changing this coding, you can enable the Lane Change Assistant to work regardless of your location.

The 3 codes to be changed are:
HU_NBT or HU_MGU:
Spurwechselassistent - Change this to Aktiv

SAS Module:
C_SWA_Vorhanden - Change this to True
C_SWA_Land_Aktiv - You will have to edit the Werte values to "FF, FF, FF, FF" This is the item that blocks it from working in certain regions.

This worked on my 2020 530e, but the coding was the same when I was trying to get it to work on my 2019 X3, however at the time I was unaware of the C_SWA_Land_Aktiv change that needed to be made. This should work regardless of if you have iDrive6 or iDrive7, and of course this is applicable to cars with Driving Assistant Plus, as the Pro is not yet available on the X3.

The ISA, or intelligent speed assist, isn’t blocked by region, just a few codes to change. I had enabled it on my X3 when I was coding the car to Euro spec to try to get the glare free high beams and the lane change assist to work. I will look over my old backup codes and see if I can remember what specific items changed for that to work. It didn’t automatically change though, it would alert me if the speed limit outside changed, and then I could press the rocker switch on the steering wheel and it would adjust.


You have to have the Steering and Lane Control assist on, and it has to be detecting the lane lines, as well as a physical barrier between you and oncoming traffic, so either a median or a barricade. It also only works at certain speeds, I believe over 40mph.

5.21.2020

BMW E85 Z4 SBSR Airbag Module Coding Guide

I've finally got a used airbag ECU for my 2003 Z4 3.0 and after fitting it the airbag light is still on. A pal used a obd2 scanner to read the fault code and the "Safety and Gateway module" shows the error "93AB Incorrect chassis number. He can clear the fault but it immediately returns.

Is there anyone anywhere near Peterborough that has the necessary equipment to code my VIN number onto the new module please?


Step by Step to edit VIN, Flash, Code to Default, Clear Errors and Start System Time of the Airbag Gateway Module. 

Hopefully it will be useful to someone else if they find themselves in the same position.


INPA: UIF (User Information Field) Report
1-Open INPA>select your car model (E60)>Functional Jobs>F3 UIF
-This is the first change. The E85 profile says "Quasi Functional" and doesn't have the F3 UIF choice on my version, so I did an Information report instead (F2)

2-You'll see a list of all control units with their ZUSB number and VIN
-This is the BMW part number that comes up for the module you are sorting out in the information report. I couldn't see the VIN anywhere on this report so I just wrote it down from the windscreen. 

3-Print to PDF the report.
4-Identify the ZUSB numbers without your VIN and copy from the PDF and close INPA
- I didn't do these steps, I just copied down the part number of the modules I needed (in my case "Airbag ECU or Safety Info Module" and "Satellite B Pillar Left").

WinKFP: Edit VIN and Flash Module
5-Open WinKFP (Load SPDaten files google it)
6-Select comfort mode
7-Then click find ZUSB
8-Paste the number you copied
9-this will go straight to the right ZUSB
-In my case this only worked for one of the two modules. The other one had a ZUSB/part number older than the daten files I was using, so was not recognised when I typed it in. There is another way to do this next bit if you find the same thing (see alternative below). If this step does work correctly, note down the ECU Family the module is in (from the left column), you will need it to start the system time later on.

10-Then enter your full VIN and then click on done
11-Double check that the module your going to flash it's safe to flash with your cable and the battery needs to be connect to another power source
12-Click on update ZUSB (this will flash the module with SPDaten files and re-write the VIN)

Alternative:
A1. You need to find the ECU family that your module is in. For me the main airbag ECU was in SIM85 and the pillar module was in SBL264. To double check this, look for your *.his files on the PC (mine were in C:\EC-APPS\NFS\DATA). They are all named with the ECU family (SIM85.his for example), so if you open these up with notepad and search through you will see all the historic ZUSB/part numbers for that module. When you find the one with your module part number in you will have the ECU family name you are looking for.
A2. Open WinFKP
A3. Select Comfort mode
A4. Select Update ZUSB
A5. Select the correct family for your module
A6. Enter your full VIN and then click done
A7. Double check that the module your going to flash it's safe to flash with your cable and the battery needs to be connect to another power source
A8. Click on Prog. ZB-Update
A9. This will then show you the update that is about to be programmed onto the module, click ok to start programming. This took a few minutes per module in my case, so make sure your car battery and laptop aren't going to run out of juice halfway through. I hooked the car up to a charger just in case.


NCS Expert: Code to Default 
-If you're interested in what you are doing here then I found a really useful introductory guide. It was good to understand a little bit of what I was actually doing, although you don't need it to complete the next steps: https://www.bimmerforums.com/forum/show ... NCS-Expert

13- Open NCExpert
14-Load profile -> Expertmode (I used Expertenmodus (Werkseinstellung), as Expertmode wouldn't load on my version as it was too old) -> F1 -> F3 -> choose E60 (E85) from the list -> choose any module you want from this list -> now click F6 Back -> select F4 Process ECU -> choose Module -> now click ReadECU -> close the notepad window that showed up after the module was read (On mine it came up with another window with three text boxes in, I just closed this).
15-Press F5 for basic functions -> Select "coapiReadSgGetFswPsw" and click Ok -> Select F2 "job" select SG_CODIEREN and press ok -> Press F3 Execute job and wait for the buttons to become active, when active it's all done.

INPA: Identification Report and Clear Errors
16-Open INPA>select your car model (E60)>Functional Jobs>Identification
17-Print the report to PDF.
18-Look in the SGBD column the module you replace
19-Clear (EM, IM and HM) Errors and Close INPA
- I couldn't see the SGBD column on the E85 information report. i just noted it down from earlier when using WinKFP. 

Ediabas Tool32: Start System Time
20-Start Tool32
21-Select File->Load SGBD, Group file
22-Browse to the EDIABAS\ECU folder, and search for the file name based on the listed SGBD column. Can be more than 1 file.
-I actually couldn't find an exact match for the satellite pillar that had come up in WinKFP, but I chose SBSL85 and it seemed to work. The main ECU was SIM85 again so this was more obvious.

23-In the Left of the window select systemzeit_lesen (write) 
24-In the middle of the window Argument (value of) type 1 in the dropdown menu
25-double click systemzeit_lesen and done.
26-double click systemzeit_starten. (no arguments)

I had to go back into INPA and clear the errors on the safety modules again to finish everything off. 

I unplugged the cables, switched the car on properly, and celebrated loudly when the airbag light went off. I also breathed a big sigh of relief as I had approached this with some trepidation to start with, but in the end it wasn't too hard with all the information that others have kindly made available already.

5.20.2020

How to register a BMW battery with Carly App?

Here's step-by-step instructions on how to register a BMW battery with Carly. 
You can also use Carly to code a new battery type (Lead-acid vs AGM) or change the battery capacity.
  • Carly for BMW
  • Carly for BMW App
    • Carly for BMW iPhone
    • Carly for BMW Android

Procedure

If you have already paired your Carly, skip pairing steps. We assume that the battery has already been replaced, and now we just need to complete the registration procedure.
Plugin Carly for BMW into the OBD2 port under the dashboard (driver's side). Press the power button on your Carly if it has one. The red LED light will turn on. 
carly-app-bmw-battery-1
Turn ignition to ON position. Don't start the car. You can't register a new battery if the engine is running.

Download Carly for BMW Pro.  The free version of Carly does not allow you to perform battery registration. You can use the free version of Carly for BMW to see how Carly Battery Registration works but you can't complete the registration. Use the free version to check if battery registration is possible for your BMW model and year.

Besides the Carly for BMW Pro, you will need to purchase the Battery Registration add-on which is another $10. Total cost for the Carly Adapter, Carly Pro and in-app battery registration place this setup in the mid $100-$200 range.

Pair Carly adapter with smartphone
carly-app-bmw-battery-2

  1. Turn on Bluetooth on your Android or iPhone.
  2. Search for a new Bluetooth device.
  3. Select Carly Adapter on your screen.
  4. Enter passcode such as 1234 or 0000
Next, launch Carly for the BMW Pro app. On the bottom of the Carly Dashboard, you need to select the BMW model and then hit connect. 
carly-app-bmw-battery-3
Enter Carly Battery Registration menu
Select Battery from the main menu.
Read through all the warnings and scroll to the bottom. Select Continue to battery registration. If you haven't purchased the add-on, Unlock battery registration will appear on this page.

Next, you will see two options. The first is to perform battery registration and the second to code a new battery. If your new battery has different specs than the old battery, you need to complete both coding and registration. If your new battery has the same exact specs as the old battery, you will only need to perform battery registration by pressing "Register same battery type" 
carly-app-bmw-battery-4
Register same battery type (Registration)
When you install a new battery with the same capacity and type as the old one.
Register another battery type (Coding)
Here you can change battery type and capacity. Change from lead acid to AGM. Change capacity between 60, 70 80 90 100 110 etc Ahr. 
carly-app-bmw-battery-5
Notes:
  • Do not stop the app or remove the Carly adapter when you are performing battery registration with Carly.
  • Do not start the car. Ignition should be on. All dash light on. Position II.
  • Read and clear codes from the CAS module before you perform battery registration with Carly. Clear any stored codes from the CAS module.

How to Flash EU Fxx N53 DME and EGS with E-sys?

The mod is conversion of a EU Fxx 523i to a 528i. It is valid for cars of production period where both models were delivered with the same N53 motor, albeit the 523i being detuned in HP & Torque.
The mod requires a software change to the DME & EGS modules of the car, and a replacement of the Single-step intake manifold with a 3-Step intake manifold equipped by DISA valves.
This document details the software change segment of the mod.

Module software used is the same as the original delivered by BMW in MY51 N53 equipped cars.

Flashing ECU’s with E-sys is not a technically complicated process and the risks involved are less of technical nature and more of integration & configuration mistakes. Successfully passing the flashing process itself needs some precautions & guidelines which are general to any eeprom style programming:
  • Maintain constant power supply to the programming & target devices
  • Allow sufficient time for processing to complete
  • Stop in case of errors and analyze/troubleshoot the reasons before proceeding
  • Use the programming tool built-in controls to assure proper processing

The E-Sys tool itself has powerful controls to avoid flashing mistakes when it comes to compatibility between the software to be flashed & the target ECU. The ECU’s themselves being of automotive grade are by nature of robust fail-safe design, especially those related to engine, transmission, car security & passenger safety.
E-Sys also provides the integration support by managing the Master Security Module (MSM) of the car to maintain security & compatibility in programming.
The controls in the hands of the user however, do allow for a lot of manual manipulation which can lead to failed, incorrect flashing and a non-functioning car.
The risk therefore in this process, is mitigated mostly by keeping strict planning & control, understanding the integration of the change within the car-wide computerized network, being vigilant in troubleshooting unexpected failures before making new attempts and finally making sure that the E-Sys settings and functions are carefully and correctly set.

Confirm current ECU part numbers and target ECU part numbers are identical based on realoem / ETK. Here we were ok with the DME, but had difference in EGS module. Posted question to BMW technical staff who confirmed the difference is for support/replacement related reasons. Units are identical.
No exchange of modules. Units are functional and in-sync with car network. No faults registered in the fault or Information memories.
  • Know your Shipment & Current I-Step. Refer to basic coding guide to read I-Step from VCM.
  • Car network is running a unique I-level across modules.
  • PSdZdata for current I-level available and imported into Esys.
  • FA in car is in shipment status ie. Zeitkriterium not modified.
  • Car hooked up to battery charger or maintainer.
 Phase 1: Connection
1.Prepare PC. Make sure wifi & bluetooth are disabled and no application is running.
2.Connect ENET cable to OBD port then to RJ45 port on PC.
3.Car ignition on, engine off.
4.Start-up E-Sys. After up to 30 seconds the car and your PC are on the same IP subnet.
5.Click on the ‘Connect‘ button.
6.In the ‘Open Connection’ window which appears, select the appropriate TargetSelector.
7.Project is the Fxx I-Step of PSdZdata you loaded into Esys, VehicleInfo is your car Fxx without DIRECT at the end.
8.In the Interface section, select ‘Connection via VIN’.
9.In the Vehicle-specific parameter section, select ‘Read parameters from VCM‘.
10.Click Connect.
11.A pop-up window will appear. Confirm what you see is your known Shipment I-step & click OK.

Phase 2: Confirm current FA and SVT Actual state match to PSdZdata
1.Go to Comfort mode – TAL-Calculating. Top-left ‘Vehicle Order’, select ‘Read‘. After VO is read, Open the FAList tree to FAList/FA/FZAuftrag/Type and confirm the ‘Zeitkriterium’ entry is your shipment (mmyy format) & the ‘Typschlüssel’ entry is your production code MT11. Click save and provide a clearly identifiable name eg. FA_ORG_MT11_yyyymmdd Right click on the ‘FA’ folder and select ‘Activate FA‘.
2.On the right, in ‘SVT Actual’ section, select ‘Read SVT’. When done, The SVT ECU tree will appear on the left. All entries will be BLUE in color. Click save and provide a clearly identifiable name eg. SVT_ACTUAL_MT11_yyyymmdd
3.On the right, in ‘KIS/SVT Target section, perform the following: In ‘Calculation Strategy’ select ‘Complete Flash’. In I-Step (shipm.) select your I-Step Shipment as verified by connection phase step 11. In I-Step target should be only one entry, matching to the Target selected in connection phase step 7. Click ‘Calculate‘ and wait. When done, The SVT ECU tree entries on the left will change color.

The entire tree with all entries must be BLACK with exception of SWUP, ENTD & NAVD entries in the CMB_ECALL/CMB_MEDIA/HU_CIC modules which may remain BLUE.


Phase 3: Edit & write FA to car
1.Modify production code from MT11 to MY51 by editing the ‘Typschlüssel’ to Production code MY51.
2.Save and provide a clearly identifiable name eg. FA_TARGET_MY51_yyyymmdd
3.Write FA to VCM.

Refer to basic coding guide for editing and writing FA to VCM.

Phase 4: SVT Target calculation for modified FA
1.Go to Comfort mode – TAL-Calculating. Top-left ‘Vehicle Order’, select ‘Load‘. Open your modified VO file (eg. FA_TARGET_MY51_yyyymmdd). Right click on the ‘FA’ folder and select ‘Activate FA’.
2.On the right, in ‘SVT Actual’ section, select ‘Load‘. Select your SVT Actual created in Phase 2 (eg. SVT_ACTUAL_MT11_yyyymmdd). The SVT ECU tree will appear on the left.
3.On the right, in ‘KIS/SVT Target section, perform the following: In ‘Calculation Strategy’ select ‘Complete Flash’. In I-Step (shipm.) select your I-Step Shipment as verified by connection phase step 11. In I-Step target should be only one entry, matching to the Target selected in connection phase step 7. Click ‘Calculate‘ and wait. When done, The SVT ECU tree entries on the left will change color.
4.Click save and provide a clearly identifiable name eg. SVT_TARGET_MY51_yyyymmdd.

The entire tree with all entries must be BLACK with the following exceptions:
1.SWUP, ENTD & NAVD entries in the CMB_ECALL/CMB_MEDIA/HU_CIC modules which may remain BLUE.
2.Entries for the DME & EGS modules may appear RED.

Phase 5: SVT target validation
This is one of the two most important steps in the process. We visually validate the SVT Tree for the changes we want to do and verify that all our prerequisites are in order. The validation assumptions & expected results are as follows:
Only the DME & EGS modules should have a mix of BLUE & RED entries. All entries on all other modules must be either BLACK or BLUE.
  • On both DME & EGS, the ONLY entries ALLOWED to be RED are BTLDx, SWFLx & CAFDx.
  • All entries starting with HWxx MUST be BLACK.
  • There may be one or multiple SWFL changes for each module. That is ok.
  • There may or may not be a BTLD change for a module. That is ok.
  • There may or may not be a CAFD change for a module. That is ok.

Here is an example snapshot from the SVT tree with Actual & Target calculation. I-step F010-12-11-503. DME:
e-sys-flash-dme
The changes we expect are as follows:
DME SWFL – current firmware with ID 888 will be replaced with SWFL firmware ID 5C3, from the same Main, Sub & Patch versions.
  • EGS BTLD –current bootloader with ID C7C be upgraded to other Subversion & Patchversion branch.
  • EGS SWFL –current firmware with ID A81 will be upgraded to other Subversion & Patchversion branch.
  • EGS SWFL –current firmware with ID A9A will be replaced with SWFL firmware ID A9D, from other Main, Sub & Patch versions.

Once we are satisfied with all validation assumptions, we can proceed with the next step.

Phase 6: TAL calculation
  1. In the Tal-Calculation window, on the right, in the ‘TAL’ section, make sure nothing is checked. Click ‘Calculation’ and wait.
  2. When finished, click save and provide a clearly identifiable name eg. TAL_TARGET_MY51_yyyymmdd

Verify Esys settings
Go to Options-Settings menu.
On the Settings windows, select ‘Options’ tab and confirm all entries are checked.
The relevant and extremely important entries for this process are ‘Update VCM after TAL execution & ‘Update MSM after TAL execution’.
verify-esys-setting
Phase 7: TAL processing DME & EGS
  1. Go to Expert mode –TAL Processing.
  2. As TAL –select your TAL_TARGET_MY51_yyyymmdd
  3. As SVT –select your SVT_TARGET_MY51_yyyymmdd
  4. As FA –select your FA_TARGET_MY51_yyyymmdd
  5. Click ‘Check software availability’& get positive response that all is available.
  6. Log tab –select ‘Eventsand keep Type ALL.
  7. Parameters tab –all options selected, option 4 on Merge with existing InstalledECUList, both ‘Switch gateways’selected & empty.
  8. ECU tab should list 2 lines for DME & EGS only.
  9. UNCHECK the top-left ALL box to REMOVE all selections.
  10. ONLY on DME line, Select ONLY ‘blFlash’& ‘swDeploy’& ‘cdDeploy
  11. Visually confirm AGAIN that nothing is selected except the ‘blFlash’& ‘swDeploy’& ‘cdDeploy’ on the DME line.
  12. Click START and wait.
  13. A window will pop up to confirm the three I-Step levels in the VCM. Do not change it & Click OK.
  14. Once processing starts, the E-Sys window will be non-responsive for a few seconds eg. if you want to browse at the log. Just give it a few seconds, and the log tab will appear and show progress. The flashing process only takes a couple of minutes, you will notice the percentage hang a while at 0% then it will start to increase. This is normal.
  15. There is no ‘processing ended’or any pop up that indicates the job is done. Wait until you see on the log window the message that confirms VCM Update: finished.

Once done, disconnect E-sys from car and power off the ignition. Disconnect the battery charger/maintainer from the car and attempt to start the car. If the car starts, the DME flash was successful and can proceed to flashing the EGS module.
It is highly recommended to restart E-Sys for the EGS flash.
Following a successful connection, repeat Phase 7 above with one difference steps 10 & 11:
  1. ONLY on EGS line, select ONLY ‘blFlash’& ‘swDeploy’& ‘cdDeploy’.
  2. Visually confirm AGAIN that nothing is selected except the ‘blFlash’& ‘swDeploy’& ‘cdDeploy’ on the EGS line.

Once the EGS flash is completed, the procedure is over, and your car DME & EGS modules have been converted to Production Code MY51.

Troubleshooting
If there were no errors logged during DME flash but the car does not start after DME flashing, it likely means that the alternative SWFL ID used does not match the installed hardware.
If this happens, it is recommended to attempt reverting back to the original DME SWFL ID by loading and activating the ORIGINAL FA_ORG_ MT11, reading the current SVT from the car, calculating a temporary SVT_TARGET & a new TAL. If the calculations are correct, the TAL will have only one line in the flashing window – for DME. Execution of this TAL should revert the car to its original state.
The revert flashing procedure is essentially the same as listed earlier in Phase 7, albeit using the newly generated files above.
Other observations
It was identified that multiple fault errors are registered in the car Fault memory during flashing.
During the TAL processing, the KOMBI & HU_CIC showed multiple system errors related to DSC, degraded braking system, Restraint system, SOS calling and various others.
Faults were registered in other modules that are linked to the DME & EGS via the MOST network.
ISTA/D was able to clear all the faults. Users can use ISTA/D, INPA & Tool32 to clear them too.
This conversion is only useful in conjunction with replacing the intake manifold with the 3-stage manifold delivered on Production code MY51 cars.
Until the new manifold is installed, new faults will continue to register and the CEL light will be on.
In case of failures, difficulties or unexpected results, please contact the forum members for assistance.
Also, please consider that E-Sys does not provide:
  • Initialization procedures that may be required to run following software change.
  • Fault errors display that may be registered in the ECU fault memory during or after TAL processing.
  • The necessary tools for performing required follow-up procedures or fault clearing.

We have not observed any initialization or normalization procedures needed after flashing the DME & EGS.
No token or patch is needed for any steps in this guide.