Type a code below to fetch the live entry from api.beemuu.com/api/dtc/<code>. The form works without JavaScript as a plain link — the result is the same JSON document the API returns, rendered for humans.
Fuel rail pressure
BMW-specific fuel-rail pressure codes are the canonical high-pressure-pump family. A code here does not automatically mean the HPFP is bad — low fuel pressure can also be caused by a blocked filter, a leaking injector, or a failed pressure regulator on the supply side. Read the freeze frame before changing parts.
| Code | Title | Severity |
|---|---|---|
| 29E0 | Fuel injection rail, pressure sensor signal | warn |
| 29E1 | Fuel pressure sensor signal (low / implausible) | critical |
| 29E2 | Fuel injection rail, pressure sensor signal (high) | warn |
VANOS solenoid & variable valve timing
VANOS codes describe BMW's variable valve-timing system. Common on N52, N54, N55 and the B-family. A VANOS code combined with rough idle usually points to the intake solenoid; codes with a stuck-exhaust cam usually mean mechanical wear or oil-flow restriction.
| Code | Title | Severity |
|---|---|---|
| 2A82 | VANOS intake control fault | warn |
| 2A99 | VANOS exhaust: control fault, camshaft stuck (community list) | warn |
Boost / charging pressure
Boost codes are common on turbocharged N54/N55/B58/S55/S58 engines. A "too low" code usually means boost leak or wastegate fault; "too high" points to a stuck wastegate or overboost from a faulty N75 valve. The DME-derived codes are BMW-specific and reference the B58 family; generic P-codes cover the same symptoms on other platforms.
| Code | Title | Severity |
|---|---|---|
| 30FF | Turbocharger, charge-air pressure too low (underboost) | warn |
| 120308 | Charging pressure control: too low (B58) | warn |
Misfire detection
Generic OBD-II misfire codes. P0300 means random/multiple cylinder misfires; P0301 through P0308 identify the affected cylinder. Always read freeze frame, fuel-trim values and the misfire counter histogram before changing parts. Misfires can be caused by ignition, fuel delivery, compression, or simply low battery voltage on a cold start.
| Code | Title | Severity |
|---|---|---|
| P0300 | Random/multiple cylinder misfire detected | critical |
| P0301 | Cylinder 1 misfire detected | critical |
| P0302 | Cylinder 2 misfire detected | critical |
| P0303 | Cylinder 3 misfire detected | critical |
| P0304 | Cylinder 4 misfire detected | critical |
| P0305 | Cylinder 5 misfire detected | critical |
| P0306 | Cylinder 6 misfire detected | critical |
| P0307 | Cylinder 7 misfire detected | critical |
| P0308 | Cylinder 8 misfire detected | critical |
Fuel trim & air metering
Long-term fuel trim codes are evidence, not a parts list. P0171 (Bank 1 system too lean) on a BMW is most often caused by a vacuum leak, a failing crankcase-vent valve, a tired MAF sensor, or low fuel pressure. The same code in cold weather with a near-empty tank can be fuel delivery. Treat the trim values as the start of a question, not its answer.
Mass air flow
MAF codes mean the DME has lost confidence in the mass air flow sensor’s reading. A dirty or failing MAF is the most common cause; wiring and connector damage are the second. On BMW M54/N52/N54/N55 engines, a tired MAF can drive fuel trim positive enough to mask a vacuum leak.
| Code | Title | Severity |
|---|---|---|
| P0101 | Mass air flow circuit range/performance | warn |
| P0102 | Mass air flow circuit low input | warn |
Oxygen (lambda) sensor
O2 sensor codes cover the pre-catalyst (Sensor 1) and post-catalyst (Sensor 2) sensors. A failing pre-cat sensor drives fuel trim; a failing post-cat sensor reads as a slow catalyst. The slow-catalyst reading is often a sensor fault, not a catalyst fault.
| Code | Title | Severity |
|---|---|---|
| P0130 | O2 sensor circuit (Bank 1, Sensor 1) | warn |
| P0133 | O2 sensor circuit slow response (Bank 1, Sensor 1) | warn |
Cam & crank timing
Generic cam-timing codes. P0011/P0014 (camshaft position A/B timing over-advanced) are common on direct-injection BMWs with Vanos or Valvetronic. The root cause is usually a stretched timing chain, a tired Vanos solenoid, or low oil pressure. Always verify oil level and quality first.
| Code | Title | Severity |
|---|---|---|
| P0011 | Camshaft position A timing over-advanced (Bank 1) | warn |
| P0014 | Camshaft position B timing over-advanced (Bank 1) | warn |
Catalyst efficiency
P0420 means the post-cat oxygen sensor activity is too similar to the pre-cat sensor — the catalyst is not storing enough oxygen. Catalysts rarely fail outright; a P0420 is more often caused by an exhaust leak ahead of the rear sensor, an old O2 sensor, or an engine that has been running rich for a long time. Confirm with a downstream and upstream voltage trace before condemning the cat.
| Code | Title | Severity |
|---|---|---|
| P0420 | Catalyst system efficiency below threshold (Bank 1) | warn |
| P0430 | Catalyst system efficiency below threshold (Bank 2) | warn |
Coolant temperature
P0128 means the engine did not reach its regulated temperature in the expected time. Most often a stuck-open thermostat. On F/G-series BMWs the electric water pump and the characteristic-map thermostat can also produce this code. Check the actual coolant temperature with a live-data sweep before changing parts.
| Code | Title | Severity |
|---|---|---|
| P0128 | Coolant temp below thermostat regulating temperature | info |
Network & communication
U-codes mean a module cannot talk to another module on the bus. On a BMW that usually traces back to a gateway issue, a sleeping module that is not waking on the right message, or a wiring fault. Confirm which module is missing before changing parts.
| Code | Title | Severity |
|---|---|---|
| U0100 | Lost communication with ECM/PCM "A" | critical |
Codes not listed above — including body (B), chassis (C) and additional BMW-specific entries — are searchable through the lookup box at the top of this page. The full catalog has 444 entries; this index covers the families that come up most often in independent diagnostics, with each code broken out into its own page.
A DTC tells you what a control module decided is outside its expected range. It does not automatically identify a failed component. Read the freeze frame, compare related codes, and inspect live data before changing parts. Service functions and coding operations are write paths — use a battery maintainer where the procedure requires stable voltage and never perform writes you do not understand.
DTC index questions
What is a BMW DTC?
A diagnostic trouble code, or DTC, is a record created when a control module decides a monitored condition is outside its expected range. BMW uses both generic SAE J2012 codes and BMW-specific 4-hex-digit codes that map to internal DME/DSC/CAS fault families.
How do I look up a code?
Use the lookup box at the top of this page, or query api.beemuu.com/api/dtc/<code> directly. The API returns title, severity, category and verification status.
Are these codes verified?
Each entry is marked verified or unverified. Verified entries are cross-checked against the project's source list; unverified entries are seeded but not yet audited.
Where does the data come from?
The catalog is seeded from the project's BMW diagnostic knowledge base (research/bmw_diag_dim01, community/opinions/*.toml) and exposed read-only at api.beemuu.com.