Airbag ECU Programming Help *Solved*

TomR

Member
Hi All,

I've recently had to swap the main airbag ECU and one of the pillar units as the originals were causing a big battery drain in my 05 E85 (2.2).

The garage that swapped them (a local BMW indy in Cheltenham) were not able to program the modules with the VIN of my car as they were second hand units.

Just wondering if there is anyone vaguely local to Gloucestershire that might be able to do this?

From what I've found in other threads it should be possible, but not a lot of garages can do it. I was going to try Quarry Motors in Sheffield to see if they could help. It seems other people have had success with them, but Sheffield is quite a trek from Cheltenham!

If I can find a solution a bit closer to home it would be great.

Any advice/help would be gratefully received.
 
So with the prospect of travelling miles to get this sorted (although I must say thanks to kis for offering up a potential London contact he had used before) I decided to give it a go myself. Happy to report, I sorted it this evening!

I used a guide that I found in mac27040's EXTREMELY useful thread: https://z4-forum.com/forum/viewtopic.php?f=2&t=111706

I pulled the e85 daten files from the same place for WinKFP

I bought an OBD-II cable from bcables which came with all the other software I needed: https://www.ebay.co.uk/itm/BMW-USB-OBD-K-DCAN-DIAGNOSTIC-CABLE-GT1-EDIABAS-INPA-DIS-SSS-NCS-EXPERT-CODING/163390360653?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649

