Go-Parts
Cart 0
Your cart is empty
Add an item to see it appear here.
Wrenchy
Go-Parts Garage
Expert guides for diagnosing, troubleshooting, and replacing auto parts Expert guides for diagnosing and replacing auto parts
Browse All Articles →
🧭 Diagnostic Flowchart 🎬 Helpful Videos 🛍️ Shop This Part

P1604 on 2005-2013 BMW 3 Series: Internal DME/ECU Failure Causes and Fixes

On a 2005-2013 BMW 3 Series, P1604 means there is an internal failure within the engine control unit (DME). This is not a generic starting problem. The most common fix is to repair the DME by replacing internal components like MOSFETs, or replacing the entire DME, which requires professional programming. This is often caused by a failing external component like an ignition coil or fuel injector.

22 minutes to read 2005-2013 BMW 3 Series
Most Likely Cause
Failed MOSFETs in the DME
Difficulty
5/5
Est. Time
3.5 hrs
DIY Doable?
🔧 Shop
Shop Labor
$350 – $2500
Parts Price
$50 – $1800
🚫 Do not drive — The vehicle will likely not start, or if it does, it may run on only three cylinders (limp mode), stall unexpectedly, or have no throttle response, making it unsafe to drive.
Key Takeaways
  • P1604 on a BMW is a critical code indicating an internal failure of the engine computer (DME).
  • On the E9x 3-Series, especially the 335i with the N54 engine, this is commonly caused by a failed ignition coil or fuel injector destroying a MOSFET driver inside the Siemens MSD80 DME.
  • Water damage from clogged cowl drains is another frequent cause of DME failure on this platform.
  • Repair almost always involves either specialist micro-soldering on the DME board or a complete, programmed replacement of the unit. Simply replacing a fuse will not fix it.
  • The root cause (e.g., the bad coil/injector) must be fixed, or the repaired/new DME will fail again immediately.
For a BMW, the P1604 trouble code translates to "Internal Control Module Driver Error" or "Control Module Self-Test, Speed Monitoring". This is a specific fault indicating that the Digital Motor Electronics (DME), which is BMW's term for the Engine Control Unit (ECU), has detected an internal malfunction during a self-test. It does not mean "Startability Malfunction" as it does on many other vehicle brands like Toyota. The error points directly to a problem within the DME itself, often related to the driver circuits for fuel injectors or ignition coils. On N54-powered models, this can manifest as codes 30BA or 30BB, which specifically indicate a DME internal failure related to the injector drivers.

What's Unique About the 2005-2013 BMW 3 Series

The E9x generation 3 Series, particularly models with the N54 engine (like the 335i), is known for DME failures related to its ignition and injection systems. The Siemens MSD80 DME used in early N54 models is especially vulnerable. A common scenario is a failing ignition coil or fuel injector shorting out, which in turn damages the corresponding driver circuit (specifically a MOSFET transistor) inside the DME. This creates a chain reaction where a relatively minor external component failure leads to a critical internal ECU fault, setting the P1604 and often a 30BA/30BB code. Water intrusion into the DME housing, often due to clogged cowl drains, is also a known vulnerability on this platform that can corrode the circuit board and pins.

Generation note: The 2005-2013 range primarily covers the E90, E91, E92, and E93 generation (often collectively called E9x). However, the next generation, the F30 sedan, was introduced in 2012. While the DME architecture differs (e.g., N55 engines use MEVD172), an internal control module fault remains a critical issue for both generations. The specific failure mode of MOSFETs is most famous on the Siemens MSD80 DME in 2007-2010 N54 models. Later N54s received the more robust MSD81, and N52 engines used the MSV70 or MSV80, which can also fail but have different common failure points.

Professional service recommended: Fixing this code involves either micro-soldering on the DME circuit board or replacing and programming the entire control unit, which requires specialized tools and software like ISTA/P. Cloning a used DME is possible but also requires expert-level tools.
🎬 Learn how to clone an MSD80 to a robust MSD81

