The MS42 Hybrid Throttle System (MDK - Motor-Drosselklappe)
Debuting in 1998 on the E46 (323i, 328i) and E39 (523i, 528i) powered by the M52TUB25 and M52TUB28, the Siemens DME MS42 was BMW’s first mass-production controller to support continuous Double-VANOS camshaft phasing:
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ SIEMENS DME MS42 HARDWARE & MEMORY TOPOGRAPHY (512 KB) │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ • Microcontroller: Siemens/Infineon C167CR-SR (16-bit RISC @ 20 MHz, 5V CMOS) │
│ • Flash Memory: AMD AM29F400BB (512 KB / 4 Megabit Parallel Flash, 44-pin PSOP) │
│ • BASEOFFSET: 0x48000 (32 KB Calibration Block spans 0x48000 to 0x4FFFF) │
│ • Throttle Mechanism: HYBRID Hybrid-Cable / MDK (Cable linkage with internal electric servo) │
│ • Primary Reference A2L: 0110C6.a2l / Siemens_MS42_0110C6_ENG_512K_v1.1.xdf │
│ │
│ Linear Flash Memory Layout: │
│ 0x00000 - 0x03FFF (16 KB) ──► Boot Sector & C167 Reset Vectors (OTP Protected) │
│ 0x04000 - 0x47FFF (272 KB) ─► Operating System ASW Code (Main execution loops) │
│ 0x48000 - 0x4FFFF (32 KB) ──► CALIBRATION DATA (100% of MS42 Maps & Curves) ★ BASEOFFSET │
│ 0x50000 - 0x7FFFF (192 KB) ─► Extended Diagnostic Code, KWP Routines & Program Space │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
6.1 The MS42 Hybrid Throttle System (MDK - Motor-Drosselklappe)#
The MS42 occupies a unique evolutionary bridge between mechanical Bowden cables and drive-by-wire:
- Mechanical Operation: A traditional steel Bowden cable runs from the accelerator pedal to an external throttle cam on the MDK throttle body. Under normal cruising, the driver directly rotates the throttle plate.
- Electric Servo Intervention: An internal DC electric servo motor is splined to the same throttle shaft through a lost-motion spring clutch. The DME can:
- Dual Potentiometer Feedback: Two independent potentiometer tracks monitor throttle position:
- Limp-Home Failsafe: If the sum V_{\text{Pot1}} + V_{\text{Pot2}} \neq 5.0\text{V} \pm 0.25\text{V}, the DME cuts servo power, illuminates the EML lamp, drops into mechanical failsafe (limited to 20\% throttle opening via mechanical spring stops), and limits engine speed to 3500\text{ rpm} via fuel cut.
6.2 Primary Calibration Tables (MS42 0110C6 Standard)#
Within the 32 KB calibration sector (0x48000 - 0x4FFFF), all table addresses are indexed relative to BASEOFFSET = 0x48000:
| Table Identifier | Description | Dimensions | X-Axis | Y-Axis | Physical Conversion Formula |
|---|---|---|---|---|---|
ip_ti_b1__n__maf | Base Injection Duration Bank 1 | 16 \times 12 | RPM (600\dots 6500) | Load (0.05\dots 0.95) | \text{Time (ms)} = \text{Raw} \times 0.005333 |
ip_ti_b2__n__maf | Base Injection Duration Bank 2 | 16 \times 12 | RPM (600\dots 6500) | Load (0.05\dots 0.95) | \text{Time (ms)} = \text{Raw} \times 0.005333 |
ip_iga_ron_98_b1 | Ignition Timing 98 RON (Premium) | 16 \times 12 | RPM (600\dots 6500) | Load (0.05\dots 0.95) | \text{Angle (}^\circ\text{BTDC)} = \text{Raw} \times 0.375 - 24.0 |
ip_iga_ron_91_b1 | Ignition Timing 91 RON (Regular) | 16 \times 12 | RPM (600\dots 6500) | Load (0.05\dots 0.95) | \text{Angle (}^\circ\text{BTDC)} = \text{Raw} \times 0.375 - 24.0 |
ip_cam_sp_in_pl | Intake Camshaft Setpoint (VANOS) | 16 \times 12 | RPM (700\dots 6500) | Load (0.08\dots 0.90) | \text{Cam Angle (}^\circ\text{KW)} = \text{Raw} \times 0.375 + 80.0 |
ip_cam_sp_ex_pl | Exhaust Camshaft Setpoint (VANOS) | 16 \times 12 | RPM (700\dots 6500) | Load (0.08\dots 0.90) | \text{Cam Angle (}^\circ\text{KW)} = \text{Raw} \times 0.375 - 105.0 |
id_maf_tab | Bosch HFM5 MAF Linearization Curve | 256 \times 1 | ADC Voltage (0\dots 5\text{V}) | Single Axis | \text{Airflow (kg/h)} = \text{Raw} \times 0.25 |
c_n_max | Maximum Engine Speed Limiter | 1 \times 1 | Constant | N/A | \text{RPM} = \text{Raw} \times 32.0 |
6.3 MS42 Community Patchlist v1.7.1 Specifications#
The community patchlist applies 17 targeted binary modifications to the MS42 0110C6 ASW code:
- EWS Immobilizer Delete: Sets configuration constant
c_conf_ews = 0and rewrites the seed-key response routine at0x047A2to unconditionally branch to the authorized-start interrupt. - Checksum Verification Bypass: Modifies program instructions at
0x081A4with0x0D00(NOPs) to prevent flash verification fault lockouts. - 2048 kg/h MAF Rescaling Patch: Doubles the internal 16-bit accumulation buffer for air mass calculations, preventing fuel load clipping on supercharged or turbocharged M52TU builds.
- Launch Control & Rolling Antilag: Evaluates clutch switch status (X60004 pin 23) and vehicle speed (CAN frame
0x153). When vehicle speed < 5\text{ km/h} and clutch is depressed, a secondary rev limiter (c_n_max_lc) activates, retarding ignition timing to -10^\circ\text{ ATDC} to build manifold boost pressure at a standstill.