Back to the Tool About & FAQ

Using XDF Porter to convert a mappack between calibrations

A worked example: porting a Volvo 50GPHJ definition onto a 50WRHJ calibration, with the misaligned tables shown before and after.

Say you have got a definition file (XDF, KP or A2L) that does not line up with your ECU calibration. For this example I am using a Volvo S60 2.4 T5 on the 50WRHJ calibration, and the XDF I have was built for a Volvo 2.4 T5 on 50GPHJ. A relatively close calibration, but not exactly the same software code.

Load a mismatched XDF in an ECU software program (like TunerPro) and the problem shows up right away. Timing tables 1 and 2 (KFZW1, KFZW2) are misaligned, and timing tables 3 and 4 (KFZW3, KFZW4) are sitting at completely wrong addresses. The pedal map (KFPED) is off as well, and the wastegate position map (KFLDIMX) and max cylinder charge map (KFLDRX) are not anywhere near where they should be. Those are just a handful of examples from the full 50GPHJ mappack. In practice every map is at least misaligned, and plenty are well out of place.

Misaligned tables while using a 50GPHJ ECU definition file on a 50WRHJ calibration.

The fix: let XDF Porter remap it

So how do you get the 50GPHJ mappack working on the 50WRHJ calibration? You could line up every table and align every address by hand, but with dozens of tables and scalars that is hours of work, maybe days. The other option is to let XDF Porter handle it for you.

You will need three files:

  1. The source BIN, the calibration the definition was made for.
  2. The source XDF (or A2L) that matches the source BIN.
  3. The target BIN you want the definition ported onto.
Please note that the source calibration has to be reasonably close to your target calibration. The maps need to be largely similar, although minor changes between software calibrations will still work.

You load the three files into the porter like this:

What happens during the port

With those three files, XDF Porter maps every address in your source BIN and runs its matching algorithm across the maps to work out where each one belongs in the target. The terminal keeps you updated on the progress. Larger BINs and larger ECU definition files take longer to convert. The 50GPHJ definition file I am porting to the 50WRHJ calibration has 589 tables and 568 scalars/constants.

The results

The porting job took about 40 seconds. Once it is done, the results page comes up with a download button. On the Porting Results screen you can see it successfully ported and verified roughly 99% of the tables and scalars from the original mappack.

The results page also specifies how confident it is in each match. Here it matched 572 of 589 tables and all 568 scalars, with 80 of those coming back at medium confidence and 4 at low. It also flags 494 tables that were missing an X or Y address in the original BIN; those get preserved as-is in the ported XDF rather than thrown out. 18 tables or scalars could not be matched.

Download the new XDF, open it up in your ECU software program of choice, and the tables are now properly aligned:

Before (misaligned)
After (ported)

Toggle to compare the same three maps before and after porting. After porting, the axes read correctly and the cell values form clean, sensible gradients.

Try it yourself

That is the whole process. Three files in, a working XDF out, in well under a minute.

Open the porter →