O2 sensors P0130 / P0135 / P0141: sensor heater, one of the most common codes after the catalytic converter
What the code means
An O2 sensor (or lambda sensor) measures the oxygen in the exhaust gas. The upstream sensor (sensor 1, before the catalytic converter) is used to adjust the mixture; the downstream sensor (sensor 2, after the catalytic converter) is used to monitor the catalytic converter. A sensor only works when very hot: a small built-in heating element brings it up to temperature in a few dozen seconds, well before the exhaust gas would.
- P0135: heater circuit fault on the bank 1, sensor 1 (upstream) sensor. P0141: the same fault on sensor 2 (downstream). P0155 and P0161: the same faults on bank 2 of V engines.
- P0030 to P0038: a variant used by some manufacturers for the heater control (for example P0037: downstream sensor heater control, low voltage).
- P0130: upstream sensor circuit fault; P0131 low voltage, P0132 high voltage, P0133 slow response, P0134 no activity. P0136 concerns the downstream sensor.
Is it serious? Can I drive?
No emergency. With a failed heater, the sensor ends up being heated by the exhaust gas: the engine runs with approximate mixture control for the first few minutes, then almost normally. With a dead upstream sensor, the control unit switches to a back-up mixture: higher fuel consumption, and in the long run a catalytic converter that suffers. Sensor codes often come back together with a P0420, because the control unit can no longer monitor the catalytic converter properly.
The most common causes
- Failed heating element in the sensor: the most common cause of P0135 and P0141, especially beyond 120,000 to 150,000 km.
- Blown heater fuse: on many cars, the sensor heaters share a fuse, sometimes with other components. Two heater codes at the same time (P0135 and P0141) suggest the fuse or the relay.
- Connector corroded, melted or disconnected, wire burnt against the exhaust.
- Fouled or poisoned sensor (oil, coolant, additives): a common cause of P0133 and P0134.
- Air leak or exhaust leak before the upstream sensor: it reads too much oxygen (P0131, often with a P0171).
- More rarely, the control unit's driver stage.
What to check first
- Note all the codes, pending ones included, with “Read fault codes”, and look each one up in the fault code dictionary: the bank and sensor number are given there.
- Check the fuse indicated in the manual for the O2 sensors or the sensor heater.
- Look at the connector of the sensor concerned, engine cold: green pins, melted plastic, wire chafed against the exhaust.
- Measure the heater with an ohmmeter, connector unplugged, on the sensor side, across the two heater wires (often the two wires of the same colour, to be checked on the wiring diagram). You will generally find a few ohms, around 2 to 15 ohms depending on the sensor: compare with the manufacturer's value. Infinity means a failed heating element, and the sensor needs replacing.
What the app reads at that point
- The data at the time of the fault: the coolant temperature and the time elapsed since start-up, when they are recorded, show whether the fault was seen when cold, just after starting. That is when the control unit checks the heater.
- The sensors in real time (“Sensors” screen, lines “O2 sensor #1” to “#8”, in the order provided by the car). Tick only the O2 sensors, for a faster reading, and look at:
- engine cold, at idle: a sensor whose heater works starts to vary within one to two minutes. A sensor that stays flat, around 0.45 V, much longer than the other one, then eventually works once the engine is warm: failed heater;
- engine warm, at 2,500 rpm: the upstream sensor should switch quickly between about 0.1 and 0.9 V, and the downstream sensor stay fairly steady around 0.6 to 0.7 V. An upstream sensor that is flat even with the engine warm: dead sensor or wiring. A voltage stuck at 0 V or at an impossible value rather suggests the wire or the connector;
- the short-term and long-term fuel trims: very high with an upstream sensor reading “lean”, also look for an air leak.
- Important limitation: on many recent cars and on most diesels, the upstream sensor is a wideband sensor, whose measurement is not given as a voltage in the “O2 sensor” lines. The app may then only show the downstream sensor: this is normal, not a fault.
- The “O2 sensor” and “O2 sensor heater” emissions checks: after the repair and clearing, they should go back to “Ready” after a few trips. More explanations of these readings in OBD2 live data.
Should I clear the code?
After replacing the sensor or repairing the fuse or connector, yes: the app clears the engine codes after confirmation (standard OBD2 command, without any reprogramming) and offers to save the report first. Then do a few cold starts and read again. Clearing without repairing is pointless: a failed heater is detected again from the next cold start.
Indicative cost
| Work | Indicative range |
|---|---|
| Fuse or connector repair | €5 – €80 |
| Standard downstream sensor, part + fitting | €80 – €250 |
| Standard upstream sensor, part + fitting | €90 – €250 |
| Wideband upstream sensor, part + fitting | €150 – €400 |
Frequently asked questions
Can I drive with a P0135 or P0141 code?
Yes, with no immediate danger. The engine runs, but mixture control is less accurate during the first few minutes (P0135) or catalytic converter monitoring is suspended (P0141). Fuel consumption may rise slightly, and a lit check engine light leads to a re-test at the contrôle technique (the French roadworthiness test).
Should the upstream and downstream sensors be replaced at the same time?
No. The codes point to a specific sensor: “sensor 1” is the upstream sensor, before the catalytic converter, “sensor 2” the downstream sensor. Replace the one concerned, after checking the fuse and the connector.
Is a cheap aftermarket O2 sensor good enough?
Often yes for a downstream sensor, if the reference matches exactly (number of wires, length, type). For an upstream sensor, especially a wideband one, a part of equivalent quality to the original avoids the light coming back and slow-response codes.