01 Are Modern Cars Too Complicated? A Real-World Review • 02 Engine Cranks, Has Spark But Won't Start: Diagnose the Prob… • 03 Your ultimate checklist for buying a used car with confiden… • 04 10 Essential Car Maintenance Tips for Long Lasting Performa… • 05 Should You Drive Your Car Immediately After an Oil Change? • 06 This Is How to Fix Sensor-Related Fuel Consumption Problems… • 07 Is it bad to brake while cruise control is enabled? • 08 The Connection Between Oxygen Sensors and Catalytic Convert… • 09 P0010 A Camshaft Position Actuator Circuit (Bank 1) • 10 Toyota's Secret Weapon: Why They Believe Hydrogen Will Kill… •

DTC codes / BMW codes / P1640

P1640 · BMWInternal Control Module ROM RAM Error

P1640 on BMW vehicles means the engine control module (DME) has detected an internal fault in its own read-only memory (ROM) or random-access memory (RAM), which stores the operating program and live data. The module runs a self-test at key-on and during operation, and this code sets when the checksum or memory integrity check fails, indicating the processor cannot trust its own stored data.

SystemPowertrain
Code typeBMW specific
SeverityHigh
Fix difficultyProfessional
AreaComputer and output circuits

Symptoms you may notice

  • Often no symptoms besides the warning light, because the fault may be intermittent and the module continues to run on a backup routine
  • Engine may crank but not start, or start and immediately stall, if the memory error prevents the fuel and ignition maps from loading
  • Rough running, misfiring, or reduced power in limp mode when the DME cannot reliably execute its control strategy
  • Multiple unrelated fault codes stored at the same time, because a corrupted DME memory can log spurious errors across many systems
  • Instrument cluster warning messages for DSC, transmission, or emissions systems that share data with the DME
  • Intermittent no-start that clears after the ignition is cycled, a classic sign of a marginal memory or power supply fault inside the module

Common causes, most likely first

  1. Internal failure of the DME (engine control module) memory chip or processor, which is the fault the code directly reports
  2. Low or unstable supply voltage to the DME, such as a weak battery or corroded power and ground connections, causing memory corruption during writes
  3. Water intrusion into the DME housing or its connector compartment, common on BMW models with the module mounted in the engine bay or under the cowl
  4. Corroded or loose pins in the DME harness connector that interrupt power or ground while the module is running
  5. A failed or failing voltage regulator in the alternator that sends voltage spikes into the DME
  6. Software corruption from an interrupted flash or programming event, which can leave the ROM checksum invalid
  7. A replacement or mismatched DME that was not correctly coded and adapted to the vehicle

How to diagnose and fix it

  1. Read all stored codes with a BMW-capable scan tool and record every module's faults before clearing anything, because the DME memory error often drags related codes with it
  2. Check battery voltage at rest and during cranking, and load-test the battery and charging system, since low voltage is the most common external trigger for memory corruption
  3. Inspect the DME connector and housing for corrosion, water stains, or loose pins, and clean and reseat the connector if contamination is found
  4. Verify power and ground at the DME pins with a multimeter and a wiring diagram, looking for voltage drops that would starve the module
  5. Clear the code and perform a road test with the scan tool recording live data to see whether the fault returns immediately or only under specific conditions
  6. If the code returns with stable voltage and clean connections, reflash or reprogram the DME with the latest BMW software to rule out corrupted programming
  7. If the fault persists after programming, replace the DME with a correctly coded and adapted unit, which requires BMW diagnostic equipment and immobiliser alignment

Why a memory code is rarely just the DME

  • A P1640 is frequently a symptom of a weak battery or poor ground rather than a dead module, so voltage-drop testing the DME supply before condemning the unit saves an expensive replacement
  • Water damage to the DME is common on BMW models where the module sits in the engine bay or under the cowl, and the corrosion often starts at the connector pins rather than the circuit board
  • This code can appear after a failed or interrupted software flash, and a correct reprogramming may clear it without any hardware replacement
  • Because the DME shares data on the CAN bus, a memory fault can set unrelated codes in the transmission, DSC, and instrument cluster, so do not chase those codes until the DME fault is resolved
  • An intermittent P1640 that clears on its own after an ignition cycle should be treated as a warning of a marginal power supply or failing module, not as a harmless glitch

Can I keep driving with P1640?

Do not continue driving if the engine runs roughly, stalls, or enters limp mode, because the DME may not reliably control fuel and ignition. If the car drives normally and the light is the only symptom, keep the trip short and have the fault diagnosed promptly, avoiding heavy load and long distances.

Guidance is general and written for BMW vehicles. Exact tests and values vary by model, so confirm the fault before replacing parts.

Running on fumes Free guides aren't free to make. Top up the tank. Any amount, one time. Fuel the Garage