Symptoms You May Notice

  • Engine cranks but does not start
  • Complete loss of throttle response (car starts but won't accelerate)
  • Engine starts and immediately stalls
  • Engine runs very rough, as if on half its cylinders (limp mode)
  • Multiple, seemingly unrelated fault codes appearing at once
  • Check engine light is on (may be flashing)
  • Inability to communicate with the DME using a scan tool
  • Cooling fan running at maximum speed immediately after startup attempt
  • Wipers or other electronics acting erratically on startup attempt
⚠️ Don't Waste Money on the Wrong Fix
  • Replacing the battery or fuel pump. While these can cause a no-start, P1604 on a BMW specifically points to an internal DME fault, not a general 'startability' issue as on other car brands.

Most Likely Causes

  1. Failed MOSFETs in the DME 🔴 High Probability The Siemens MSD80 DME in N54-powered 335i models is particularly susceptible. Voltage spikes from failing external components like fuel injectors or ignition coils can short the internal MOSFETs that control them.
    How to confirm: This requires removing the DME, opening it, and testing the individual MOSFETs 🎬 Watch: How to test and replace failed DME MOSFETs on the circuit board with a multimeter in continuity or diode mode. Often accompanied by codes 30BA or 30BB. This is a task for an electronics specialist.
    Typical fix: De-solder and replace the failed MOSFETs on the DME board. A common upgraded replacement part is the FDB14N30TM. The external component (e.g., bad ignition coil or injector) that caused the failure must also be replaced to prevent a repeat failure.
    Est. part cost: $5-$30 for a set of MOSFETs, plus the cost of the failed external part (e.g., $50-$100 for an ignition coil).
  2. Water Intrusion into DME Housing 🟡 Medium Probability The DME is located in a plastic electronics box in the engine bay. Clogged cowl drains or a degraded cover seal can allow water to leak in, corroding the DME board and connectors.
    How to confirm: Open the electronics box and visually inspect the DME, its connectors, and the bottom of the box for any signs of moisture, white/green corrosion, or a water line.
    Typical fix: If corrosion is minor, cleaning the board and pins with electronics cleaner may work. If the damage is severe, the DME will need to be sent for professional repair or be replaced. The source of the water leak (e.g., clogged drains) must be fixed.
    Est. part cost: $10 for cleaner, or $300-$1500 for DME repair/replacement.
  3. Internal DME Component Failure ⚪ Low Probability Electronic components can fail over time due to heat cycles, vibration, and age. The DME is located in the hot engine bay, which accelerates this process.
    How to confirm: This is diagnosed by exclusion. If power and ground to the DME are good (checked at the main relay and fuses), there are no external shorts, and no signs of water damage, the unit itself is condemned.
    Typical fix: The DME must be sent to a specialist for repair or be replaced entirely and programmed to the car.
    Est. part cost: $300-$800 for a repair service, or $1000-$2000 for a new, programmed DME.

Rare But Worth Checking

  • Power or Ground Supply Issue to DME: Always check the basics first. A blown fuse in the E-box or a faulty main DME relay (often a light blue color) can mimic a complete DME failure and is much cheaper to fix. A corroded main engine ground strap is also a known cause of erratic electrical issues.
  • Failed DME Programming/Coding: If the error appeared immediately after a software flash or update, the programming may have failed, corrupting the DME's software. This can sometimes be fixed by re-flashing with appropriate tools like ISTA/P, but can also permanently brick the module.

Diagnosis Steps

  1. Scan for all fault codes in all modules. Pay close attention to codes like 30BA or 30BB, which are a smoking gun for MOSFET failure in N54 models.
  2. Check for communication with the DME. If the scan tool cannot connect, this strongly suggests a major DME power issue (check main relay/fuses) or a catastrophic internal failure.
  3. Inspect the main power and ground connections to the DME. In the engine bay E-box, check the large fuses and the main DME relay (typically blue). Check the main engine-to-chassis ground strap for corrosion or looseness.
  4. Open the electronics box in the engine bay and inspect the DME and its wiring harness for any signs of water intrusion, corrosion, or physical damage. Check if the cowl drains above the box 🎬 See how to find and fix common DME water leaks are clogged with leaves or debris.
  5. If codes 30BA/30BB are present, the next step is to remove the DME for bench testing of the injector driver MOSFETs. This is a specialized task.
  6. Crucially, if a failed MOSFET is found, the corresponding external part (ignition coil, injector) MUST be identified and replaced along with the DME repair to prevent immediate repeat failure. Many technicians recommend replacing all six coils or injectors as a precaution.

Parts You'll Likely Need

  • Digital Motor Electronics (DME) (OEM #12147594484 (Example for N52 MSV80), 12147583332 (Example for N54 MSD80)) — This code indicates an internal failure of this module. It will either need to be repaired or replaced.
    Trusted brands: Siemens (MSD80/MSV80), Bosch
    OEM price range: $1200-$2000
    Aftermarket price range: $250-$800 (for repair/cloning service)
  • Ignition Coil (OEM #12138657273 (Bosch)) — A failing ignition coil is a common cause of the DME failure, as it can short and damage the internal driver circuit. It's wise to replace all coils if one has caused this issue.
    Trusted brands: Bosch, Delphi, Eldor
    OEM price range: $60-$90 per coil
    Aftermarket price range: $30-$50 per coil
  • Fuel Injector (Index 12) (OEM #13538616079) — Similar to the ignition coil, a shorted fuel injector on N54 engines can damage the DME's internal circuitry. Index 12 is the latest, most reliable version.
    Trusted brands: Bosch/BMW
    OEM price range: $200-$350 per injector
    Aftermarket price range: $150-$250 per injector
  • MOSFET Transistor (OEM #FDB14N30TM) — For DIY or specialist repair of the DME board, these specific transistors are needed to replace the burned-out injector/ignition drivers.
    Trusted brands: onsemi
    OEM price range: N/A
    Aftermarket price range: $2-$5 per unit

Related Codes That Often Appear With This One

  • 30BA, 30BB — These are BMW-specific codes for 'DME digital motor electronics, internal failure' or 'Injectors 1, 2, 3 (or 4, 5, 6) or ignition, internal fault'. They directly point to the MOSFET failure on MSD80 DMEs.
  • 29CC, 29CD, 29CE, etc. — Codes for misfires on specific cylinders often accompany P1604, as a failing coil or injector can be the root cause of the DME damage.
  • A0B4 (CAS Engine Start Malfunction) — Communication errors with the CAS (Car Access System) are common when the DME is failing, not communicating, or has an internal sync issue.

Technical Service Bulletins (TSBs) & Recalls

  • SI B12 09 12: While not for P1604 directly, this TSB addresses an issue on N55 engines where the engine may stall or idle erratically during low-speed maneuvers. The fix is a DME software update, highlighting that DME software can be a source of drivability problems and that updates are sometimes required.

Platform-Specific Known Issues

  • Real-World Failure: 30BA Code after Track Day: A user on e90post.com reported their 2007 335i went into limp mode and stalled after a track session. The JB4 tuner read fault code 30BA, indicating a DME diode failure for injectors 1, 2, and 3. The owner planned to have their

Mechanic-Grade Diagnostic Values

  • N54 Ignition Coil Primary Resistance — expected: ~0.50 Ohms. Failure: A significant deviation from this value or an open circuit (infinite resistance) indicates a failed coil. It's best to compare all six coils; a single outlier is suspect.
  • MSD80 MOSFET Continuity Check — expected: Using a multimeter in continuity/diode mode, there should be NO continuity between the center leg (drain) and the outer legs (gate, source) of the MOSFET when the circuit is not powered.. Failure: If the multimeter beeps, indicating continuity between the center leg and an outer leg, the MOSFET has shorted internally and is bad.
  • DME Power Supply at Connector — expected: With the key on, specific pins on the main DME connectors (e.g., X60001, X60002) should show battery voltage (approx. 12.6V).. Failure: No voltage at the main power supply pins points to a problem upstream, such as the main DME relay, a fuse, or wiring, rather than an internal DME failure.

Hidden / Shadow Codes Worth Checking

  • 30BA: DME digital motor electronics, internal failure. This code specifically points to a fault in the driver circuits for injectors on Bank 1 (Cylinders 1-3 on a 6-cylinder engine). It is a 'smoking gun' for MOSFET failure in the MSD80 DME. (see via BMW-specific scan tools like ISTA, INPA, or advanced aftermarket scanners (e.g., Foxwell, Autel) and tuning platforms (e.g., MHD, JB4).)
  • 30BB: DME digital motor electronics, internal failure. This code specifically points to a fault in the driver circuits for injectors on Bank 2 (Cylinders 4-6 on a 6-cylinder engine). It is also a primary indicator of MOSFET failure in the MSD80 DME. (see via BMW-specific scan tools like ISTA, INPA, or advanced aftermarket scanners (e.g., Foxwell, Autel) and tuning platforms (e.g., MHD, JB4).)

Scan Tool Commands That Help

  • ISTA/P: Replace Control Unit (DME) — This service function is used when installing a NEW, virgin DME from BMW. It guides the technician through the process of programming the new module with the correct vehicle software and coding it with the vehicle order (VO) and immobilizer synchronization (ISN).
  • ISTA/P: DME Programming/Encoding — After a new DME is installed, it must be programmed with the latest software (I-Level) and encoded to match the car's features. ISTA/P handles this process, but it will not program a used DME that already has a VIN and ISN from another car.
  • Specialized Cloning Tools (e.g., KTAG, Autohex, CGDI): DME Cloning / ISN Read/Write — When using a second-hand DME, these tools are required to read the full software image (including the immobilizer data) from the original failed DME and write it to the replacement used DME. This makes the used DME a 'clone' of the original, allowing for a plug-and-play solution without needing dealer tools.

Wiring & Ground Locations

  • X6454 — A ground distribution stud on the passenger side of the engine bay, near the firewall and the electronics box (E-box).. This is a critical grounding point for the DME. According to wiring diagrams, multiple DME ground wires terminate here. Corrosion or a loose connection at this stud can cause a no-communication or no-power situation for the DME, mimicking an internal failure.
  • Main Engine Ground Strap — On the driver's side (LHD models), this braided copper strap connects from the engine block/motor mount area to the chassis frame rail.. This is the primary ground path for the entire engine. A corroded or broken strap can cause a host of severe electrical problems, including slow cranking, misfires, and erratic behavior from control modules like the DME, as they struggle to find a stable ground path.
  • DME Connectors (X60001 - X60007) — Located on the DME module itself, inside the white plastic electronics box (E-box) in the engine bay, typically on the passenger side near the firewall.. These are the direct interface to the DME. Checking for power, ground, and CAN bus signals at these connector pins is the final step before condemning the DME. Water intrusion often corrodes these specific pins.

Real Owner Repair Stories

  • Bimmerpost user (2007 BMW 335i (E92)) — Car experienced stuttering, misfire codes, and eventually a no-start condition with codes 30BB and P1604.
    ❌ Tried (didn't work) Initial diagnosis pointed towards injectors or coils, but the persistence of the 30BB code suggested a deeper issue.
    ✅ What actually fixed it The owner removed the MSD80 DME, opened it, and performed a continuity test on the six injector MOSFETs. The test revealed a shorted MOSFET for injector #5. The owner ordered replacement MOSFETs (FDB14N30TM) from an electronics supplier to de-solder the old ones and solder the new set in place, resolving the internal DME fault.
  • Bimmerpost user (2009 BMW 328xi (E90) N52) — Misfires in multiple cylinders, no throttle response, intermittent crank-no-start, and numerous fault codes. Water was found in the DME box.
    ❌ Tried (didn't work) Replacing all ignition coils and spark plugs., Replacing camshaft sensors., Cleaning VANOS solenoids and throttle body., Replacing crankshaft sensor.
    ✅ What actually fixed it The original DME had severe corrosion on the pins from water damage. The owner purchased a used DME (MSV80.1) from a junkyard and had it sent to a specialist service along with the original CAS module and key. The specialist cloned the original DME's information to the used one, making it plug-and-play. The car started and ran correctly after installing the cloned DME.

OEM Part Supersession History

  • Various (e.g., 12147583332)Various (e.g., 12147640174) — The Siemens MSD80 DME, used in early N54 models (approx. 2007-2008), was prone to MOSFET failure. BMW superseded it with the Siemens MSD81, which has more robust internal components.
    Heads up: While an MSD81 is a direct physical replacement for an MSD80, it is not plug-and-play. The vehicle's immobilizer system (CAS) must be synchronized with the new DME. A dealer can do this with a new MSD81 using ISTA/P. A used MSD81 requires specialized cloning tools to either transfer the original car's ISN to the used DME or clone the entire original DME.

Model Year Variations Within This Range

  • 2007 - Mid-2008 (N54 Engine): These models were typically equipped with the Siemens MSD80 DME, which is highly susceptible to the MOSFET failure that causes P1604 and 30BA/30BB codes.
  • Mid-2008 - 2010 (N54 Engine): These models received the upgraded Siemens MSD81 DME. While not immune to failure, it is significantly more robust and does not have the widespread MOSFET failure issue of the MSD80. An upgrade from a failed MSD80 to a used MSD81 is a common and recommended repair path.
  • 2006-2013 (N52 Engine): Non-turbo 3-series models (e.g., 325i, 328i, 330i) use the MSV70 or MSV80 DME. While P1604 can still occur on these DMEs, the common failure mode is not the N54's specific MOSFET burnout. Failures on these are more often related to general component aging, software corruption, or water damage.

Diagnostic Flowchart

Other Known Issues on This Vehicle

Issues unrelated to this code that are worth knowing about as an owner of this generation:

  • Electric Water Pump and Thermostat Failure 🔴 High — Very common, typically fails between 60,000 and 100,000 miles, often without warning.
  • Oil Filter Housing Gasket (OFHG) Leak 🔴 High — Extremely common on N52, N54, and N55 engines. If left unfixed, the leaking oil can drip onto the serpentine belt, causing it to slip off and get ingested by the front main seal, leading to catastrophic engine damage.
  • Valve Cover and Gasket Leak 🟠 Medium — Common issue due to the plastic valve cover warping from heat cycles and the gasket hardening over time.
  • N54 High-Pressure Fuel Pump (HPFP) Failure 🔴 High → Shop Fuel Pump — A notorious issue on early N54 engines (2007-2010), causing long cranks, limp mode, and stalling. It led to a recall and extended warranty. (Ref: NHTSA Campaign ID: 10V446000 (Recall) and extended warranty.)
  • N54 Turbo Wastegate Rattle 🟠 Medium — Very common on N54 engines. Wear in the wastegate actuator rod and linkage causes a metallic rattling sound, especially on deceleration. It doesn't typically cause turbo failure but is a significant annoyance.
  • N54 Fuel Injector Failure 🔴 High → Shop Fuel Injector — Piezoelectric injectors on N54 engines are prone to failure, leading to misfires, rough idle, and smoking. This was also subject to an extended warranty/recall program. Failing injectors are a primary cause of DME MOSFET failure. (Ref: Extended warranty program by BMW.)
  • N52 Hydraulic Valve Lifter (HVA) Ticking 🟡 Low — Common on earlier N52 engines, especially in cold weather or on short trips. A ticking noise develops from the valvetrain. BMW later released an updated cylinder head design to fix this. (Ref: SI B11 09 07)

Used vs. New Parts: Buying Guide for This Vehicle

When a used part is the smart pick: A used DME is a very common and cost-effective solution for this repair, BUT only if you use a reputable cloning service. Buying a used DME from a junkyard and having your original DME's data cloned onto it can save over $1000 compared to a new unit from the dealer.

Donor-vehicle mileage cap: roughly under 120000 miles for the part to have meaningful remaining life.

What to inspect on the donor part:

  • Match the hardware part number exactly. Do not rely on the model year alone.
  • Source the DME from a vehicle that was not involved in a flood or front-end collision.
  • Visually inspect the pins on the used DME for any signs of corrosion or physical damage before purchasing.
  • If possible, get the VIN of the donor car to check its history.

OEM-only on this vehicle (don't cheap out):

  • Digital Motor Electronics (DME) - While a used OEM unit is fine, avoid any non-brand, no-name 'remanufactured' DMEs from unknown sellers. Stick to original Siemens/Bosch units, whether new or used and cloned.

Aftermarket brands forum-validated for this vehicle:

  • For Ignition Coils: Bosch, Delphi, Eldor are OEM suppliers and considered reliable replacements.
  • For MOSFETs (DIY Repair): onsemi (formerly Fairchild) FDB14N30TM is a widely documented and successful upgrade for MSD80 repair.

Brands owners have reported issues with on this vehicle:

  • Generic, unbranded ignition coils and fuel injectors from online marketplaces. A cheap coil/injector failing is the primary cause of this expensive DME failure, so using quality parts is critical to prevent a recurrence.

Real Owner Stories

Aggregated from forums and TSBs cited above. Mileages and costs reflect what owners reported in those sources.

2007 BMW 335i N54

Symptoms: The car went into limp mode and stalled immediately after a track session. A JB4 tuner identified a fault indicating a DME diode failure for injectors 1, 2, and 3.

What fixed it: The owner identified the issue as a DME failure (code 30BA) requiring MOSFET repair or DME replacement.

Source hint: e90post.com - 'DME failure :('

2008 BMW 3 Series N54

Symptoms: The car sat outside and subsequently suffered from a damaged DME. Visual inspection showed corrosion on the unit.

What fixed it: The owner had to address water damage caused by clogged cowl drains; fixes discussed included cleaning pins or full DME replacement.

Source hint: e90post.com - 'Water damaged DME now with pics'

Frequently Asked Questions

My 2007 335i has code 30BA and P1604; do I need to replace my fuel injectors too?
Yes. If a failed MOSFET is found in the MSD80 DME, the corresponding external part, such as an injector or ignition coil, must be identified and replaced to prevent an immediate repeat failure of the DME. Many technicians recommend replacing all six as a precaution.
Can I fix the P1604 code on my N54-powered 3 Series by just cleaning the DME?
Cleaning with electronics cleaner only works if the issue is minor corrosion on the board or pins due to water intrusion. If the internal MOSFETs have shorted due to voltage spikes from coils or injectors, they must be de-soldered and replaced with upgraded parts like the FDB14N30TM.
Does BMW TSB SI B12 09 12 apply to my P1604 fault?
SI B12 09 12 specifically addresses N55 engines stalling or idling erratically during low-speed maneuvers. While it highlights that DME software updates can solve drivability issues, P1604 is more commonly associated with internal hardware failure in the MSD80 DME found in N54 models.
Why is my cooling fan running at max speed when I try to start my 335i?
This is a symptom of a major DME issue, often associated with P1604. It can indicate a catastrophic internal failure or a loss of communication with the DME, which may be caused by failed internal components or water damage in the E-box.
Is the P1604 code related to the N54 High-Pressure Fuel Pump (HPFP) recall?
While both cause stalling and limp mode, they are distinct issues. The HPFP failure (NHTSA Campaign 10V446000) involves the fuel system, whereas P1604 typically points to an internal electronic failure within the DME (engine computer) itself.
🔥 BMW DME MSD80 MosFet's REPAIR- 335i 535i 135i X6 E89  -💥 30BA 30BB ERROR
🔥 BMW DME MSD80 MosFet's REPAIR- 335i 535i 135i X6 E89 -💥 30BA 30BB ERROR
BMW DME ECU Cylinder Misfire N54 Engine Error Code 30BA or 30BB MOSFET Diagnosis Replacement Repair
BMW DME ECU Cylinder Misfire N54 Engine Error Code 30BA or 30BB MOSFET Diagnosis Replacement Repair
BMW E90 E92 E91 DME Water Leak Cause & Fix!
BMW E90 E92 E91 DME Water Leak Cause & Fix!
BMW MSD80 Fuel Injector Fault Code Diagnosis - 30BA 30BB
BMW MSD80 Fuel Injector Fault Code Diagnosis - 30BA 30BB
How to clone the BMW MSD81 DME from your MSD80 for your N54 without sending in your CAS and key!
How to clone the BMW MSD81 DME from your MSD80 for your N54 without sending in your CAS and key!
Wrenchy
Article researched & written by
Go-Parts' AI research assistant. Every article is backed by live web research, verified OEM data, and real technician knowledge — so you get accurate, up-to-date information you can trust.
Meet Wrenchy → Updated May 30, 2026

The information in this article is provided for general reference and educational purposes only. Vehicle specifications, procedures, and part compatibility can vary by production date, trim level, and region. Always consult your vehicle's factory service manual and verify part numbers before purchasing or performing repairs. Safety-critical components such as airbags, seat belts, and braking systems should be installed by a qualified professional.

Year Coverage
This article covers the OBD-II Code P1604 for:
  • BMW 3 Series: 200520062007200820092010201120122013
In this article
🧭 Diagnostic Flowchart
Jump to ▴

Email This Guide

We'll send you a link to this article so you can read it later or share it.

Added to cart · Part