Before you start
A 5-minute checklist that prevents 99% of problems.
-
Battery & charger
Plug a smart battery charger / maintainer to the under-hood positive terminal. The flash takes 7–10 minutes — voltage drops below ~12V mid-flash can brick the ECU. Even a "fresh" battery in a cold garage can sag.
Tip: CTEK MXS 5.0 or any 5A+ smart charger works. Don't use a jump pack. -
Buy the OBD adapter
License is software — you still need a hardware bridge to the OBD-II port. Recommended:
- MHD WiFi Adapter — works for MHD Flasher and most other apps. iOS + Android.
- xA Ultra WiFi Adapter — works for xHP Flashtool. iOS + Android + Windows.
- Both publishers also support certain third-party adapters — check their compatibility lists.
-
Install the official apps
Free downloads:
- MHD Flasher — App Store / Google Play (search "MHD Flasher" + your engine series)
- xHP Flashtool — App Store / Google Play
Note: MHD has separate apps per engine (e.g. "MHD F-Series N55", "MHD S58"). Pick the one for your car. -
Pick a stage that matches your hardware
Don't run Stage 2 on stock catted downpipes — you'll throw codes and pull timing. Match the map to your octane and bolt-ons:
- Stock car, premium fuel — Stage 1 (91 or 93 oct variant)
- FMIC installed — Stage 1+
- Catless / catted downpipes — Stage 2
- DPs + FMIC — Stage 2+
- Ethanol-safe fuel system — E30 / E85 map for max power
Flash the engine ECU (MHD)
Total time: ~10 minutes the first time, ~60 seconds for subsequent map switches.
-
Plug in the adapter
Connect the MHD WiFi Adapter to the OBD-II port (under the steering column on most BMWs). Turn the ignition on but engine off (press Start without your foot on the brake on Comfort Access cars).
-
Connect your phone
Open WiFi settings, join the network broadcast by the adapter (looks like
OBDIIorBMW-WIFI). Then open the MHD Flasher app and tap "Connect".Don't see WiFi? Adapter LED blinking blue = ready. Solid = already paired. Cycle ignition if it doesn't broadcast. -
Activate your license
In the app's License section, paste the activation code we emailed you. The license validates against the official MHD server and locks to your VIN.
-
Read your stock ECU
First flash only: tap "Read" so MHD records your factory calibration. Takes ~5 minutes. Do not interrupt — leave the phone, don't touch the car.
-
Flash the OTS map
Go to "Tune" → pick your stage → tap Flash. Takes ~5 minutes. The dash will show various warnings (transmission failsafe, ABS error, etc.) — this is normal during a flash.
When done: the app says "Flash complete". Cycle ignition off → on → start. Drive 10 minutes for the ECU to relearn. -
Optional: enable flash options
In the Tune tab → Flash Options, you can turn on burble, kickdown delete, top speed unlock, cold start delete, and more. Each toggle requires a 60-second re-flash.
Flash the gearbox (xHP)
Same workflow as MHD, just on the transmission control unit instead of the engine.
-
Plug in the xA Ultra adapter
OBD-II port, ignition on / engine off. The xA Ultra works on iOS, Android and Windows.
-
Connect via WiFi (or Bluetooth on Windows)
Open the xHP Flashtool app → Connect. Pair the adapter network from your device's WiFi list first if asked.
-
Activate license
Paste the activation code from your email. License is VIN-locked through the official xHP server.
-
Read TCU + read engine ECU
xHP requires reading both TCU and ECU on first connect (it confirms compatibility). Takes ~3 minutes total.
-
Flash a stage
Pick Stage 1, 2 or 3 → Flash. Stage 1 simply removes torque limiters; Stage 2 is the full remap; Stage 3 is the race-ready calibration. Total flash time ~6–8 minutes.
Custom shifting: after flashing, open the Customize tab to tune each map (shiftpoints, launch control, valet mode, true manual). Settings are pushed to the gearbox in seconds without a full re-flash. -
Reset adaptations
After the first flash, drive for 50–100 km in mixed conditions so the gearbox relearns clutch pressures. Shifts smooth out within the first day of driving.
Troubleshooting
The most common issues we see and how to fix them yourself.
App can't connect to the adapter
Cycle ignition off → wait 30 seconds → ignition on. Forget the OBD WiFi network on your phone, then re-join. If the adapter doesn't broadcast at all, the OBD port may not be powering it — check the cabin fuse for OBD (usually a 5A fuse near the steering column).
Flash failed mid-process
Don't panic. Both apps include automatic recovery flows. Stay connected and re-run the flash — they'll resume or roll back. Always have a battery charger plugged in. If recovery fails, contact MHD or xHP support directly with your VIN — they handle 99% of cases for free.
Engine pulls timing / runs poorly after flash
Almost always a fuel quality issue. Run the octane the map calls for. Check ignition correction on the Monitor (positive = good, −3° or worse = knock). If you have logs, send them to MHD's free log analysis service.
Transmission shifts feel rough after xHP flash
Expected for the first 50–100 km. The TCU re-learns clutch pressures during normal driving. Mix highway and stop-go traffic. If still rough after 200 km, reset adaptations from the Customize tab.
I want to revert to stock for a dealer visit
Both apps have a "Revert to OEM" button. MHD: Tune → Stock. xHP: Stage → Reset. Both flashes take a few minutes. After reverting, no diagnostic tool can detect the previous tune.
Still stuck?
We're online 24/7 — most replies are under 15 minutes during the day. Send us your VIN, current stage, octane and the exact app message. Contact support →