BMW ICOM A2+B+C WIFI Setting Guide

Here is a tutorial on how to set WIFI for BMW ICOM A2+B+C diagnostic & programming tool, hope it helps.

STEP1:make sure you ICOM A2 have a WIFI card
go to
pass: NZY11502

make a self-test, than you can got the test result , the WIFI function must be OK


STEP2:Go to make the WIFI setting, ( the bmw ICOM a2 WIFI version no need setting)
a . Set the mode to ISPI-NEXT


b . SET WLAN , SSID name ISPI-NEXT PASS:12345678 save


After the setting on ICOM is done , let’s make computer setting, suggest buy the a USB WIFI card , then set it to AP mode
Then set same SSID name as ICOM Next; ISPI-NEXT

And choose WSP2 method , enter same password :12345678


Then OK, unplug ICOM LAN cable, restart ICOM waiting it connect to laptop WIFI!


Then start ISTA/D make diagnostic. Enjoy!

How to use NCS EXPERT to do BMW E series coding


NCS EXPERT is a tool used for BMW E series coding that will enable you to modify many values inside the modules installed on your car.


NOTE: This works only for Ex series vehicles, for newer F series coding check out the other guides on using Esys.

Where to get NCS EXPERT?

Safe NCS EXPERT can be got with packages of K+DCAN cable or ICOM A2 emulator.


1.After Installing the BMW Diagnostic Tool, make sure you have a connection in INPA and both dots are black. If that is ok you can move on to the next step.

2.Open NCS EXPERT and load your coding profile.

3.Load the ExpertProfile or Expertenmodus


a)After loading the profile, click on File -> Edit Profile and at the password prompt don`t write anything, just click OK. This is valid for the latest version with the latest updates (SP Daten) . We recommend buying it if you want to be up to date with everything and if you`re just stating to learn how to code because it includes many tutorials on how to install and use the software. For the older versions of NCS EXPERT, use the password “repxet”.
b)Make sure to set everything up like in the pictures:




Consistency check should result OK
After making these modifications go ahead and click File->Save profile as and save it as “CODING.pfl”, then go to File->Edit Profile>Profile Info and change the name to whatever you want, then exit and click again on File->Save Profile.
You have created you own coding profile! Now let`s go ahead and learn how to use NCS EXPERT to code features on a car.


As an example we will show you how to code the Digital Speedometer on your instrument cluster or KOMBI – This is the module name.

1.Open NCS EXPERT and load the coding profile you created earlier.
2.Click ok “VIN/ZCS/FA,” then on “ZCS/FA f. ECU” and choose your chassis
3.After choosing your chassis you should see ncs expert read and display your VIN number, then click on “Back”
4.Click on Process ECU and choose KOMBI, then click on Read ECU
5.Close the pop up window and go to your Work Folder (C:\NCS EXPERT\Work) and open up the FSW_PSW.TRC file in Notepad.
6.Click on Edit->Find and search for “BC_DIGITAL_V” and set it from “nicht_aktiv” to “aktiv”
7.Save the file as and click on to overwrite the existing file.
8.Now go to the NCS EXPERT window and “Change job” to SG_CODIEREN and “Execute Job”

If you followed the stept correctly, after the coding ended you should have the digital speedometer in your cluster menu. Look for it by using your BC Button to scroll through the menus. It should be the last one showing V= 0 km/h or miles/h depending on where you`re located.

The above steps are the same for coding any mods, the only thing that can change is the module name we`re working on.


Most used module names:

CAS – Central Access System
KOMBI – Instrument Cluster
FRM/NFRM – Light Module or Footwell ModuleCCC – Navigation module on older E series
CIC – Navigation module on newer E series
ABG – Airbag Module

NCS EXPERT can be used in a variety of ways, this being the easiest. In our future tutorials we will show you how to change the VO (Vehicle Order) for retrofits, how to change the manufacturing year and what`s the point of doing that, how to recode or reset a module with standard factory settings and even how to change the VIN number on a used module by using another very handy piece of software called Tool32.

CGDI Prog BMW MSV80 Auto key programmer update Guide

CGDI Key Programmer is high technical products which mainly doing Auto Scanner Tools, programming, security maintenance. This blog will show you how CGDI Prog BMW MSV80 Automotive Diagnostic Tools update.


CGDI Prog BMW MSV80 Software Update Guide:

