OBD-II trouble code
P2030: Fuel Fired Heater Performance
The heater lit, ran and finished — and the temperature rise the module expected to see never arrived. That makes this an arithmetic complaint about two numbers, and either number can be wrong for reasons the burner has no control over.
Quick facts
- System
- Powertrain
- Category
- Auxiliary Emissions Controls
- Severity
- Low severity
- Drivable
- Usually safe to drive short-term
- Repair cost range
- $0 – $2,200
- DIY difficulty
- Advanced DIY
Browse every code in P2000–P20E8, or start from the full code library.
What does P2030 mean?
The single most useful thing to establish about P2030 is what separates it from its neighbours: on a performance code, the heater actually ran. The module commanded a heating cycle, the cycle was allowed to proceed, and only at the end of it did the module conclude that the result fell short. Codes that describe a heater refusing to start, latching itself off, or reporting an electrical fault are separate entries with separate numbers. This one is the verdict on a completed job.
That verdict is arrived at by comparison. The controller has a model of what should happen to temperature when a burner of known output runs for a known length of time into a known volume of coolant — or, on air systems, into the cabin duct. It watches the real temperature climb against that model. If the measured rise is too small, too slow, or absent, it stores a performance fault. Nothing in that sequence measures the flame directly. The module infers the flame from its effect.
Inference is what makes this code interesting to diagnose, because a comparison between two numbers can fail from either end. The obvious end is the burner: partial combustion from a fouled chamber or a tired glow pin produces real heat, just not enough of it, and the model catches the shortfall. But the other end fails just as often and is far more frequently missed. If the heat is being made and then carried away or never picked up, the sensors report the same shortfall a weak flame would.
The commonest version of that is circulation. Coolant-based heaters do not rely on the engine's own water pump — the engine may not even be running when the heater is working, which is rather the point of the device. They use a small dedicated electric circulation pump, on its own supply, that pushes coolant through the burner's heat exchanger and out into the engine or the cabin heater matrix. When that pump seizes, loses its supply, or is simply never commanded, the burner fires into a static column of coolant. Locally that coolant gets hot; at the sensor the module is watching, nothing changes. The heater is working perfectly and the code is entirely correct that the result did not appear.
An airlock does the same thing without any part having failed. So does a coolant level low enough to leave the heat exchanger partly dry, which is why this code sometimes turns up shortly after unrelated cooling system work — a hose replacement, a radiator, a head gasket — that put air into a circuit nobody remembered to bleed.
The third route to a false shortfall is heat leaving faster than the model expects. A thermostat stuck open sends coolant round the radiator continuously, and a heater sized to warm a small loop cannot keep up with a full one. A cabin blower left on maximum with the recirculation flap open does something similar on air-side systems. In both cases the arithmetic is defeated by demand, not by supply.
And because the whole judgement rests on measured temperature, a coolant temperature sensor reading a few degrees optimistic will fail the comparison on its own. Before anyone opens the burner, it is worth knowing whether the number the module is grading against is trustworthy — that is one scan tool reading and a soak-temperature sanity check against ambient.
Common causes
- Auxiliary coolant circulation pump seized, unpowered or not being commanded, so the burner heats a static column of coolant
- Air pocket in the heater circuit after cooling system work that was never properly bled
- Coolant level low enough that the heat exchanger is not fully flooded
- Carbon-fouled burner chamber producing partial combustion and reduced heat output
- Worn glow pin igniting late, so a measurable part of each cycle is wasted
- Fuel dosing pump delivering below its metered rate through wear or a partially blocked line
- Thermostat stuck open, carrying heat away faster than the heater's model allows for
- Combustion air intake partially restricted, leaning the burn without stopping it
- Heat exchanger internally scaled or sooted, so heat is made but not transferred
- Coolant temperature sensor reading high, failing the comparison on a healthy heater
Symptoms
- Cabin heat that arrives but is weaker than the vehicle used to produce in cold weather
- Heater audibly running through a full cycle and still leaving the engine cold
- Warning lamp with no change at all in how the engine starts, idles or drives
- Longer engine warm-up in winter and a temperature gauge that settles low on short trips
- Pre-heat or timer function completing on schedule but producing a disappointing result
- Heater exhaust vapor present under the vehicle, confirming the burner did light
- Sooty or dark residue around the heater exhaust outlet
- Coolant level found low, or a gurgling noise from the dash area on start-up
- Complaint that appeared shortly after unrelated cooling system repairs
Diagnostic steps
- 1.Establish first that the burner is lighting at all. Commanded exhaust vapor and a warm heater outlet pipe separate this code from the no-start faults and immediately halve the list of causes.
- 2.Confirm the auxiliary circulation pump runs during a commanded cycle. On a coolant system the pump is separate from the engine's water pump and has its own supply; a burner firing into stationary coolant produces exactly this code with nothing wrong inside it.
- 3.Check coolant level and bleed the heater circuit properly. An air pocket in the heat exchanger defeats the temperature comparison and is the likeliest cause when the fault follows other cooling system work.
- 4.Watch inlet and outlet coolant temperature through a full heating cycle on a scan tool. A healthy system shows a clear and steady rise across the heat exchanger; a small or erratic difference points at combustion, and no difference at all points at flow.
- 5.Sanity-check the coolant temperature sensor against ambient after an overnight soak. The whole judgement rests on that number, and a few degrees of optimism will fail the test on a heater that is fine.
- 6.Verify the thermostat is closing. A thermostat stuck open lets the heater's output drain into the radiator, and the vehicle will usually be slow to warm up on engine heat alone as well.
- 7.Inspect the combustion air intake and the exhaust outlet for partial restriction. A fully blocked pipe stops the burner; a partially blocked one lets it run badly, which is what this code describes.
- 8.Have the burner chamber inspected for carbon and the glow pin assessed. Both are serviceable rather than reasons to condemn the unit, and both reduce output without preventing ignition.
- 9.Confirm fuel delivery from the dosing pump against its specified rate rather than assuming it is fine because the heater lit. Reduced delivery produces a smaller flame that still ignites.
- 10.After repairs, run a complete commanded cycle and watch the temperature rise against the model rather than clearing the code and hoping. This fault is defined by a measurement, so only that measurement proves it fixed.
Repair cost
$0 – $2,200
Bleeding trapped air out of the heater circuit and topping up coolant can cost nothing beyond the fluid, and it resolves a meaningful share of these. Diagnosis with a tool that can command a heating cycle and log inlet and outlet temperature runs $110 to $240 and is worth paying for here, because the whole fault is a comparison between two numbers. A thermostat is $150 to $450 fitted. An auxiliary circulation pump is $180 to $600 depending on access. A burner service with carbon removal and a glow pin is $250 to $700. A fuel dosing pump is $200 to $500. A complete heater assembly at the top end is $1,200 to $2,200 installed — and the gap between that figure and a bleed screw is precisely why the flow checks belong before the combustion ones.
Estimate your repair
Run the numbers for your vehicle
Open the Repair Cost Estimator with fuel-fired auxiliary heater service or replacement preselected. Adjust labor rate and vehicle category to fit your situation.
DIY vs shop
This is an advanced DIY job. It typically requires specialty tools, scan-tool access, lifting equipment, or careful sequencing to avoid causing new failures. Plan for extended downtime and have a backup vehicle. Most owners are better served by a shop that has done this repair before.