P0031 Code: HO2S Heater Control Circuit Low (Bank 1 Sensor 1)
The P0031 code means the circuit that powers the heater of the upstream oxygen sensor shows a lower voltage than expected. It is usually caused by an open heater element, a blown fuse or a wire shorted to ground. The engine runs normally, but the system cannot complete its readiness checks.
- Severity
- Medium
- Can I keep driving?
- Yes, no immediate risk
- Estimated cost
- $50 to $400
- Difficulty
- Medium
- System
- Air and Fuel
- Applies to
- All OBD2 vehicles
On this page
What the P0031 code means
An oxygen sensor does not give a useful signal below about 300 °C (570 °F). Waiting for the exhaust gases to heat it would take minutes, and for all that time the engine would run in open loop with high emissions. That is why it has an internal heater element that brings it up to temperature in twenty to thirty seconds.
The computer powers that element and monitors the circuit electrically. The P0031 code is set when the voltage on the control side drops below what is expected. In practice that matches three scenarios: the element has opened internally, the circuit is shorted to ground, or no power is reaching it.
Keep it separate from P0030, which flags a general circuit fault, and from P0032, which means high voltage. All three point to the same component but to different electrical conditions, and that precision shortens the diagnosis.
The practical effect is limited but real: without the heater the sensor takes too long to go into service, fuel use goes up on short trips and the related monitor never completes, so the vehicle cannot pass an emissions test.
It helps to know that this circuit is not powered continuously. The computer controls the heater with a modulated signal, varying the on time according to the temperature it estimates at the sensor: lots of power right after startup and very little once the exhaust keeps it hot on its own. That strategy avoids the thermal shock that would crack the ceramic element.
It has a diagnostic consequence: measuring voltage with a multimeter on the control wire gives an average that changes from one moment to the next and can confuse you. The reliable numbers are the heater resistance and the real current flowing.
P0031 code symptoms
- Check engine light on.
- Higher fuel use on short trips than on the highway.
- The engine takes several minutes to enter closed loop.
- Slightly rough idle during the first minutes.
- The oxygen sensor monitor does not reach ready status.
- Failed emissions test.
- In many cases, no noticeable symptom while driving.
- The code always appears in the first minutes after a cold start.
Likely causes of the P0031 code
- Sensor heater element open from age. The most frequent cause.
- Blown fuse in the heater circuit, which often affects several sensors at once.
- Control wire shorted to ground.
- Corroded connector or one with moisture.
- Wiring damaged by exhaust heat.
- Power relay with worn contacts.
- Universal sensor with poorly made splices, which add resistance to the circuit.
- Poor ground in the circuit.
- Failed output driver in the computer. The last possibility.
- Thermal shock from puddle water hitting a hot sensor, which cracks the heater element.
How to diagnose the P0031 code step by step
- Check whether other heater codes are stored. Several at once point to the fuse or to a shared power supply, not to the sensors.
- Check the circuit fuse in the engine compartment fuse box.
- Measure the heater resistance with the connector unplugged. An infinite reading confirms the element is open.
- Check that 12 volts reach the supply pin with the key on.
- Rule out a short to ground on the control wire with the computer connector unplugged.
- Measure the real circuit current with a clamp ammeter, because a correct resistance with weak power sets the same code.
- Inspect the connector and harness, which are exposed to a lot of heat.
- Check how long the engine takes to enter closed loop. More than two minutes means the heater is not working.
- Measure resistance and current, not voltage on the control wire. The signal is modulated, and the multimeter only shows a changing average that misleads you.
How to fix the P0031 code
- Replace the oxygen sensor when the heater resistance is open.
- Replace the fuse and find out why it blew before you close the job.
- Repair the wire shorted to ground with solder and heat-resistant sleeving.
- Clean or replace the corroded connector and protect it with dielectric grease.
- Replace the relay if its contacts are worn.
- Avoid universal sensors that need splicing: the added resistance brings the P0031 code back.
- Restore the circuit ground down to bare metal.
- Replace the sensor if the heater element cracked from thermal shock, which is common after driving through water with a hot exhaust.
Apply anti-seize to the threads when you install the sensor, and work with the exhaust warm so the sensor does not snap off inside the pipe.
Technical reference data
- Typical cold heater resistance: 2 to 14 ohms depending on the manufacturer.
- Current in the first seconds: 0.8 to 2 amps, dropping as the sensor warms up.
- Time to operating temperature: 20 to 30 seconds.
- Minimum sensor operating temperature: about 300 °C (570 °F).
- Time to enter closed loop with a healthy system: 30 seconds to 2 minutes.
- Usual sensor torque: 40 to 50 N·m (about 30 to 37 lb-ft).
- The heater is driven by a modulated signal: lots of power after startup and little once the exhaust is hot.
Brand-specific notes
When several heater codes appear at once, stop suspecting the individual sensors. It is very unlikely that two or three heater elements fail at the same time. A fuse, a relay or a shared power supply is the likely cause.
Measure current, not just resistance. A circuit with the resistance within specification but weak power sets exactly this code, and an ohmmeter reading would pass it as good.
Questions about the P0031 code
There are no questions about this code yet. Tell us about your case: vehicle, symptoms and what you have already checked.