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 Type | Memory Section | Monitoring Address | Calculation Boundary | Notes |
|---|---|---|---|---|
| 32-bit Addition | Program ASW | 0x6FDAE | 0x10000 - 0x6FDAD | Additive sum of 32-bit DWORDS |
| 32-bit Addition | Calibration | 0x72FFC | 0x70000 - 0x72FFB | Additive sum of 32-bit DWORDS |
| CRC16 (CCITT) | Bootloader | 0x03C24 | 0x00000 - 0x03C23 | Polynomial: 0x1021, Init: 0xFFFF |
| CRC16 (CCITT) | Program ASW | 0x6FDE0 | 0x10000 - 0x6FDDF | Polynomial: 0x1021, Init: 0xFFFF |
| CRC16 (CCITT) | Calibration | 0x73FE0 | 0x70000 - 0x73FDF | Polynomial: 0x1021, Init: 0xFFFF |
Development Checksum Bypass Sequence#
To run modified binaries during bench calibration without recalculating CRCs:
- Set the 16-bit word at
0x73FFEto0xFFFF. - Set the configuration byte at
0x6FFB0to0xA8. - In firmware
MS430069, modify the instruction byte at0x5FEB3from0x84to0x94.
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 Symbol | Hex Address (Full / Partial) | Matrix Size | Physical Scaling Formula | Engineering Function |
|---|---|---|---|---|
ip_iga_ron_98_pl__n__maf | 0x70480 / 0x0480 | 16 \times 12 | \text{deg} = (\text{Raw} \times 0.375) - 24.0 | Main Ignition Timing (98 RON / Part Load) |
ip_iga_ron_91_pl__n__maf | 0x70600 / 0x0600 | 16 \times 12 | \text{deg} = (\text{Raw} \times 0.375) - 24.0 | Knock Fallback Ignition (91 RON / Part Load) |
ip_ti_tco_1_pl_ivvt__n__maf | 0x71200 / 0x1200 | 16 \times 12 | \text{ms} = \text{Raw} \times 0.005333 | Main Base Injection Time (Continuous IVVT) |
ip_cam_sp_in_pl__n__maf | 0x72100 / 0x2100 | 16 \times 12 | \text{deg KW} = (\text{Raw} \times 0.375) + 80.0 | Intake VANOS Target Angle Matrix |
ip_cam_sp_ex_pl__n__maf | 0x72280 / 0x2280 | 16 \times 12 | \text{deg KW} = (\text{Raw} \times 0.375) - 105.0 | Exhaust VANOS Target Angle Matrix |
id_maf_tab__v_maf | 0x73800 / 0x3800 | 256 \times 1 | \text{kg/h} = \text{Raw} \times 0.25 | Bosch HFM5 5V Airflow Voltage Transfer Curve |
c_conf_cat | 0x70014 / 0x0014 | 1 \times 1 | Byte: 0=Catless, 1=EU2, 2=EU4 | Exhaust Catalyst Diagnostics Configuration |
c_conf_sap | 0x70015 / 0x0015 | 1 \times 1 | Byte: 0=Disabled, 1=Enabled | Secondary Air Pump (SAP) Emission Routine |
c_n_max | 0x70180 / 0x0180 | 1 \times 1 | \text{RPM} = \text{Raw} \times 32.0 | Engine 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.