The BMW EWS Individual Serial Number (ISN) Architecture
While the engine calibration maps reside in parallel Flash ROM (29F400 / 29F800), critical vehicle identity, immobilizer cryptographic keys, variant coding, and adaptive trim wear parameters reside in non-volatile serial EEPROM:
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ BMW DME SERIAL EEPROM HARDWARE CHIP ARCHITECTURE │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. Microchip / ST 93C86 (2048 Bytes / 16-bit Microwire SPI): │
│ • Utilized on: Siemens MS42, MS43, MSS54, and Bosch ME7.2 │
│ • Physical Package: 8-Pin SOIC mounted adjacent to main C167CR microcontroller │
│ │
│ 2. STMicroelectronics 95080 / 95160 (1024 / 2048 Bytes / High-Speed SPI): │
│ • Utilized on: Siemens MS45.0, MS45.1, and Bosch ME9.2 │
│ │
│ 3. Embedded Data Flash / Emulated EEPROM in TriCore TC1796 (DFLASH 64 KB): │
│ • Utilized on: Siemens MSD80, MSD81, and Bosch EDC17 / MEVD17 │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
16.1 The BMW EWS Individual Serial Number (ISN) Architecture#
The Elektronische Wegfahrsperre (EWS) anti-theft system validates engine start through cryptographic challenge-response handshakes between the EWS module (or CAS / Car Access System) and the DME:
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ BMW ISN IMMOBILIZER GENERATIONAL EVOLUTION │
├───────────────────────────────────┬───────────────────┬───────────────────┬──────────────────────┤
│ DME Generation & Model │ ISN Format │ EEPROM Offset │ Security Mechanism │
├───────────────────────────────────┼───────────────────┼───────────────────┼──────────────────────┤
│ Bosch M3.3.1 (E36 325i) │ 2-Byte Short Hex │ 0x002C - 0x002D │ EWS-II Fixed Code │
│ Siemens MS41 (E36 328i) │ 2-Byte Short Hex │ 0x0034 - 0x0035 │ EWS-II Fixed Code │
│ Siemens MS42 (E46 328i) │ 2-Byte Short Hex │ 0x00C4 - 0x00C5 │ EWS-3.2 Rolling Code │
│ Siemens MS43 (E46 330i) │ 2-Byte Short Hex │ 0x00C4 - 0x00C5 │ EWS-3.3 Rolling Code │
│ Siemens MS45.0 / MS45.1 │ 16-Byte Crypt Key │ 0x0280 - 0x028F │ EWS-3+ / CAS2 Rolling│
│ Siemens MSS54 / MSS54HP (E46 M3) │ 2-Byte + Rolling │ 0x0120 - 0x0121 │ EWS-3.3 Rolling Code │
│ Siemens MSD80 / MSD81 (N54) │ 16-Byte / 32-Byte │ TC1796 DFLASH │ CAS3+ 128-bit AES │
│ Bosch MEVD17 / MG1 (N55/B58) │ 32-Byte Secret Key│ HSM Protected │ CAS4 / FEM / BDC AES │
└───────────────────────────────────┴───────────────────┴───────────────────┴──────────────────────┘
16.2 DME "Virginizing" & Synchronization Procedures#
When replacing a damaged DME with a used donor unit, the donor DME rejects startup because its internal rolling code counter differs from the vehicle's EWS module:
- Virginizing (Setting Virgin State): In the 93C86 EEPROM (MS42/MS43), the 16 bytes representing the EWS rolling code table (located at
0x00D0to0x00DF) are overwritten with0xFF. - First Key-On Cycle: Upon powering the DME in the vehicle, the DME detects the uninitialized
0xFFstate, initiates a pairing handshake with the EWS3 module, reads the vehicle’s master rolling code base, and locks the key into EEPROM permanently. - INPA / Tool32 Synchronization: Running standard EDIABAS job
MS430.PRG -> ews3_abgleichre-aligns the seed table across both modules within 3 seconds.