Skip to content
BMW DME / Part IV / 07 Generation 3: Siemens MS43 Architecture, 64…
Source
DOC 37 § 7
Contents
MS43 Checksum Topography & Bypass Sequence and 3 more
Systems covered
`MS43`, `MS430069`
Size
18 tables · 1 code/diagrams · ~852 words

MS43 Checksum Topography & Bypass Sequence

Introduced in late 2000 for the M54 engine family (M54B22, M54B25, M54B30) across the E46, E39, E53 X5, and E85 Z4, the Siemens DME MS43 represents the pinnacle of 16-bit BMW engine management:

┌──────────────────────────────────────────────────────────────────────────────────────────────────┐  
│                   SIEMENS DME MS43 HARDWARE & CALIBRATION EXPANSION (512 KB)                     │  
├──────────────────────────────────────────────────────────────────────────────────────────────────┤  
│                                                                                                  │  
│   • Microcontroller: Infineon C167CR-LM clocked at 24 MHz (8 MHz Crystal × 3 Internal PLL)       │  
│   • Flash Memory: AMD AM29F400BB (512 KB Parallel Flash, 44-Pin PSOP)                            │  
│   • BASEOFFSET: 0x70000 (Calibration Block spans 0x70000 to 0x7FFFF, exactly 65,536 bytes)       │  
│   • Throttle Control: Full Drive-by-Wire (EDK) + Auxiliary Rotary Idle Actuator (ZWD 5)          │  
│   • Production Apex Firmware: MS430069 (Final factory release superseding 430055/56)             │  
│   • Primary Reference DAMOS: 43250010.A2L, 4323T110.A2L (105,421 lines), ms43.ols               │  
│                                                                                                  │  
│   Linear Flash Memory Layout:                                                                    │  
│   0x00000 - 0x0FFFF (64 KB) ──► Bootloader, User Info Field (UIF), Hardware Coding Parameters   │  
│   0x10000 - 0x6FFFF (384 KB) ─► Main Application Software (ASW) Operating System Code            │  
│   0x70000 - 0x7FFFF (64 KB) ──► CALIBRATION DATA (1,454 Tables & 2,256 Constants) ★ BASEOFFSET   │  
└──────────────────────────────────────────────────────────────────────────────────────────────────┘  

7.1 MS43 Checksum Topography & Bypass Sequence#

The MS43 enforces five distinct checksum blocks. Calibrators must correct addition checksums prior to CRC16 generation because the addition checksum results reside inside the CRC16-protected spans:

Checksum TypeMemory SectionMonitoring AddressCalculation BoundaryNotes
32-bit AdditionProgram ASW0x6FDAE0x10000 - 0x6FDADAdditive sum of 32-bit DWORDS
32-bit AdditionCalibration0x72FFC0x70000 - 0x72FFBAdditive sum of 32-bit DWORDS
CRC16 (CCITT)Bootloader0x03C240x00000 - 0x03C23Polynomial: 0x1021, Init: 0xFFFF
CRC16 (CCITT)Program ASW0x6FDE00x10000 - 0x6FDDFPolynomial: 0x1021, Init: 0xFFFF
CRC16 (CCITT)Calibration0x73FE00x70000 - 0x73FDFPolynomial: 0x1021, Init: 0xFFFF
Development Checksum Bypass Sequence#

To run modified binaries during bench calibration without recalculating CRCs:

  1. Set the 16-bit word at 0x73FFE to 0xFFFF.
  2. Set the configuration byte at 0x6FFB0 to 0xA8.
  3. In firmware MS430069, modify the instruction byte at 0x5FEB3 from 0x84 to 0x94.

7.2 Definitive MS430069 Calibration Table Directory#

In firmware revision MS430069, all primary operational maps reside in the 64 KB calibration block (0x70000 - 0x7FFFF):

Calibration SymbolHex Address (Full / Partial)Matrix SizePhysical Scaling FormulaEngineering Function
ip_iga_ron_98_pl__n__maf0x70480 / 0x048016 \times 12\text{deg} = (\text{Raw} \times 0.375) - 24.0Main Ignition Timing (98 RON / Part Load)
ip_iga_ron_91_pl__n__maf0x70600 / 0x060016 \times 12\text{deg} = (\text{Raw} \times 0.375) - 24.0Knock Fallback Ignition (91 RON / Part Load)
ip_ti_tco_1_pl_ivvt__n__maf0x71200 / 0x120016 \times 12\text{ms} = \text{Raw} \times 0.005333Main Base Injection Time (Continuous IVVT)
ip_cam_sp_in_pl__n__maf0x72100 / 0x210016 \times 12\text{deg KW} = (\text{Raw} \times 0.375) + 80.0Intake VANOS Target Angle Matrix
ip_cam_sp_ex_pl__n__maf0x72280 / 0x228016 \times 12\text{deg KW} = (\text{Raw} \times 0.375) - 105.0Exhaust VANOS Target Angle Matrix
id_maf_tab__v_maf0x73800 / 0x3800256 \times 1\text{kg/h} = \text{Raw} \times 0.25Bosch HFM5 5V Airflow Voltage Transfer Curve
c_conf_cat0x70014 / 0x00141 \times 1Byte: 0=Catless, 1=EU2, 2=EU4Exhaust Catalyst Diagnostics Configuration
c_conf_sap0x70015 / 0x00151 \times 1Byte: 0=Disabled, 1=EnabledSecondary Air Pump (SAP) Emission Routine
c_n_max0x70180 / 0x01801 \times 1\text{RPM} = \text{Raw} \times 32.0Engine Speed Hard Limiter (6500\text{ stock})

7.3 Catalyst Overheating Prevention (COP) Systems#

To protect the ceramic catalytic converter monoliths from thermal degradation during prolonged high-speed autobahn driving, MS43 embeds autonomous thermal safety models:

  • When calculated exhaust temperature exceeds 920^\circ\text{C}, the DME triggers COP Enrichment via ip_ti_cop_nr_*__n__maf (adding up to 25\% extra fuel to evaporatively cool exhaust valves).
  • Simultaneously, ignition advance is pulled using ip_iga_ron_91_pl_ivvt__n__maf.
  • In motorsport or catless configurations, calibrators zero out ip_ti_cop_nr_* to eliminate sudden, unpredictable rich AFR swings (<11.5\text{ AFR}) at wide-open throttle.

7.4 MS43X Custom Firmware Architecture#

Developed by the open-source community, MS43X replaces the factory ASW operating system at 0x10000 - 0x6FFFF while preserving the standard calibration block layout:

  • Load Limit Extension: Stock MS43 hard-caps engine load at 1389\text{ mg/stroke} (suitable for naturally aspirated up to 300\text{ hp}). MS43X doubles the internal accumulator variables to 2778\text{ mg/stroke}, supporting turbocharged builds exceeding 700\text{ hp}.
  • Speed-Density / VE Modeling: Enables true MAF-less tuning using a GM or Bosch 3-bar or 4-bar MAP sensor connected to the spare rear O2 sensor ADC input (pin X60003 pin 18).
  • Closed-Loop Boost PID: Utilizes the charcoal canister purge solenoid driver (pin X60004 pin 22) as a high-frequency PWM driver for a MAC 3-port boost control solenoid.
  • Flex Fuel Ethanol Sensor: Direct frequency decoding (50\dots 150\text{ Hz} = 0\dots 100\%\text{ Ethanol}) on the transmission speed sensor input pin.