Step 1. Receive message ” There is a new version”, click on “OK”
Step 2. Click on “Setting”, then “Check for updates”, waiting until the next dialog box appears.
Step 3. Checking local file.
Step 4. Detects a new file, click “Yes” to update.
Step 5. Downloading file.

CGDI Prog Key Programmer Firmware Update Gudie:

Step 1. Connect CGDI Pro device to the computer, open CGDI software.
Step 2. Click on “Setting” and then “Upgrade the firmware”, waiting.
Step 3. Updating…
Step 4. CGDI programmer firmware update successfully, again click on “Upgrade the firmware”.
Step 5. Get message reading ” The version is already up to date without upgrading”. Click on “OK”.

How to do BMW coding for fun

How to actually make your BMW fun? Here is a write-up about something  useful to every single BMW track enthusiast – electronic nannies.

What are electronic nannies?
Electronic nannies are a veritable alphabet soup of joy-sucking, fun-killing, brake-destroying awfulness.  DSC, DTC, HBA, EVB, HPS, and Maximum Brake Support are all BMW acronyms that stand for the same thing – SLOW.  Each and every one of these electronic safety devices are designed for the average consumer; not your hardcore automotive enthusiast.  It is surprising to me that information on how to disable these “features” is not more widely available.
What is BMW coding?
Coding is essentially the act of using BMW diagnostic tool (e.g. BMW ICOM A2, ICOM A3, ICOM Next, etc.) and working software (the newest version: ISTA-D 4.04.12 ISTA-P to access computer “modules” that control various parts of your car.  This software allows you to read out the various options available and change them to suit your preferences.
Generally there are two types of options for each coding parameter:  “aktiv” or “nicht_aktiv,” and level based entries where you will choose “levels” such as “wert_01,” “wert_02,” etc.

Coding can be confusing to set up, but a little perseverance can go a long way towards customizing your car.  Luckily for us, all of these electronic nannies can be found and modified in your DSC (dynamic stability control) module.  The name of this module varies depending on what car you have, but as an xDrive N55 car these nannies were located in the DSC_84.C04 file of my XDSC module.    Explaining how to set up your computer for coding is beyond the scope of this blog, but I will provide which options you need to disable, and what the proper setting is.

How to properly choose a BMW coding tool?
Basic diagnosis can be realized by a cheap cable
Bmw E series: K+DCAN USB cable
Bmw F series: ENET cable
If you wanna do coding / ecu programming / key making, or do not care the budget, BMW ICOM should be the best solution, most using this for bmw repair work.
The Definitive Guide to BMW’s Joy-Killing Nannies
Engine Power Reduction to Prevent Brake Disc Overheating (FLR)
N55 X1 Parameter:  e84_FLR
N54 335i xDrive Parameter: FLR_C0F

This is the worst of them all.  Modern BMWs will actively cut the throttle in the middle of your track day if it has reason to believe that your brake pads are overheating.  Normally, this wouldn’t be such a bad thing – nobody wants to crash into ARMCO going 140mph.  The problem is, your BMW doesn’t actually have temperature sensors anywhere in the braking system.  The computer relies on a “calculated” brake disc temperature based on several inputs including ground speed, brake pedal application force, and the frequency with which the electronic differential applies “torque-vectoring” braking.  Your BMW has no way to know that you installed a Stoptech Big Brake Kit with Castrol SRF fluid and Performance Friction PFC01 pads.  It just assumes you are running the stock system and cuts your throttle based on values that would overheat the OEM brake pads.  Unacceptable to say the least, and occasionally dangerous.  It was not a good experience braking from 145mph down to 45mph with a GT3 three feet off my rear bumper, only to have zero power coming out of the turn.  This could very plausibly cause an accident on track.
To disable, set to  “nicht_aktiv.”

Brake Fading Compensation (HPS)
N55 X1 Parameter:  e84_HPS
N54 335i xDrive Parameter:  HPS

It is insane that a “performance” car has this feature.  Brake fade compensation “calculates” the temperature of your fluid in a similar manner to the above “Engine Power Reduction to Prevent Brake Disc Overheating” parameter does.  The higher the calculated temperature of your brake fluid (remember, there is no real sensor), the more hydraulic assist will be added to your brake pedal.  In theory, this masks brake fade on the street.  On the track, it makes a consistent brake pedal literally impossible.  If you are tracking the car, you should have upgraded pads and fluid; you should never experience brake fade.  Disabling this feature maintains the pedal’s linearity and enjoyable feel throughout an entire 45 minute track session.

To disable, set to “nicht_aktiv”.
Hydraulic Brake Assist (HBA)
N55 X1 Parameter:  e84_HBA
N54 335i xDrive Parameter: HBA_DXC_8

In the event of an emergency braking maneuver, the average driver does not brake hard enough to sufficiently stop the car.  Thus, BMW implemented hydraulic braking assist.  This BMW ICOM monitors ground speed, brake pedal pressure, and rate of deceleration to understand when the car is in an emergency braking situation.  It then increases pressure up to the threshold of ABS to assist the driver in stopping safely.  Once again, on the street this is a good idea.  In Cincinnati, there is utter carnage on the highway whenever the slightest rain falls.  The Ohio River runs red with blood from traffic accidents, and the roads look like a battle scene from Game of Thrones.  Implementing an additional safety feature such as this probably helps most people, but on the track it is a disaster.  It ruins your ability to brake hard and quickly, assuming the end of each high speed straight is an impending accident.  Disable this feature for a super-linear pedal that will require noticeably more effort towards the end of the pedal travel.  Be careful with this on the street the first few times you use it – you will find that it activates more often than one would expect.  You will have to use a bit more braking pressure towards the end of the pedal than you are used to, but you will be rewarded with a wonderful, linear feel.
To disable, set to “nicht_aktiv”.  You can also set three levels of assist; “wert_01”, “wert_02”, and “wert_03”.  Default value is “wert_03”.

Brake Standby (EVB)
N55 X1 Parameter:  e84_EVB
N54 335i xDrive Parameter:  EVB

This is another ridiculous feature that works well on the road, but terribly on track.  If your car detects an aggressive throttle lift-off, it will pre-tension the brakes in anticipation of a hard braking maneuver.  This would actually be great if it wasn’t for what it does next – if you don’t brake within 8 seconds of throttle lift-off, it un-tensions the brakes.  I have a theory that people who think they are experiencing pad knock-back on the track are actually just being victimized by this “feature.”  Turn it off for a more consistent brake pedal that responds predictably.
To disable, set to “nicht_aktiv”.

Maximum Brake Support (HVV)
N55 X1 Parameter:  e84_HVV
N54 335i xDrive Parameter:  HVV

This feature alters the front/rear split of the ABS braking system under emergency braking.  At threshold braking when the front tires get into ABS before the rears lock, maximum brake support will increase the brake pressure on the rear pistons to equalize with the front.  In theory, this reduces stopping distance.   On the street, it probably does – particularly when the car has a heavy cargo load.  On the track, it can upset the balance of the car and reduce reaction time.  During threshold braking, sometimes one activates ABS accidentally and quickly backs off; maximum brake support will interfere here and get you “stuck” in ABS for a second or two.  I recommend turning this off on the track, but it does not have as big of an impact as the other settings do.
To disable, set to “nicht_aktiv”.
Dynamic Performance Control (FDB)
N55 X1 Parameter:  e84_FDB
N54 335i xDrive Parameter:  FDB

This feature encompasses two things – corner braking designed to “torque vector” and redirecting the power through the xDrive system for a 20/80 FWD/RWD torque split.  I am conflicted on this option, and need to do more testing on the implications.  Without a doubt, this feature accelerates brake pad wear – if you are driving with a decent amount of slip angle, it will be almost constantly corner braking.  Traditional logic holds that corner braking is a worse way to torque vector than mechanical LSDs are and that’s probably still true, but recently supercars such as the McLaren 650S started coming with corner braking torque vectoring.  Granted, the software in a McLaren is hopefully more advanced than that in an entry level sedan (BMW 335i) but the point holds – there must be something to it if supercar manufacturers are going in that direction.  What is frustrating about the X1/335i is that you can’t separate the 80% RWD bias (an unquestionably good thing) from the brake-based torque vectoring (possibly a bad thing)?  So, what’s the upshot?  I think it probably goes something like this:

1.  Base car without this option – code it on for a nice performance boost!
2.  M-sport pack that comes with it enabled, but no mechanical LSD – leave it on
3.  Car with an upgraded mechanical rear LSD – ?????

I will experiment more with this feature, but my gut says that with a mechanical LSD installed in the rear, having the 80% RWD split will outweigh the drawbacks of the corner braking in terms of lap time.
To disable, set to “nicht_aktiv”.

Electronic Differential (AX_Ref_Diff_Lock)
N55 X1 Parameter:  e84_AX_Ref_Diff_Lock
N54 335i xDrive Parameter:  AX_Ref

Let’s be honest, this is really why you’re reading the blog.  Everyone who has installed a mechanical limited slip differential wants to disable the rear electronic differential.  This option is similar to the X1s “Dynamic Performance Control,” but on a more basic level.  The premise is that with an electronic differential, your BMW will brake the spinning wheel to send torque to the wheel with traction.  The problem is, this isn’t a very good torque transfer in terms of mechanical efficiency.  Installing a mechanical limited slip differential such as a Wavetrac (my choice) in the rear will allow you drastically better traction and mid-corner adjustability.  The problem is, unless you disable this e-diff it will be fighting the mechanical LSD and never really allow your actual differential the freedom to do it’s thing.  If you have a mechanical LSD installed, do yourself a favor and disable this.  If you don’t have a mechanical LSD, leave it on.  At least, until you immediately run out and buy a real LSD (you should).
To disable, set to “nicht_aktiv”.

Here is an example of what the stability control module coding looks like in the program NCS Dummy. There are many more options than I have identified here, but I believe I have highlighted everything that has an impact on performance driving.

Turning all of these options off gained me about two seconds on a 1:45 second track.  More importantly, it made my car extremely fun to drive.  There are not many crossovers that you can kick the back end out at 100mph, drift into a decreasing radius corner, and then dance with it via throttle inputs as you adjust mid corner and power through.  Thanks to the magic of “coding,” my X1 is now one of them.  Hopefully, this helps you enjoy your car just as much as I enjoy mine.

Thanks for reading, and check back in a few days for the promised post about DIY aero on the car.

Source: Please note – if the option in your DSC module appears different (for example, it you have various “werts” as an option instead of “nicht_aktiv” or “aktiv”), you can examine the hex data in the entry to see what the various “wert” levels are.  For example, the N54 335i electronic differential setting is not a simple on/off setting, but the hex data for “wert_01”  is equivalent to “nicht_aktiv.”

How to do BMW coding with NCS Expert

This is a great write-up from I just copy here coz this info might help others out there trying to make sense of ncs expert.
There are lots of guides that just shows you what buttons to press or ones that are too complicated for a layman (not a programmer) to really understand. I like to understand what i’m doing and whats going on. So this is why i wrote this post, to help understand what ncs is doing. I didn’t come up with this stuff, the experts out there did. I’m just trying to chew, regurgitate it for the ‘dumb’ masses like BMW ICOM who are still learning.

If I said anything wrong, experts please chime in and correct me.

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!

Guide to understand NCSand Coding

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

On Pre ’02 cars the coding is slighly 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 writen 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 dont 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.

Cost-effective ways to do coding:
1.Buy an ICOM A2 main unit& download software yourself (cheapest);
2.Buy VXDIAG A3 diagnostic tool (good solution for garage repair work)
3.Buy ICOM A2 full package (software included if your budget is enough)

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 dont 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 doesnt 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 didnt 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 dont 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 incase 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 doesnt 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. Im going to deactivate DRLs here.
dont report
By changing to nicht_activ, it deactivates this setting. Now dont 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! That’s 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 dont 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.
Start small, and don’t bite off more than you can chew. Once you get the hang of this basic stuff, you can do more. Don’t mess with stuff you cant translate or don’t understand, just leave it alone. Don’t go nuts. I hope this helps someone out there.

How to restore BMW ICOM Next

It’s a manual of how to restore icom next from a BMW ICOM user. TRY ON YOUR OWN RISK.

Free download icom next firmware:
ICOM NEXT firmware 3.14.10:
ICOM NEXT firmware 3.14.08:
ICOM Image 03.14.08 (Application image+ Firmware image+ ICOM NEXT app .tar.gz+ ICOM NEXT rootfs. tar.gz)

Reference for ICOM Next restore:
We need usb 2.0 or usb 3.0 flash drive formatted with FAT32.
Copy ICOM_Next-rootfs-xxxxxx.tar.gz and ICON_Next-app-xxxxxx.tar.gz to the root of usb.
Icom must be disconnected from power supply.
Plug USB drive into BMW ICOM Next.
Press and hold the button on ICOM NEXT and connect it to the OBDII of a vehicle.
Keep the button pressed after about 4 second all LED turn to orange/yellow.
Release the button and then press it 3 times within 5 second.
Wait for around 5 until the led’s turns green.

Note: For icom next bin file , install the driver 03.14.08 , and go after in program data, bmw, ista, and find data folder where icom drivers are stored and copy those 2 archives on usb. Then follow steps listed above.

( similarly like ICOM A2 restore)