This repository aims to be starting point for anyone interested in coding, ECU programming and general BMW maintenance parkour.
If you see any error, wrong date or anything that needs to be corrected, create an issue or submit a PR
Notes on naming: BMW DME = Digital Motor Electronics (petrol). DDE = Digital Diesel Electronics. EGS = Elektronische Getriebe Steuerung (transmission). "Bosch Motronic ML/M/MS/ME/MEV/MG/MD" and "Siemens/VDO MS/MSS/MSV/MSD" are the suppliers. ECU names sometimes differ slightly per market (e.g. SULEV variants) and per model-year (DME hardware revisions are common).
| System | Years | BMW Models / Engines |
|---|---|---|
| Bosch K-Jetronic (mechanical CIS) | 1976-1988 | E21 320i / 323i (M10/M20), E12 528i (M30, early), E24 630CSi (M30), E28 528i (early, M30); some early E30 318i |
| Kugelfischer / Bosch + Magneti-Marelli | 1978-1981 | E26 BMW M1 (M88/1) — mechanical injection, separate electronic ignition |
| Bosch L-Jetronic (analog EFI) | 1979-1988 | E12 528i/530i (US, M30), E23 728i / 732i / 733i (M30), E24 633CSi / 635CSi (early, M30), E28 528i / 533i / 535i (early, M30), E30 318i (early, M10) |
| ECU | Years | Engines | BMW Chassis / Models |
|---|---|---|---|
| Bosch Motronic ML1.1 | 1983-1987 | M20 (eta), M30 | E30 325e/325es, E28 528e, E28 533i (late), E24 633CSi (late), E23 733i (late), E32 730i/735i (early) |
| Bosch Motronic ML1.2 | 1987-1990 | S38B36, M70 (dual ECU, one per bank) | E34 M5 (1988-1990, S38B36), E32 750i/750iL (early M70 V12), E31 850i (early M70 V12) |
| Bosch Motronic ML1.3 | 1987-1993 | M20, M30, S14 (US, catalysed) | E30 325i / 325is / 325iX, E30 M3 (US-spec S14B23), E34 525i / 535i, E32 735i / 735iL, E24 635CSi (late) |
| Bosch Motronic ML1.7 | 1987-1994 | M40, M42, S14 (Euro/late) | E30 318i (M40), E36 318i / 318is (early, M40/M42), E30 M3 (Euro S14B23/B25 cat) |
| Bosch Motronic M1.7 (dual) | 1992-1996 | M70 (later), M73 / M73N (some) | E32 750iL (late), E31 850i (late), early references on M73 dual-bank setup |
| Bosch Motronic M3.3 | 1992-1996 | M60 (V8) | E34 540i, E32 740i / 740iL, E38 740i (1995), E31 840Ci |
| Bosch Motronic M3.3.1 / "413" / "506" | 1992-1995 | M50 (with VANOS) | Bosch-equipped E36 320i/325i/525i/525ix variants (parallel to Siemens MS40 in other markets) |
| Siemens MS40.0 / MS40.1 | 1992-1995 | M50 (24V), M50TU (with VANOS) | E36 320i / 325i / 325is / 328i (early), E34 520i / 525i (M50/M50TU), Z3 1.9 (early) |
| Siemens MS41.0 / MS41.1 / MS41.2 | 1995-1999 | M52 (single VANOS), S52B32 (US M3) | E36 323i / 328i / Z3 2.8 (M52), E39 523i / 528i (M52), E36 M3 US (S52, MS41.2), Z3 M Coupe/Roadster US (S52) |
| Siemens MSS50 | 1995-1999 | S50B32 (Euro M3) | E36 M3 (Euro), Z3 M Coupe/Roadster (Euro, S50B32) |
| Bosch DME M5.2 / M5.2.1 | 1995-1998 | M62 (V8), M73 (V12, dual ECU) | E38 740i / 740iL (1996-1998, M62), E39 540i (1997-1998, M62), E31 840Ci (1996-1999, M62), E38 750i / 750iL (1995-1998, M73), E31 850Ci (1995-1999, M73) |
| Siemens MS42 | 1998-2001 | M52TU (Double VANOS) | E46 320i / 323i / 328i (1998-2000), E39 523i / 528i (1998-2000), Z3 2.8/3.0 (M52TU) |
| Bosch ME7.2 ("M7.2") | 1998-2003 | M62TU (Double VANOS V8), M73N (V12 LCI, dual) | E38 740i / 740iL (1998-2001), E39 540i (1999-2003), E53 X5 4.4i / 4.6is (2000-2003), E38 750i / 750iL LCI (1999-2001, M73N dual ECU) |
| Siemens MSS52 | 1998-2003 | S62 (V8) | E39 M5 (1998-2003), E52 Z8 (2000-2003) |
| Siemens MS43 | 2000-2006 | M54 | E46 325i / 330i / 330Ci, E39 525i / 530i, E53 X5 3.0i, E83 X3 2.5i / 3.0i, E85/E86 Z4 2.5i / 3.0i, E60 525i / 530i (2003-2005) |
| Siemens MSS54 / MSS54HP | 2001-2008 | S54B32 | E46 M3 (2001-2006), E46 M3 CSL / CS (MSS54HP, 2003-2004), E85/E86 Z4 M Coupe/Roadster (2006-2008) |
| Bosch ME9.2.x | 2003-2010 | N62 / N62TU (V8), N73 (V12) | E60/E61 545i / 550i, E63/E64 645Ci / 650i, E65/E66 745i / 750i / 760i (N73 V12), E70 X5 4.8i / xDrive48i, E53 X5 4.4i (late, N62) |
| Siemens MS45.0 / MS45.1 | 2004-2006 | M54 (late) | E60 525i / 530i (US/non-US split: MS45.1 NA, MS45.0 ROW), E83 X3, late E46 |
| Siemens MSV70 | 2005-2007 | N52 | E90/E91 325i / 328i / 330i, E60/E61 525i / 528i / 530i, E63 630i, E85/E86 Z4 3.0si, E83 X3 |
| Siemens MSV80 / MSV80.1 | 2007-2013 | N52N (Magnesium-block), N51 (SULEV variant uses MSV80.1) | E90/E92/E93 LCI 328i / 330i, E60 LCI 528i / 530i, E70 X5 3.0si / xDrive30i, E83 X3 LCI, E89 Z4 sDrive30i, E81/E82/E87/E88 128i |
| Siemens MSS60 | 2007-2013 | S65 (V8) | E90 M3, E92 M3, E93 M3 |
| Siemens MSS65 | 2005-2010 | S85 (V10) | E60/E61 M5, E63/E64 M6 |
| Siemens MSD80 | 2006-2010 | N54 (twin-turbo I6) | E90/E91/E92/E93 335i / 335xi, E82/E88 135i, E60 535i / 535xi, E71 X6 xDrive35i (early), E89 Z4 sDrive35i (early) |
| Siemens MSD81 | 2009-2013 | N54 (later) | E89 Z4 sDrive35i / 35is, E82 1M Coupe, late E92 335is, F25 X3 (early N54-based ROW variants) |
| Siemens MSD85 / MSD85.0 / MSD85.1 / MSD85.3 | 2008-2014 | N63, S63 (TT V8) | F01/F02 750i / 750Li (N63), F07 550i GT (N63), F10/F11 550i (N63), F12/F13 650i (N63), F06 640i (early), E70 X5 xDrive50i (N63), E71 X6 xDrive50i (N63), E70 X5 M (S63B44O0), E71 X6 M (S63B44O0) |
| Bosch MEVD17.2.2 / 17.2.3 (etc.) | 2008-2014 | N63 / N63TU variants and others | F10/F11 550i (N63TU), F01/F02 750i LCI (N63TU), F15 X5 xDrive50i (N63TU) — multi-DME on some variants |
| Bosch MEVD17.2.4 / 17.2.5 / 17.2.6 / 17.2.8 / 17.2.K | 2011-2018 | N20, N26, N55, N63TU | F30 328i (N20/N26), F32 428i (N20/N26), F25 X3 xDrive28i, F20 125i / 130i (N55), F30 335i (N55), F10 535i (N55), F15 X5 xDrive35i (N55), F22 M235i (N55), F87 M2 (N55, MEVD17.2.H/17.2.P) |
| Bosch MEVD17.2.G / 17.2.9 | 2014-2020 | S55 (TT I6, M-Performance) | F80 M3, F82/F83 M4, F87 M2 Competition / CS (S55) |
| Bosch MG1CS003 / MG1CS024 / MG1CS201 / MG1CS003 etc. | 2015-2020 | B38, B48, B46, B58, S63B44T4 | F30 LCI 340i (B58), F32 LCI 440i (B58), G20 330i (B48) / M340i (B58), G30 530i (B48) / 540i (B58), G05 X5 xDrive40i (B58), G07 X7 (B58), F90 M5 (S63B44T4, MG1CS201) |
| Continental MD1CS006 / MD1CP002 | 2018-2020 | S58 (M-Performance TT I6), B57 (diesel applications also) | G80 M3 / G82 M4 production began 2020 (MD1CS006), G07 X7 50i, and used in some diesel chassis (MD1CP002) |
| ECU | Years | Engines | BMW Chassis / Models |
|---|---|---|---|
| Bosch DDE 2.x / 3.x | 1991-2001 | M21, M41, M51 (early diesels) | E34 525tds, E36 325td/tds, E38 725tds, E39 525d (early M51) |
| Bosch DDE 4.x | 1998-2005 | M47, M57 (early) | E46 320d / 330d, E39 530d, E38 730d, E53 X5 3.0d |
| Bosch DDE 5.x / 6.x (EDC16) | 2002-2010 | M47TU, M57TU / M57TU2 | E46 LCI 320d, E60 525d / 530d / 535d, E70 X5 3.0d / 3.0sd / 35d, E90 320d / 330d / 335d, E83 X3 2.0d / 3.0d |
| Bosch DDE 7.x (EDC17CP09, etc.) | 2007-2013 | M57N2, N47 (4-cyl) | E90 335d, E70 X5 xDrive35d, E60 LCI 535d, E84 X1 (N47), F25 X3 28d (N47) |
| Bosch DDE 7.3 / 7.4 / 8.x (EDC17C50/C56/C76) | 2010-2018 | N47, N57, N57S, N20d-class | F30 320d / 328d (N47), F10 525d / 530d / 535d (N57), F01 730d / 740d / 750d (N57/N57S), F15 X5 xDrive30d / 35d (N57), F25 X3 (N47/N57) |
| Bosch MD1CP002 (DDE family) | 2015-2020 | B47, B57 | F30 LCI 320d (B47), G30 520d / 530d / 540d (B47/B57), G05 X5 30d (B57), F48 X1 18d/20d/25d (B47) |
| ECU / Transmission | Years | BMW Chassis / Notes |
|---|---|---|
| ZF 4HP22 (EH) w/ early EGS | 1983-1992 | E23 745i, E32 730i / 735i / 740i (early), E34 530i / 535i, E28 535i (late), E24 635CSi auto |
| ZF 5HP18 | 1991-1999 | E36 325i / 328i (auto), E34 525i / 528i (auto), Z3 2.8 |
| ZF 5HP19 | 1996-2005 | E39 520i / 523i / 525i / 528i / 530i, E46 320i / 323i / 325i / 328i / 330i, E83 X3 2.5i / 3.0i (early), E60 525i / 530i (early), E85 Z4 |
| ZF 5HP24 / 5HP30 | 1996-2003 | E38 740i (5HP24) / 750i (5HP30), E39 540i, E31 840Ci/850Ci (5HP30), E53 X5 4.4i / 4.6is (5HP24) |
| GM 5L40-E (Steptronic) | 1999-2006 | E46 330xi / X3 2.5i (US), some E53 X5 3.0i (US, ROW used ZF) |
| ZF 6HP19 / 6HP21 (GA6HP19Z, GA6HP21Z) | 2003-2012 | E60 525i / 530i / 530xi, E90 325i / 328i / 330i / 335i, E63 630i, E83 X3 (late), E70 X5 3.0si, E71 X6 xDrive35i, E89 Z4 |
| ZF 6HP26 / 6HP28 (GA6HP26Z, GA6HP28Z) | 2003-2014 | E60 540i / 545i / 550i, E63 645Ci / 650i, E65 745i / 750i, E66 745Li / 750Li, E70 X5 xDrive48i / 50i, E71 X6 xDrive50i, F01 740i / 750i (early), F10 535i / 550i (early) |
| ZF 8HP45 | 2009-Present | F30 320i / 328i / 335i / 340i, F32 428i / 435i / 440i, F20/F21 125i / 135i / M135i / M140i, F10 528i / 535i, F25 X3 xDrive28i / 35i, F15 X5 xDrive35i, G20 330i, G30 530i, G29 Z4 sDrive30i, G05 X5 30i |
| ZF 8HP70 / 8HP75 | 2009-2020 | F10 550i / M550d, F01/F02 740i / 750i, F12/F13 650i, F30 ActiveHybrid 3, F06 640i / 650i, F15 X5 xDrive50i, F16 X6 xDrive50i |
| ZF 8HP90 / 8HP95 | 2012-2020 | F10 M5, F12/F13 M6, F90 M5 (8HP75 in some markets), F85 X5 M, F86 X6 M, F95 X5 M (G-prep), G11/G12 750i / M760Li / 760Li (8HP95), G15 M850i |
| Getrag 7DCT (GS7D36SG / DCT) | 2008-2019 | E90/E92/E93 M3 (Drivelogic), F10 M5 (DCT), F12/F13 M6, F80 M3, F82/F83 M4, F87 M2 / M2 Competition / CS, Z4 M (DCT in some markets) |
| System | Years | BMW Chassis / Notes |
|---|---|---|
| Bavaria / Bavaria C / Reverse / C23 / C33 / C43 (radio-only) | 1985-2000 | E30, E32, E34, E36, E38, E39 (base radios — cassette / CD, no nav) |
| MK1 / MK2 / MK3 / MK4 (Navigation Computer) | 1995-2008 | Trunk-mounted DVD-nav unit on E38, E39, E46, E53, E83, E85 (4:3 monochrome → color screens). MK4 with DVD-based Professional Navigation |
| M-ASK / M-ASK2 (Audio System Controller) | 2003-2010 | E60/E61 (pre-LCI), E63/E64, E83, E85/E86 — base radio variant, no full iDrive |
| CCC (Car Communication Computer) — iDrive 1.0 | 2003-2008 | E60/E61/E63/E64 (pre-LCI), E65/E66 (LCI), E70 (pre-LCI), E90 (post-09/2008 in some markets) — first iDrive generation; DVD nav, 8.8" 16:9 screen |
| CIC (Car Information Computer) — iDrive 2.0 | 2008-2013 | E60/E61 LCI, E63/E64 LCI, E70/E71/E72 (X5/X6), E90/E91/E92/E93 LCI, F01/F02 (early), F10/F11 (early), F25 (early) — HDD-based, 8.8" / 10.25" screen |
| NBT (Next Big Thing) — iDrive 4.0 | 2012-2016 | F30/F31, F32/F33/F36, F10/F11 (LCI), F01/F02 (LCI), F15 X5, F16 X6, F25 X3 LCI, F26 X4, F20/F21 LCI, F22/F23 — Touchpad iDrive controller from 2013, 6.5" / 8.8" / 10.25" screens |
| Entrynav / Entrynav2 | 2013-2018 | Entry-level radios with smaller screens on F-chassis (often where NBT was an option) |
| NBT Evo (ID4 / ID5 / ID6) — iDrive 5/6 | 2016-2020 | G11/G12, G30/G31, G01 X3, G02 X4, F15 LCI, F16 LCI, F22 LCI, F30 LCI 2, F32 LCI, F48 X1, F39 X2, F45/F46 — touchscreen support (ID5+), Apple CarPlay |
| HU_MGU (Media Graphics Unit) — iDrive 7 ("BMW OS 7") | 2018-2020 | G20 (3-Series, 2019+), G05 X5, G06 X6, G07 X7, G14/G15/G16 8-Series, G29 Z4 — fully touchscreen, AAOS-derived stack |
Rule of thumb on chassis fit: E-series (pre ~2008) → Standard Tools (INPA / NCS Expert / WinKFP) + SP-Daten, over K+DCAN cable. F-series, G-series, I-series (~2008+) → E-Sys + PSdZData, over ENET (Ethernet-to-OBD) cable, with E-Sys Launcher PRO to sign FDL changes. All series, dealer-level diag/programming → ISTA+ (formerly ISTA/D) and ISTA/P, with ICOM Next hardware. Mobile apps (Bimmercode, BimmerLink, Carly, ProTool) sit on top of a Bluetooth/WiFi OBD adapter and cover the common 80% of coding without a PC.
| Tool | Purpose | Chassis Scope | Hardware | Notes |
|---|---|---|---|---|
| EDIABAS | Low-level diagnostic runtime — the engine that drives INPA, NCS Expert, WinKFP, Tool32 etc. Not used directly. | All E / F / G / I | K+DCAN, ENET, ICOM | Required dependency for all "Standard Tools". |
| INPA (Interpreter for Test Procedures) | Live diagnostics, fault-code read/clear, sensor live data, service-function scripts. Read-only coding view. | Primarily E-series (some early F-series) | K+DCAN / ICOM | Engineering tool — German UI in places; very flexible but no guard-rails. |
| NCS Expert | Module coding (FA / VO manipulation, FDL changes, enable hidden features). | E-series (E36 through E9x / E7x) | K+DCAN / ICOM | Needs matching SP-Daten package. Dangerous if misused — can brick modules. |
| NCS Dummy | Helper GUI that turns NCS Expert's raw NETTODAT/MAN trace files into human-readable coding options. | E-series | (works offline on dumps) | Community tool — pairs with NCS Expert. |
| WinKFP | ECU flashing / firmware update / ZUSB programming for E-series. | E-series | K+DCAN / ICOM | Used together with NCS Expert when retrofitting a module that needs a firmware update. |
| Tool32 | EDIABAS job-runner: run individual SGBD / .prg jobs against a control unit (reset adaptations, service functions, etc.). |
All E / F (where SGBD applies) | K+DCAN / ICOM | The "Swiss Army knife" of engineering diagnostics. |
| DIS / DIS+ (Diagnostic Information System) | Legacy guided diagnostics + programming. Replaced by ISTA. | E36 / E38 / E39 / E46 / E53 / E83 / E85 (and earlier) | OPS / OPPS / DCAN | Largely retired — kept around for very old chassis where ISTA support is thin. |
| GT1 / SSS | Pre-DIS dealer tester. | E30 / E34 / E36 / E38 / E39 / E46 | OPS hardware | Mostly historical; obsolete. |
| ISTA/D, now ISTA+ (Rheingold) | Modern dealer-level diagnostics — guided test plans, wiring diagrams, fault diagnosis, basic coding. | All E / F / G / I, MINI, Rolls-Royce | ENET / ICOM Next / D-CAN | Replacement for DIS. "ISTA+" is the current branding (since ~2017) that bundles diag + coding. |
| ISTA/P | Dealer-level programming (full vehicle reflash, software-integration-level updates, retrofit programming). | E-series up to F/G/I (G-series transitioned to ISTA/P-Next / ISTA-Next inside ISTA+) | ICOM Next | For newer G/I models, programming is folded into ISTA+ via the ISPI Next backend; standalone ISTA/P is gradually being retired. |
| E-Sys | The F/G/I-series coding & programming workhorse. Edits CAFD (coded ECU configuration), executes VO coding, TAL-based reprogramming. | F-series, G-series, I-series, F-MINI / F-RR | ENET | The de-facto tool for any non-trivial F/G/I retrofit or feature unlock. |
| AOS (Aftersales Online System) | BMW Group's online portal for dealers — service info, technical bulletins, FSC (Feature Code) ordering. | All | Browser | Source of truth for chassis configuration & FSC enabling codes; not a coding tool itself. |
| Tool | Purpose | Chassis Scope | Platform | Notes |
|---|---|---|---|---|
| E-Sys Launcher PRO (TokenMaster) | Wraps E-Sys to inject the "Pro" token, enabling FDL coding without a real BMW developer cert. Adds "Cheat Codes" library of common changes. | F / G / I | Windows | The current community standard. Superseded E-Sys Launcher Premium (deprecated). |
| E-Sys Launcher Premium | Older free wrapper for E-Sys. | F / G (older) | Windows | Deprecated — replaced by PRO. |
| Bimmercode | Module coding app (FDL-level for F/G/I, similar but more limited on E). | E (limited), F, G, I | iOS / Android | Pairs with OBD-II BT adapter (e.g. Veepeak, OBDLink MX+). "Expert mode" exposes raw parameters. |
| BimmerLink | Sister app to Bimmercode — focused on diagnostics, live values, service functions (DPF regen, battery reg, etc.). | E (partial), F, G, I | iOS / Android | Does not do coding — pair it with Bimmercode for full feature set. |
| Carly for BMW | All-in-one diagnostics + coding + used-car-check + service reset. | E, F, G (limited on newest G/I) | iOS / Android | Subscription model. Curated coding list (less raw access than Bimmercode Expert). |
| BimmerGeeks ProTool | Comprehensive coding + diagnostics app, deepest 3rd-party access (often described as "mobile E-Sys / NCS"). | E, F, G, I, MINI, Rolls-Royce | Android only | Lifetime coding license model. |
| OBDeleven | Module coding (more famous for VAG, also supports BMW). | F, G (limited) | iOS / Android | One-click apps + Pro mode. BMW coverage is narrower than VAG. |
| Tool | Purpose | Chassis / Engine Scope | Notes |
|---|---|---|---|
| MHD Flasher | Engine-DME flashing / map switching for turbo BMWs (N54, N55, S55, S63, S58, B58, etc.). | E / F / G turbo platforms | OBD-II adapter + Android/iOS. Stage maps + back-end flash. |
| bootmod3 | Cloud-flashing platform with custom map authoring. | F / G chassis (N55, S55, S63, S58, B48, B58, N63TU, S63TU4) | Browser + OBD adapter. Wider DME coverage than MHD on newer cars. |
| xHP Flashtool | TCU flashing — shift logic / launch control / torque limiter maps. | ZF 6HP and 8HP autos, DCT (Getrag 7DCT) on F-chassis | OBD adapter + Android/iOS. Engine-tune-agnostic; can stack with MHD/bm3. |
| JB4 (Burger Motorsports) | Piggyback (not a reflash) — sits between sensors and DME. | Turbo BMWs (N54, N55, S55, S63, S58, B58…) | Not strictly coding, but commonly co-installed. Doesn't modify the DME calibration. |
| Data | Used By | Series | Notes |
|---|---|---|---|
| SP-Daten | NCS Expert, WinKFP, INPA, Tool32 | E-series | "Spool-Daten" — coding/programming definitions. Latest commonly distributed version is v74.x. |
| PSdZData | E-Sys, ISTA+ programming, ISTA/P | F / G / I | "Programming System Data Zentrale". "Full" = includes SWFL/BTLD firmware blobs; "Lite" = coding (CAFD) only. Versions follow ISTA, e.g. v4.57.x / v4.58.x in 2025-2026. |
| Cable / Tool | Connects | Used For |
|---|---|---|
| K+DCAN cable (USB) | OBD-II ↔ USB | E-series Standard Tools (INPA, NCS, WinKFP). Cheap, widely cloned. |
| ENET cable (Ethernet) | OBD-II ↔ RJ45/USB | F/G/I-series E-Sys + ISTA. Uses Ethernet over the OBD pins. |
| ICOM A2 / ICOM Next | OBD-II / under-hood diag connector | Official BMW dealer interface — required for ISTA/P, advanced programming, and most G-series newer-than-2020 programming sessions. |
| OBDLink MX+ / Veepeak / Vgate vLinker | OBD-II ↔ Bluetooth/WiFi | Companion adapters for the mobile apps (Bimmercode, BimmerLink, Carly, ProTool, MHD, bm3, xHP). |