Check Engine Light Codes on a Subaru Impreza and WRX
A check engine light on a Subaru Impreza or WRX means the computer stored a fault. It does not name the part. Write the code down as PXXXX, and every other code stored with it, before you clear the light or buy what a parts counter guessed. These steps are for the OBD-II Impreza, Legacy, Outback, WRX, and STI this pattern was built on, stock to lightly modified. They are not a code chart for a direct-injected FA.
The Light Is Not the Code
The lamp is the alert. The stored code is the only thing you can diagnose from. A spoken summary — “they said oxygen sensor” — is not that code. On a WRX or STI, a flashing cruise-control light often comes on with the check engine light. That second lamp is still not the fault.
| What you see | What it means | What to do |
|---|---|---|
| Steady check engine light | A fault is stored | Read every code |
| Flashing check engine light | Misfire, and the car stumbled | Ease off, then read the cylinder code |
| Cruise light flashing too | Common on these WRX and STI cars | Still read the code |
| A counter sentence | Someone’s summary | Keep the PXXXX instead |
A steady catalyst-efficiency light can leave the car driving normally. A flashing light in the misfire cases did not. The car bucked, idled rough, or both. Unburned fuel from a misfire that keeps happening is hard on the converter, so the misfire gets fixed before anyone chases a catalyst code that showed up with it.
How to Read a Check Engine Light
On a 1996-and-later car, OBD-II is the standard plug, and a generic reader is enough to capture the code. The plug is the flip-down door on the lower dash, to the left of the steering column. Pre-1995 cars used a pair of green and black connectors under the dash, and joining them made the lamp flash a code. On the later cars, joining those connectors only makes the lamp flash. It does not read the computer.
A generic reader shows the universal code. It can label a Subaru-specific code as unknown, and a basic tool can miss a code that is still pending, the freeze frame, and the readiness monitors. The Subaru-specific logger described with these cars could read codes, but clearing them was a full ECU reset, and that logger did not show pending codes, freeze frame, or readiness. Use the generic reader to write the number down. Use a tool that shows pending and freeze frame when the confirmed code alone does not explain the stumble.
Warning
Leave the code stored until it is written down. Clearing it with a reader, or disconnecting the battery, erases the fault a shop needs to see. A reader can show “1 of 6.” Ask for every code on that list, not the first one read aloud. After a reset, the readiness monitors are not complete, and an emissions test can fail until the car has been driven.
What to Write Down
A code without the car it came from is how the wrong repair gets copied onto the next Subaru. Record these five lines before anyone clears the light.
- Code. The PXXXX characters, exactly as the reader showed them, including every code stored with the first one.
- Definition. The words on the reader. A later argument about what the code “usually” means does not replace that line.
- Year, model, and engine. An Impreza 2.5, a WRX, and an STI do not share one repair just because the lamp looks the same.
- Mileage. A catalyst code at 60,000 miles and the same code at 150,000 miles are not the same job.
- What was already changed. Plugs, an intake, an exhaust, a recent connector that was unplugged. The fix often sits in that list.
The 2003 Subaru code list that circulated with these cars is a glossary for the OBD-II cars of that era. A code the car stored in a later year can be absent from that list. The reader’s code still wins.
Checks Before Parts
The repairs that repeat are connectors, the gas cap, and a code that was never written down. New sensors come after those checks fail.
- Gas cap, only for an evaporative code. A loose cap and an overfilled tank are the two ordinary causes of a steady light when the code is an evap leak. In the 2003 list, P0457 is the leak detected with the fuel cap loose or off. People tighten until it clicks three times, about five times, or several clicks past the point where it already feels snug. One car needed about ten drive cycles before that light went out. A tighter cap does not fix a catalyst code or a misfire.
- The connector the code names. A front air-fuel sensor left unplugged set P0031, the front heater circuit low. A loose MAP connector set P0107 and P0113 together on one 2000 Impreza RS, and P0108 on a 2005 WRX after the purple MAP sensor on the throttle body was left loose. An oxygen-sensor connector at the transmission that looked seated slid apart when it was pulled.
- Battery terminals. On one car, cleaning a corroded positive terminal left the light off for several weeks and more than 500 miles. Disconnecting the battery to “reset” the light is a different act. That erases the code.
Pro Tip
On a cylinder misfire, look at the coil, plug, and injector connector for that cylinder before you buy a sensor. One 2004 WRX had a flashing light with P0302 and P0304 because injectors 2 and 4 had come unclipped during a plug change.
Codes That Repeat
The same handful of codes keeps showing up on these cars. The definition is from the 2003 Subaru list unless a later car stored a code that list did not have. The first check is what actually fixed cars, not the first part a counter suggested.
| Code | Definition | First check |
|---|---|---|
| P0420 | Catalyst efficiency below threshold | Plugs, then the converter. Not an automatic oxygen sensor |
| P0301–P0304 | Misfire on that cylinder | Plug, coil, and injector connector on that cylinder |
| P0171 | Fuel trim too lean | Air leak after the MAF, and the MAF plugged in |
| P0031 | Front air-fuel heater circuit low | Front air-fuel sensor connector |
| P0327 / P0328 | Knock sensor circuit low or high | Sensor and connector. Do not bypass it |
| P0457 | Evap leak, fuel cap loose or off | Cap clicks, and do not overfill |
P0325 is a knock-sensor circuit malfunction. Treat it like P0327 and P0328: the circuit has to work. On one 2000 Impreza RS the light stayed off after the sensor was replaced. On another 2000 RS at about 70,000 miles, cleaning the connectors and the sensor’s mounting face left the light off for about a month and 1,000 miles. Dropping the sensor or over-tightening it can break it. Substituting a resistor for the knock sensor, or leaving the sensor unplugged, removes knock protection. If the sensor is already out of the circuit, drive gently until it is connected again.
Note
This pattern is for a stock or lightly modified car that still has its catalytic converter. A high-flow catalyst that keeps setting an efficiency code is a different case, and the converter stays on the car.
Catalyst Efficiency, P0420
P0420 is the code people bring back most often, and it is the code most often misnamed. A parts counter will call it a failed oxygen sensor. The definition is catalyst system efficiency below threshold. The rear oxygen sensor is how the computer judges the converter. A bad reading does not mean that sensor is the part that failed.
Three cars show why the part is not automatic.
- Plugs, one 2000 Legacy Outback at 61,000 miles. The engine was stock. The light arrived after a 60,000-mile service that used Bosch Platinum plugs. Copper NGK plugs that crossed to the original Champions cleared it after a couple of days of driving, with better fuel economy once the light was gone.
- Converter, one car at 49,000 miles. The dealer replaced the catalytic converter. The light stayed off for the next 10,000 miles.
- Sensors that did not fix it, one 2001 Outback at 133,000 miles. Stock, no drivability change, code P0420. Both oxygen sensors and the knock sensor were replaced. The light returned after about 200 miles.
Read the plugs and the recent work before you buy a converter or an oxygen sensor. A converter that has actually failed is a real repair, and it stays a converter, not a deleted pipe. One car’s result is that car. It is not a rule for every Subaru that stores P0420.
Misfire and Lean Codes
P0301 through P0304 name the cylinder. The repair starts on that cylinder’s plug, coil, and injector connector. A flashing light plus a stumble is the case to stop driving hard. On one 2008 Outback, the light flashed, the engine misfired for several seconds at highway speed, and the pending codes were P0303 and P0304.
Cold weather changes the check. One 2008 WRX wagon misfired on all four cylinders only below freezing, from about 42,000 miles until it was fixed at 57,000. The intake-manifold gasket had shrunk in the cold and let air in. The gasket that fixed that car is 14035AA492. That part number is that car’s updated gasket, not a guess for every Impreza.
P0171, too lean
P0171 means the fuel trim is too lean. Air the MAF did not measure is the check that fits the cars that stored it: a vacuum leak downstream of the MAF, a MAF left unplugged, a torn intake duct, or a blow-off valve that was venting air the computer never counted. A parts-store printout will also list low fuel pressure and a plugged injector. Those are possible. They are not the first swap when the intake was just taken apart.
A lean code and a misfire code together get the misfire fixed first. Fuel that never burns is what a later catalyst code is often reacting to.
FAQ
What does a check engine light mean on a Subaru?
The computer stored a fault. The lamp does not name the part. Read the code in PXXXX form, and write down every code stored with it, before you replace anything.
Where do I plug in the reader?
On a 1996-and-later car, the OBD-II port is the flip-down door on the lower dash, left of the steering column. Joining the green and black connectors under the dash does not read these cars.
Can I clear a check engine light by disconnecting the battery?
That erases the code. If the car is going to a shop, leave the code stored until someone has written it down.
Is P0420 an oxygen sensor?
The definition is catalyst efficiency below threshold. Plugs fixed one car. A converter fixed another. New oxygen sensors failed to fix a third. Read the code, then the recent work, before you buy the sensor.
Why is the cruise control light flashing with the check engine light?
On the WRX and STI cars in this pattern, the cruise lamp often flashes along with the check engine light. It is not a separate diagnosis. Read the stored code. If the code was already cleared, the shop can see the lamps and an empty memory.
Will tightening the gas cap turn the light off?
Only when the code is an evaporative leak, such as P0457. Click the cap several times, do not overfill, and give it drive cycles. A tighter cap does not clear a catalyst code or a misfire.
Leave a comment