BMW does not use B-codes for its restraint system. The airbag module keeps its faults as hex numbers, and the ones that matter sit in one block running from 0x930901 upward. Read that block in order and the layout follows easily.
BMW has used two names for the airbag computer. Older cars carry the MRS, Multiple Restraint System, in versions MRS3 through MRS5, and BMW's module list ties MRS4 to the E39, E46, E53 and early Mini. Newer cars carry the ACSM, Advanced Crash Safety Management, from ACSM2 on the E70 and E93 through ACSM3 on the F01, F02, F07, F10, F11 and F18, then ACSM4 and ACSM5.
The module mounts low and centered on the transmission tunnel under the console. It is orientation-sensitive, because its own acceleration sensors sit inside the housing. Chassis notes are on our BMW airbag service page.
Inside the firing-circuit block every device gets five consecutive entries in one fixed order: short to ground, short to positive, resistance too low, resistance too high, lines coupled together. The driver airbag first stage is 0x930901 through 0x930905 and the second stage picks up at 0x930907, so an unfamiliar number is usually readable from its neighbours.
The device order shows how much restraint hardware BMW fits:
Then come the entries that survive a repair. 0x930AB6 is crash message stored and 0x930AB7 is maximum number stored, with matching entries at 0x930ACB for pedestrian protection and 0x930C18 for the high-voltage shutdown. Those are the module's record of what happened rather than a fault out in the car, and a module-level crash data reset clears them.
Codes with a link have their own page. Crash data clears with a module reset; hardware and circuit faults need the part fixed or replaced first.
| Code | Meaning | Type |
|---|---|---|
| 0X930901 | Driver airbag stage 1: short to ground. | Circuit fault |
| 0X930902 | Driver airbag stage 1: short to positive. | Circuit fault |
| 0X930904 | Driver airbag stage 1: resistance too high, typically an open or a loose connector. | Circuit fault |
| 0X930905 | Driver airbag stage 1: lines coupled together. | Circuit fault |
| 0X930907 | Driver airbag stage 2: short to ground. | Circuit fault |
| 0X93090D | Driver airbag vent valve: short to ground, the adaptive vent on a staged airbag. | Circuit fault |
| 0X930913 | Passenger airbag stage 1: short to ground. | Circuit fault |
| 0X930925 | Driver belt tensioner: short to ground. | Circuit fault |
| 0X93092B | Driver end fitting tensioner: short to ground, the anchor-side tensioner. | Circuit fault |
| 0X930931 | Driver belt force limiter: short to ground. | Circuit fault |
| 0X930937 | Passenger belt tensioner: short to ground. | Circuit fault |
| 0X930949 | Driver knee airbag: short to ground. | Circuit fault |
| 0X930955 | Driver active head restraint: short to ground. | Circuit fault |
| 0X930961 | Rear left belt tensioner: short to ground. | Circuit fault |
| 0X930979 | Driver side airbag: short to ground. | Circuit fault |
| 0X930985 | Left head airbag: short to ground, the roof-rail curtain. | Circuit fault |
| 0X930991 | Safety battery terminal: short to ground. The pyrotechnic battery disconnect. | Circuit fault |
| 0X9309A9 | Pedestrian protection system front left: short to ground. | Circuit fault |
| 0X9309C4 | Driver belt buckle contact: open circuit. | Circuit fault |
| 0X9309E8 | Driver seat position sensor: open circuit. | Circuit fault |
| 0X9309FB | Upfront airbag front sensor left: short to positive or open circuit. | Circuit fault |
| 0X930A07 | ODS seat occupancy mat, passenger: signal invalid. | Hardware fault |
| 0X930A0A | Airbag sensor B-pillar right, x and y direction: short to positive or open circuit. | Circuit fault |
| 0X930A0B | Airbag sensor front left door: short to positive or open circuit. | Circuit fault |
| 0X930A14 | ODS seat occupancy mat, passenger: communication fault. | Circuit fault |
| 0X930A1C | ODS seat occupancy mat, passenger: sensor fault caused by moisture. | Hardware fault |
| 0X930AB6 | Crash message stored. The module's own record of a crash event. | Crash data |
| 0X930AB7 | Maximum number of crash messages stored. | Crash data |
| 0X930C1F | At least one unexpected firing circuit detected. | Crash data |
| 0X481716 | Reversible belt tensioner left: maximum number of tensionings reached. | Hardware fault |
| 93B2 | ACSM internal fault. | other |
| 930B | Battery safety terminal fault. | other |
| 93C1 | Passenger seat occupancy. | other |
| 9C8A | Crash input recorded. | crash |
| 93E2 | Pretensioner circuit. | Circuit fault |
| A0C5 | Deployment loop fault. | crash |
No generic OBD2 reader touches this module. BMW's restraint controllers answer over UDS through BMW-specific software, ISTA or the older INPA and Rheingold. There is also a job that locks the fault memory, which is why a module can hold entries a normal read will not show.
Coding is not optional on a replacement. The module keeps its own coding faults: 0x020108 is control unit is not coded, 0x02010B is coding data does not match the vehicle. A module moved from another car sets those until it is coded to the car it is in now. Components are the same, with 0x930A16 reading that the seat occupancy mat is a spare part and coding is necessary.
The seat occupancy mat is the most common BMW restraint complaint and BMW's own fault list shows why. The mat gets its own block: invalid signal, sensor short, sensor open, communication fault, data memory full, implausible readings, implausible heater wire readings, an impermissible mat swap between seats, and one entry specifically for a sensor fault caused by moisture. A mat sat on for a decade with drinks spilled on it eventually sets one, presenting as an airbag light with the passenger airbag off.
BMW also logs its reversible belt tensioners separately. 0x481700 and 0x481900 are internal faults for the left and right units, and 0x481716 says the left has reached its maximum number of tensionings. Those are motorised pre-crash tensioners, and they wear on a count.
BMW's restraint module is not on the generic OBD2 path and does not report in the B-code format most scanners speak. Its faults are hex entries read through BMW software such as ISTA, or the older INPA and Rheingold. A tool that shows engine codes and nothing for the airbag light cannot reach that module.
It depends on age. BMW used the MRS on older chassis, with MRS4 covering the E39, E46, E53 and early Mini. The ACSM starts with ACSM2 on the E70 and E93, runs as ACSM3 across the F01, F10 and F11 generation, then continues as ACSM4 and ACSM5.
0x930AB6, crash message stored, with 0x930AB7 for the maximum number stored. There are matching entries for pedestrian protection at 0x930ACB and the high-voltage shutdown at 0x930C18. These are stored records rather than live circuit faults, so they stay put after the physical repairs.
Look at the seat occupancy mat first. BMW's fault list gives it a block covering invalid signal, sensor short, sensor open, communication faults, implausible readings, and one entry for a sensor fault caused by moisture. Spills and years of use are the usual cause.
Not without coding it. The module logs 0x020108 when it is not coded and 0x02010B when the coding data does not match the vehicle, so an uncoded transplant announces itself. Components are the same: 0x930A16 says the seat occupancy mat is a spare part and coding is necessary.
Keep reading:
Crash data clears with a reset of your own module. A hardware fault needs the part. Either way, call and we will confirm.
Genuine OEM, tested, and shipped ground from Jacksonville, Arkansas.
BMW parts and codes · Do not see it listed? Request a part or call 501-988-0611.