The BMW N54 engine

CAFlash N54

Flash, log and diagnose the N54's DME from your phone. The app is free, it runs on Android and iOS, and it talks to the MSD80 and MSD81 in the 135i, 335i, 535i and Z4 over MHD WiFi, Thor WiFi or a K+DCAN cable.

  • Flashing

    Loads a .bin and writes it to the DME. A full flash takes about 6 minutes and a map change about 1. If any pre-existing tunes are already installed the app will overwrite them completely.

  • Logging and gauges

    48 parameters, from boost, wastegate duty and timing to knock, fuel trims, lambda, VANOS and oil pressure. Logs save as CSV and open in Datazap, SpoolStreet or the app's own viewer.

  • Diagnostics

    Fault codes with descriptions, every OBD readiness monitor, the DME's CVN numbers, and adaptation resets.

  • Workshop jobs

    Injector coding and ISN correction for a replacement DME.

  • Identify

    Start here. The app reads the DME and shows the VIN, the software version, the programming status, the name of the file on it, run hours, mileage and battery voltage. Under that it lists every OBD readiness monitor with its state, and the ECU and CAL CVNs, which is how you check a car before an emissions inspection. A button takes you to the tuned files in the shop.

  • Flash

    Load the .bin, set the flash options for the hardware on the car, and write.

  • Logging

    Pick the parameters in Settings, then press Start Logging.

  • Codes

    Reads the active and historic fault codes from the DME, each with a plain description. Clear Adaptations lets you pick which of the DME's learned values to reset.

In the Tools menu

  • Stock File

    Reads the ZB number from the DME, works out the latest software BMW released for the car, and builds a stock file from it. It's saved to the CAFlash folder, so you have a known-good file to go back to and a clean base for your own edits.

  • Injector Coding

    Reads and writes the energy and flow values for all six injectors, with a photo showing where the numbers are printed. Export saves the set to the phone and Import loads it back, which is how you carry the coding across a DME swap.

  • ISN Correction

    Reads the ISN from the old DME and writes it into the replacement, so a used MSD80 or MSD81 can go in without being posted away. The write needs the ISN file from the shop, and the app walks you through the three steps.

  • DME Recovery

    Force-erases a DME that's stuck restarting after a bad flash, usually an MHD bin that uses MHD+ logic, so it can be programmed again with a tune or a stock file.

  • Log Viewer

    Plots any CSV the app has logged. Pick the channels, zoom in on the bit you care about, and set fixed limits so the same scale is used from one log to the next.

Flash options

These describe the hardware on the car. Set them once on the Flash tab and they're remembered. They're applied to the file as it's written, so a bin you've tuned yourself doesn't need any of them edited in, and the write confirmation lists whatever's been moved off stock.

  • TMAP

    Stock / 3.5 Bar / 4 Bar

    Select the sensor scaling if you've fitted a higher-range pressure sensor on the chargepipe. Leave it on Stock for the factory sensor.

  • Ethanol Content

    0–20% / 20–40% / 40–60% / 60+%

    Changes the DME's fuel mass constant to match the ethanol ratio in the tank. You don't need to change any scalars in the bin yourself when using a custom file. This will automatically correct all fuel related calculations for your blend.

  • O2 Banks

    Stock / Single Bank

    Leave this on Stock unless the car only has one primary and one secondary O2 sensor fitted.

  • Coils

    Stock / B58 / Precision / Bimmerlife

    Select the matching option if the car has aftermarket coils.

  • Oil Sensor

    Stock / Pressure Sensor

    Use this if the stock oil pressure switch has been swapped for a pressure sensor.

  • Exhaust Flap

    Stock / Open in Sport / Open in S

    Overrides the exhaust flap control. S is the gear lever pushed to the left on an automatic or DCT car. Sport is the sport button, which only the DCT cars have.

DIY Tuning

The app isn't tied to my files. It will also flash your own custom bin files, and it automatically corrects the checksums for you.

If you'd rather not, my tunes are in the shop and they flash with this app too.

  • Definitions on GitHub

    XDF definition files for the four N54 ROMs, I8A0S, IJE0S, IKM0S and INA0S, are at github.com/CAFlash/N54_XDF. Open your bin in TunerPro with the matching XDF and the tables are there by name.

  • Start from a stock file

    Generate one for your car from the Tools menu and you have a clean base that matches your DME exactly. The Identify tab tells you which ROM you're on.

  • What the app checks

    The app automatically checks if the file you are trying to flash is supported by the DME to prevent any errors.

FAQ

What devices are supported?

Any Android device that runs Android 8 or higher and has access to the Google Play Store, or any iPhone or iPad that runs iOS 15 or higher. Newer devices typically provide better performance and quicker flashing.

On iOS keep the app open and on screen while a write is in progress. iOS suspends apps that move to the background, which would interrupt it.

What interfaces are supported?

Three adapters work with CAFlash: MHD WiFi (fastest and most reliable), Thor WiFi (slightly slower), and USB K+DCAN cables (performance depends on cable quality).

On iPhone and iPad only the WiFi adapters are supported. iOS does not support serial adapters, so a K+DCAN cable can't be used there.

What causes flash failures?

Common causes include problematic Android devices interfering with communications and low battery voltage. Ensure the vehicle battery is fully charged and if possible connect a battery tender. Also ensure any devices that interfere with the CANBus are disabled, such as a JB4 or an after-market digital dashboard.

Do I need to uninstall MHD or COBB before flashing?

No. CAFlash will identify if any existing flashes are installed and overwrite them.

What is a ROM mismatch error?

If you get an error stating there is a ROM mismatch then this is likely caused by the file you are trying to flash not matching your ECU hardware.