P0148
Fuel Delivery Error
- Severity
- High
- Driving
- Drive only to a garage
The amount of fuel actually delivered does not match the amount the module asked for. The module commands a quantity and checks the result through rail pressure and fuelling corrections; when the two disagree beyond a limit, it sets this and usually cuts power to protect the injection system. This is a fuel supply fault far more often than an electrical one.
Possible causes
- CommonBlocked or overdue fuel filter
- CommonAir drawn into the low pressure supply through a perished pipe or a loose union
- CommonWorn high pressure pump no longer able to make the commanded pressure
- CommonExcessive injector leak-off - worn injectors returning fuel instead of injecting it
- PossibleWeak lift pump or restricted tank pickup
- PossibleFuel pressure regulator or metering valve fault
- PossibleContaminated or waxed fuel in cold weather
What you might notice
- Loss of power, or the car dropping into limp mode
- Hard starting, or refusing to start
- Rough running and misfiring
- Smoke from the exhaust
- Cutting out and not restarting
What to check, in order
- Change the fuel filter first if there is any doubt about when it was last done. It is the cheapest item on this list and it causes this code more than anything else.
- Carry out an injector leak-off test. Worn injectors returning too much fuel starve the rail, and the test identifies which one without removing anything.
- Check the low pressure supply for air. Air bubbles in a clear return line mean the fault is on the suction side - a perished pipe or a loose union - not the pump.
- Compare commanded rail pressure against actual on live data, under load. A pump that holds pressure at idle and cannot at load is worn.
- Do not run the tank low while this is stored. Diesel injection systems are lubricated by the fuel they pump, and running one dry can destroy the high pressure pump - which then sends metal debris through the whole system.
Read this code from your own car
Plug an ELM327 adapter into the OBD-II port under the dashboard. Pin16 reads every stored, pending and permanent code, explains each one like this page does — offline, with no account — and shows what the car recorded when the fault was set.
Where this code sits
P00xxP01xxP02xxP03xxP04xxP05xxP06xxP07xxP08xxP09xxP0AxxP0BxxP0CxxP0DxxP0ExxP0FxxP10xxP11xxP12xxP13xxP14xxP15xxP16xxP17xxP18xxP19xxP1AxxP1BxxP1CxxP1DxxP1ExxP1FxxP20xxP21xxP22xxP23xxP24xxP25xxP26xxP27xxP28xxP29xxP2AxxP2BxxP2CxxP2DxxP2ExxP2FxxP30xxP31xxP32xxP33xxP34xxP35xxP36xxP37xxP38xxP39xxP3AxxP3BxxP3CxxP3DxxP3ExxP3Fxx
Fuel and air metering
P0100P0101P0102P0103P0104P0105P0106P0107P0108P0109P0110P0111P0112P0113P0114P0115P0116P0117P0118P0119P0120P0121P0122P0123P0124P0125P0126P0127P0128P0129P0130P0131P0132P0133P0134P0135P0136P0137P0138P0139P0140P0141P0142P0143P0144P0145P0146P0147P0148P0149P0150P0151P0152P0153P0154P0155P0156P0157P0158P0159P0160P0161P0162P0163P0164P0165P0166P0167P0168P0169P0170P0171P0172P0173P0174P0175P0176P0177P0178P0179P0180P0181P0182P0183P0184P0185P0186P0187P0188P0189P0190P0191P0192P0193P0194P0195P0196P0197P0198P0199