One of the most common cooling system codes on BMWs, often misdiagnosed as a sensor fault. What P0128 actually means, the causes ranked by likelihood, what it costs to fix in the UK, and why a stuck thermostat is more common than a faulty sensor.
P0128 indicates the engine coolant temperature has not reached the thermostat's regulating temperature within a specified time. On most BMWs this is a cooling system issue – typically a stuck-open thermostat – and it should be diagnosed cheapest-first.
Do not replace the thermostat without checking the coolant level and sensor data first. Full diagnostic order below.
The engine control unit (DME) monitors coolant temperature to manage fuel delivery, ignition timing, and emissions. When the engine is cold, the DME expects the coolant to reach a specific temperature (typically around 80–90°C) within a certain time after startup. P0128 is logged when the temperature stays below the thermostat's regulating temperature for too long. This is a rationality code – the DME compares the actual temperature to what it expects based on operating conditions. The most common cause is a thermostat that is stuck open, allowing coolant to flow continuously and preventing the engine from warming up properly. However, a faulty coolant temperature sensor, low coolant level, or even a wiring issue can also trigger the code. This code appears across the full range of BMW petrol and diesel engines, from the N47 to the B58, and the diagnostic approach is similar regardless of engine type.
Ordered by how often each turns out to be the real culprit on BMWs – with typical fitted cost against each, so you can sanity-check any quote you've been given.
| Cause | Likelihood | Typical Cost (fitted) | Notes |
|---|---|---|---|
| Thermostat stuck open | Very High | £150–£300 | Most common – the thermostat fails in the open position |
| Low coolant level | High | £20–£50 (top-up) / £100–£200 (if leak) | Check for leaks first – cheapest possible fix |
| Failing coolant temperature sensor | Medium | £100–£200 | Sensor may read lower than actual temperature |
| Wiring / connector corrosion | Medium | £150–£400 | Intermittent or high-resistance connections |
| ECU / DME software issue | Low | £200–£600 | Rare – usually after programming or in older modules |
Cost figures [PATTERN DATA] – indicative independent-specialist pricing, not drawn from our engine replacement dataset.
Top up the coolant if low. Inspect for visible leaks – a simple top-up can resolve the code if low coolant is the issue.
Using a diagnostic tool, compare the coolant temperature reading with engine running time. If the sensor reads unrealistically low, suspect the sensor.
Monitor temperature rise from cold start. A properly functioning thermostat should reach 80–90°C within 10–15 minutes of driving. If temperature stays low, the thermostat is likely stuck open.
Check the sensor and thermostat connector for corrosion or damaged wires.
If all physical checks are fine and the code persists, the DME software or internal driver may be at fault – rare but possible.
Our diagnostic wizard walks the same order, or confirm your engine with the registration lookup.
Yes – but with caution and not indefinitely. P0128 on its own is not an immediate engine-destroying fault. The car will run, but the engine may run rich, increasing fuel consumption and potentially harming the catalytic converter over time. The heater may not work effectively. You can drive to a garage, but avoid long journeys or heavy loads until the issue is diagnosed. Prolonged cold running can also increase wear on engine components due to improper oil temperature.
Yes, for short journeys to a garage. It is not an immediate emergency, but prolonged driving with a stuck thermostat can increase fuel consumption and emissions. The engine may also take longer to reach optimal operating temperature, which increases wear.
No – while a stuck-open thermostat is the most common cause, low coolant, a faulty sensor, or wiring issues can also trigger the code. Always diagnose cheapest-first.
Only temporarily. The code will return when the DME detects the same temperature discrepancy again, usually within a few drive cycles. Clearing it also removes freeze‑frame data that helps pinpoint the cause.
Expect one to two hours of diagnostic time at an independent BMW specialist. Many will offset that cost against the repair if you proceed with them.
It appears on both, but diesel engines take longer to warm up, so they are slightly more prone to this code if the thermostat is failing. However, the diagnostic approach is the same.
Cheapest-First AlwaysWe rank causes by likelihood and cost, not by what's profitable to quote.
Honest About CostWhere a fault is usually cheap to fix, we say so plainly.
20+ Vetted BMW SpecialistsDiagnostics carried out by people who work on these daily.
100% IndependentNo sponsors, no manufacturer influence.
Compare diagnostic and repair quotes from our vetted specialist network.
COMPARE QUOTES NOW → RUN THE DIAGNOSTIC WIZARD