
Yes, absolutely. A E46 can have numerous diagnostic trouble codes (DTCs) stored in its various control modules without illuminating the Check Engine Light (CEL), also known as the Malfunction Indicator Lamp (MIL). The CEL is primarily tied to the powertrain control module (DME) and only lights for emissions-related faults. However, your E46 has over a dozen other computers managing everything from the airbags to the radio, and these systems can log codes independently.
The key is understanding that the CEL is not a catch-all warning light. It's specifically mandated to alert you to issues that affect the vehicle's emissions output. For instance, a fault in the body control module for a power window motor, a code in the airbag module (SRS) from a minor sensor glitch, or a communication error in the instrument cluster will all store codes without ever triggering the CEL. These are often referred to as "shadow codes" or "pending codes" that the car's computer notes for technician diagnosis but doesn't deem severe enough to warrant a dashboard warning.
To accurately check for all codes, you need an OBD-II scanner capable of reading BMW-specific codes from all modules, not just generic powertrain codes. A basic code reader from an auto parts store will often miss these hidden faults.
| Module | Example System | Potential Code Without CEL |
|---|---|---|
| DME (Engine) | Fuel Trim | P0171 - System Too Lean (Bank 1) |
| ABS/DSC | Wheel Speed Sensor | 5E20 - Rear Right Wheel Speed Sensor |
| Airbag (SRS) | Seat Occupancy Sensor | 9C - Seat Occupancy Mat Fault |
| Automatic Transmission (EGS) | Solenoid Valve | 49 - Gear Monitoring |
| Body (GM5) | Central Locking | 69 - Door Lock Mechanism |
| Climate (IHKA) | Blower Motor | 109 - Final Stage Blower Motor Resistor |
| Instrument Cluster (IKE) | Light Monitoring | 138 - License Plate Light Failure |
If you suspect an issue—like an intermittent electrical gremlin, a strange transmission shift, or an airbag light that comes and goes—a full system scan is the first and most critical step in diagnosis.

Oh, for sure. That car is a computer on wheels. The check engine light is just for the engine stuff that the government cares about (emissions). But the stereo, the windows, the airbags—they all have their own little brains. Those brains can throw a code if something's slightly off, but they won't bother turning on the big orange light on the dash. You'd never know unless you hooked up a proper scanner.

Think of it like a house with many appliances. The CEL is a major alarm for the furnace. But a flickering lightbulb, a faulty garage door sensor, or a problem with the system don't set off the furnace alarm. Similarly, an E46 has separate control units for the ABS brakes, air conditioning, and airbags. A fault in any of these will log a code specific to that system. A basic OBD-II scan won't find them; you need a scanner that can talk to each individual module to get the full picture.

From a diagnostic standpoint, the E46's means non-CEL codes are common. The most frequent culprits are the body module for power accessory issues and the transmission control module for shift adaptation faults. These codes are often "pending," meaning the module has detected a fault but is waiting to see if it recurs before taking action like illuminating a warning light. This is a primary reason why a sophisticated diagnostic tool is essential for accurate troubleshooting on these vehicles.

My E46 M3 was running perfectly, no lights on the dash at all. But I took it in for a pre-track day inspection, and the shop found a stored code in the DSC module for a slightly erratic wheel speed sensor. It hadn't happened enough to trigger the light, but it was there in the history. It explains a tiny bit of hesitation I felt under hard braking once. It's crazy what these cars remember. Always get a full scan before you assume everything is 100%.