I found a few things as I went through that might come in useful for anyone doing this in future. So I've modified the original guide (below) to include these bits. Hopefully it will be useful to someone else if they find themselves in the same position. These were only my findings as i went, and i've never done anything on this level before, so there may be better ways around some of it:

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

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)
- This video is the one I followed, just skip the first couple of minutes until you get to the WinKFP (I didn't have that first program) https://www.youtube.com/watch?v=-KeM3Bw8nD4
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.


NCExpert: 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/showthread.php?1800496-Dummies-Guide-to-Basic-coding-with-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.
 
Good info!
I'm going to be tackling this soon and am filled with the same trepidation as you were I think.
I may be in touch at some point....lol :lol:
 
Updated with the loading daten files video I followed for WinKFP. There is also a useful guide you can download that covers the same thing:

https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwixnfTJl47jAhXfUhUIHdzMDyAQFjAAegQIABAC&url=https%3A%2F%2Fwww.bimmerfest.com%2Fforums%2Fattachment.php%3Fattachmentid%3D325801%26d%3D1337480801&usg=AOvVaw2emVj41KsO8Ww1Mr3lUBoi
 
Hello all, and thanks for such incredible DIY or guide. Save my life! cose as TomR explain, the original guide are focus on E60 and E85 on inpa are other animal... so thanks for that man.

Now, I did the job step by step and without problems. But finally, my airbag light on dash don't turn off. :x

When I scan with INPA in the end of process, there is something related to the miles/kmh that is not consistent with the miles of the car or witch is store on other modules. I think that the problem is related to this...
Some idea how to manage or modify it? another ide about what would be the problem?



Any help is really appreciated!
 
Thanks for the above guide Tom, my Satellite B Pillar Left (SBSL) is water damaged with visible corrosion on the terminals and on the back of the unit. The board inside actually looks perfect as it has a nice layer of varnish on the board and components but I suspect when the car was run with the the unit wet it has done some damage and shorted something outt as I am getting "EAM Parameter Incosistent" 9897 when reading the fault codes for SBSL. I also had passenger seat occupation sensor fault but that cleared after cleaning all the connectors and individual pins within the connector on the SBSL module ( installed a seat bypass sensor which didn't make a difference).

I have sourced an SBSL module from a E6X series , it has exactly the same part number 6940299 - 01 and other numbers stamped no idea what they are/mean I am guessing there are a few revisions of this module over the years mine is SBSL 220 4353-53 I wasn't sure if that mattered but thought be safe than sorry. The direction (arrow on the label ) also points the same way as the one it replaces I am guessing this is for the g force detection as there were several on ebay that looked the same SBSL but with different part numbers for other series and the arrow points at a slightly different angles so must be installed differently in those cars.

Hopefully all will go to plan following your guide :)
 
Successfully coded the SBSL , airbag light now off. After clearing all error memory in all 3 airbag modules I still had the light until I went Into INPA select the SIM module F5 for activate and do a star pre status check it and it then went out.

Things I have learnt during this , if you have battery terminal or passenger seat errors that cannot be cleared remove SBSL which is located in the corner behind passenger seat below the door and inspect for water marks you may get away with cleaning terminals but in my case damage was done to the module likely running it with moisture in the terminals . since this module is inline with water flow when the rear roof motor drain is blocked I have installed a couple of 9v £10 water sensors under the carpets behind and Infront of each seat , any water and an alarm sounds 😃 since on the z4 you never know you have a leak until the window steams up as the water runs under the carpet from door seals or blocked drains.
 
It’s a great point. Many people have their roof motor relocated and then just forget about the drains thinking it doesn’t matter anymore. Then problems like this happen. It’s why i don’t advocate moving the motor... better to just keep the drains clear.
 
Long story but guttering was removed from outside the garage where I had it parked so over the course of 3 months it had more rain hit it than usual I think that overwhelmed the drains they were not blocked but there was dirt/gunk in there restricting the flow on the passenger side roof motor drain. I also found that the seals that are between the door and the A pillar behind the mirror were not sealing properly on the passenger side which I have fixed by putting hollow tubing inside the rubber channel that runs down it is now a tight seal. Not a drop in the cabin now for a month. I hired a rug doctor and completely cleaned the carpets, seats out and refurbed them while out . You would not believe the amount of crap that came out of the carpet! I guess the reality is on a 16 year old car leaks will appear , of course the correct thing to do would be to replace all rubbers but imagine that would cost $$$. I have put rubber 303 protectant on there which seems to have softened it all up a little. There was a lot of water but interestingly no rust under the carpets anywhere, everything once cleaned looks as fresh as it did out the factory.
 
Glad you got this sorted, some good extra advice there as well. It’s a great sense of achievement and relief when that light finally goes out! :thumbsup:
 
Can I ask what people used as the steady power supply to the battery? Also if someone has done this and is based in the north west would they be able to coach me through doing mine please?

Thanks
 
I wasn’t quite sure why the battery needed to be connected to another power source , I assumed it was because when flashing anything you don’t want the power dropping below a level where the computer shuts down mid flash, I had a new Bosch battery on there and a trickle charger also connected to bring it up to 14v with the engine off
 
@TomR Thank you for your post!

I have had to replace my Airbag module after a frontal crash which caused the airbag to deploy.

The ZB-Nummer (part number) for the used airbag module I installed is not listed in WinKFP under SIM85.
Though the used module came from a same year model as my E85.
Your post mentions that the ZB_nummer listed in WinKFP are based on the SP-Daten files version.

Also each file SIM85 > 6962766 (as an example, one of 4 listed) show > Unverbaut and below it SIM.

Can you, or anyone else, please let me know how you think I should handle my module part number being older/ not listed and which of the Unverbaut and SIM choice to pick?
 
Hi All

Just got my first Z4 and have got it up and running after sitting unloved for sometime. I now have an airbag light illuminated and was hoping for some guidance. I see some fixes need to be coded and some don’t. I have a fault reader and it’s generated the code in the attached photo.

Any guidance on what to replace and if it’s a DIY job much appreciated. I’ve been told it’s the unit in the door pillar but would like a second or third opinion on the code before ordering any parts and attempting a DIY fix.

Thanks

Steve
8922441E-21AA-442E-830A-25D3FD48247B.jpeg
 
Thank you so much for the guide. I am currently attempting this on my 2003 that i've put a used air bag module into. But I've run into problems at the Tool 32 step - its showing 1 argument and after clearing and retesting I have fault codes 98 9f 20 in SBSL85 & SBSR85 99 1f 20 & STVL85 96 68 20 and a few more. Before I get into that I wanted to clarify I performed the steps correctly.


"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)."

where it says choose module the first time I grabbed one of the two beginning with a i believe it was akmb - which I understand was to get the Vehicle Order, but the second time it says choose module I chose SIM (which I was assuming it was for SIM85 which is the ecu family for the air bag module) was that a mistake? which module should I have chosen?

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)

At this phase I opened sbsl85 and double clicked as instructed and entered "1" into the drop down bar but its showing 1 argument ( job_info_gelesen ) when i click systemzeit starten.

I can tell this step hasn't gone correctly and help would be much appreciated thank you in advance!
 
Back
Top Bottom