BMW E39 540

Using Winkfp to program a DME with a different software


First of all you need a K+DCAN cable. Pin 7+8 in the OBD-connector need to be bridged if you are going to program a BMW manufactured before 2002. This is done to activate both of the K-bus lines used by the older cars.
Pin 14 and 18 needs to be connected if you are using a round 20-pin ADS converter. This is done to directly supply the DME(ECU) with +12v when you are flashing. It may not be necessary for all models, but it looks like it’s needed for cars with the Motronic 5.2 DME and MS42 DME. If the part about directly supplying pin 18 with 12v sounds scary, then you can try without doing so – but you’ll probably get an error. We’ll get back to this later on.

Winkfp 5.3 or higher should be used to avoid the bugs in the earlier versions. It’s bundled in a BMW Standard Tools package.


Setting up Winkfp:

First of all you need to import the data files needed to flash your ECU. The needed files can be found on CD1 in the Progman package and Progman can be downloaded on thepiratebay. Simply search the CD for a folder called “E39”-something(or for whatever model you are programming).

Unpack the folder and place it somewhere on your hard drive. Follow this guide when you have done that:
The last part of that guide is probably unnecessary – the bugs don’t exist in the newer Winkfp version.

Winkfp settings:

Enable UIF write after data, UIF write after program, UIF write in comfort mode, Test Checksum, activate Bootsectorupdate.

Most guides suggest enabling Programming voltage, but it wouldn’t let me program the ECU when it was enabled. I left this unchecked and it didn’t brick my ECU. You can try leaving it enabled to see if it works – but if you get an error, then disable it.


To program your ECU with different software using Winkfp:

First of all make sure you keep the vehicles voltage at a stable 13-14v. We connected a big battery, with a battery charger on it, to the car. The car was drawing 20 amperes at times, and you don’t want to risk bricking your ECU because the voltage dropped too low.

  1. Enter “Comfort mode”
  2. Select “Choose ZUSB”. Select the correct “ECU family” of DME you are going to program, and then choose the ZUSB of the program you want to use. The ZUSB stands for the BMW part number of the file. If you want to look up a certain ZUSB for a car(useful if you have done an engine swap like me), go to, select the vehicle which files you want to use, and look under “Engine Electrical” and “Programmed DME”.
  3. Press “Enter VIN” and type your cars full VIN number.
  4. Press “Done”.
  5. Click on “Program”. You’ll see how many times you can flash the car’s ECU. Click OK. The flashing begins, make sure your laptop doesn’t enter sleep mode!
  6. You will now see a window saying you can program the UIF. Click OK.
  7. The programming should be done. If you want to, you can use INPA to confirm that your “Assembly number” is the same as the ZUSB you used.




Leave a Reply

Your email address will not be published. Required fields are marked *


7 × 1 =