P0021 on 2012-2019 Subaru Impreza: AVCS Timing Over-Advanced Causes and Fixes
On a 2012-2019 Subaru Impreza, code P0021 is almost always caused by low/dirty engine oil or a failing Oil Control Valve (OCV) for the driver's side intake camshaft. An oil change with 0W-20 synthetic oil or a new OCV solenoid (OEM Part #10921AA231, around $95-$130) is the most likely fix.
- P0021 on a 2012-2019 Impreza points to an over-advanced intake camshaft on the driver's side.
- Before buying any parts, check your oil level and quality. An oil change with 0W-20 synthetic oil is the cheapest and often most effective first step.
- The most common failed part is the Oil Control Valve (OCV) solenoid for Bank 2.
- A flashing cruise control light is normal when the Check Engine Light is on and does not indicate a separate problem.
- If you hear engine rattling, stop driving and have the vehicle professionally inspected for potential timing chain issues.
What's Unique About the 2012-2019 Subaru IMPREZA

The 2012-2019 Impreza uses the FB20 engine, which, like many modern direct-injection engines, is sensitive to oil quality and level. The AVCS system uses oil pressure to adjust cam timing, so delayed oil changes or low oil levels are a very common trigger for P0021 on this platform. Unlike older EJ-series engines, the FB20 has a timing chain, not a belt, making jumped timing less common but not impossible. Owner complaints frequently mention this code appearing with a flashing cruise control light 🎬 See why this code triggers your cruise control light to flash., which is a standard Subaru feature to alert the driver of a Check Engine Light.
Diagnostic Flowchart

Tap your situation to follow the diagnostic path that matches what you're seeing on this vehicle.
Generation note: This range covers the fourth generation (2012-2016) and the fifth generation (2017-2019) of the Subaru Impreza. Both generations use a 2.0L FB20 boxer engine, and the causes and fixes for P0021 are consistent across these years.
Symptoms You May Notice
- Check Engine Light is on
- Flashing cruise control light
- Rough idle or stalling
- Reduced engine power and acceleration
- Poor fuel economy
- Engine rattling or knocking noise, especially on startup or at low RPM.
- Replacing the camshaft position sensor when the actual problem is the Oil Control Valve or dirty oil.
- Replacing the timing chain or phasers before thoroughly diagnosing the oil pressure and OCV system.
- Assuming the issue is severe mechanical failure before performing an oil change and OCV swap test.
Most Likely Causes

- Low or Dirty Engine Oil 🔴 High Probability The AVCS system is hydraulic and highly dependent on clean oil at the correct pressure to function. Sludge from infrequent oil changes can clog passages and the Oil Control Valve (OCV) solenoid, causing slow response or sticking.
How to confirm: Check the oil level on the dipstick. If it's low, top it off. Check the oil's condition; if it's dark, gritty, or smells burnt, it's overdue for a change. Many owners report the code appearing simply due to extended oil change intervals.
Typical fix: Change the engine oil and filter using the correct viscosity oil (0W-20 synthetic). Clear codes and drive to see if the issue is resolved.
Est. part cost: $40-$80 - Faulty Oil Control Valve (OCV) / AVCS Solenoid 🔴 High Probability The OCV can fail electrically or become mechanically stuck from oil sludge, preventing it from correctly regulating oil flow to the cam phaser. This is the most common mechanical failure for this code.
How to confirm: Swap the Bank 2 (driver's side) OCV with the Bank 1 (passenger's side) OCV, as recommended in TSB 02-132-12R. Clear the codes and drive. If the code changes to P0011 (Bank 1), the OCV is bad. You can also test the solenoid's resistance with a multimeter; it should be between 6.9-7.9 ohms. 🎬 Watch: How to diagnose a solenoid that isn't activating properly.
Typical fix: Replace the Bank 2 (driver's side) intake OCV solenoid and its O-ring.
Est. part cost: $95-$130 - Clogged Banjo Bolt Filter Screen 🟡 Medium Probability While a more notorious issue on older turbo EJ engines, the FB20 still has small filter screens in the oil system that can become clogged with debris, starving the AVCS system of oil pressure. These screens can also break apart and send debris into the OCV.
How to confirm: Remove the banjo bolt for the Bank 2 AVCS oil line and inspect the small filter screen inside. Access can be difficult.
Typical fix: Clean or remove the filter screen. Many technicians and forum users recommend removing them entirely to prevent future clogging, a practice supported by TSBs for older Subaru models.
Est. part cost: $0-$5 - Faulty Camshaft Position Sensor ⚪ Low Probability
How to confirm: A failing sensor will usually throw its own specific codes (like P0345-P0349). If no other codes are present, this is less likely to be the root cause.
Typical fix: Replace the Bank 2 camshaft position sensor.
Est. part cost: $30-$70
Rare But Worth Checking
- Stretched Timing Chain or Failed Phaser: This is a more serious mechanical issue. It's often accompanied by a rattling noise on startup or during operation, as reported in NHTSA ODI #11372308. This is a complex repair and should be diagnosed by a professional.
- Damaged AVCS Cam Sprocket/Phaser: The cam sprocket itself, which is hydraulically adjusted by the OCV, can fail internally. This can be due to contamination or mechanical wear. Diagnosis often requires ruling out all other possibilities first and may involve significant engine disassembly.
Diagnosis Steps
- Read the codes with an OBD-II scanner and confirm P0021 is present. Note any other codes, like P0011 or P000C.
- Check the engine oil level and condition. If low, dirty, or past its service interval, perform an oil and filter change with manufacturer-specified 0W-20 synthetic oil. Clear codes and test drive.
- If the code returns, locate the Bank 2 (driver's side) intake Oil Control Valve (OCV). It's on the front of the engine, typically held by two 10mm bolts.
- Inspect the OCV's electrical connector for oil contamination or damage. Clean with electrical contact cleaner if necessary.
- For a definitive test, swap the Bank 2 OCV with the identical Bank 1 (passenger side) OCV. Per TSB 02-132-12R, you must use a new O-ring and backer ring for each solenoid upon reinstallation. Clear the codes and drive the vehicle.
- If the code returns as P0011, the OCV you moved is faulty and must be replaced.
- If the code remains P0021, the problem is likely a clogged oil passage (like a banjo bolt filter), a wiring issue to the Bank 2 OCV, or a more serious mechanical issue with the cam phaser or timing chain.
- If all else fails, seek a professional diagnosis to check timing chain alignment and cam phaser operation using specialized tools.
Parts You'll Likely Need

- Oil Control Valve / AVCS Solenoid
(OEM #10921AA231 (supersedes 10921AA230, 10921AA220))— This solenoid is the most common point of failure. It gets stuck or clogged, preventing correct oil flow to the cam phaser.
Trusted brands: Subaru (Genuine OEM), Denso, Dorman
OEM price range: $95-$130
Aftermarket price range: $40-$80 - Engine Oil and Filter — Low or dirty oil is a primary cause of this code. Using the correct 0W-20 synthetic oil is critical for the AVCS system.
Trusted brands: Idemitsu (OEM supplier), Mobil 1, Pennzoil
OEM price range: $50-$90
Aftermarket price range: $40-$70
Related Codes That Often Appear With This One
- P0011 — This is the same timing over-advanced code but for Bank 1 (passenger side). Seeing P0011 and P0021 together often points to a systemic oil issue (low level, low pressure, or severe sludge) rather than a single component failure.
- P000C — This code means "'A' Camshaft Position Slow Response Bank 2". It indicates the camshaft is not moving to its target position as quickly as expected, which is often caused by the same oil flow issues (clogged OCV, low pressure) that trigger P0021. This pairing strongly suggests a hydraulic/oil-related problem. This combination was reported in NHTSA ODI #11535485.
Technical Service Bulletins (TSBs) & Recalls
- 02-132-12R: DIAGNOSIS AND REPAIR FOR AVCS-RELATED DTCS P000A, P000B, P000C, P000D, P0011, P0014, P0021 AND P0024
Platform-Specific Known Issues
- Subaru issued Technical Service Bulletin (TSB) #02-132-12R, which provides updated diagnostic procedures for AVCS-related codes including P0021. It acknowledges contamination in the OCV or cam sprocket as a possible cause and outlines the OCV swap as a key diagnostic step.
- Owner complaint NHTSA ODI #11428911 reports P0021 appearing with P0011, pointing towards a common oil-related problem.
- Owner complaint NHTSA ODI #11535485 shows P0021 appearing with P000C, a combination that strongly suggests a slow response from the Bank 2 camshaft due to oil flow issues.
Mechanic-Grade Diagnostic Values
- Oil Control Valve (AVCS Solenoid) Coil Resistance — expected: 6.9 - 7.9 Ohms at 68°F (20°C). Failure: A reading outside this range (e.g., open circuit or short) indicates a faulty solenoid.
- Live Data: Commanded vs. Actual Camshaft Advance (Bank 2) — expected: The actual advance should closely follow the commanded target during engine operation.. Failure: A significant lag or deviation between the 'AVCS In Left' and 'AVCS In Target Final L' PIDs on a scan tool points to a hydraulic or mechanical issue.
Scan Tool Commands That Help
- Subaru Select Monitor (SSM) or equivalent professional scan tool (e.g., Autel): AVCS Solenoid Active Test / Bidirectional Control — This function allows the technician to manually command the OCV solenoid on and off while the engine is running. A corresponding change in engine idle and live data for cam angle confirms the solenoid is responding and oil passages are at least partially clear.
- Subaru Select Monitor (SSM) or equivalent: Live Data Monitoring for AVCS — After swapping OCVs between banks, monitoring 'AVCS In Left' vs 'AVCS In Right' is critical. If the problem (slow response or incorrect angle) moves to the other bank, it confirms the solenoid you moved is the faulty part.
Wiring & Ground Locations

- GE-1, GE-2 — Top center of the engine.. These are primary engine ground points. A poor ground here can cause erratic behavior in various engine sensors and actuators, including the OCVs and Camshaft Position Sensors.
- Engine Control Module (ECM) — Located on the right side of the dash, typically behind the glove box.. This is the source of the command signal to the OCV. Verifying wiring integrity between this module and the Bank 2 OCV connector is a key step if a new OCV does not solve the problem.
Real Owner Repair Stories
- Reddit user /u/Chippy569 (Subaru Technician) (2017 Subaru Legacy (Applies directly to Impreza with same engine family)) — Check Engine Light with codes P0021 and P000C.
❌ Tried (didn't work) An oil change was performed by the dealer, which only temporarily turned the light off.
✅ What actually fixed it The technician diagnosed the combination of codes as a classic symptom of a sludged or failing driver's side OCV solenoid. The recommended fix was to replace the solenoid (Part #10921AA231) and its associated O-rings. If that failed, the next step would be investigating a blocked oil passage or a faulty AVCS cam sprocket. - YouTube Channel 'Real Auto Solutions' (2010 Subaru WRX (EJ255 engine, but identical AVCS principle and failure mode)) — Check Engine Light with P0021.
❌ Tried (didn't work) Initial visual inspection and oil level check were inconclusive.
✅ What actually fixed it Upon removing the Bank 2 OCV, the technician found that the internal filter screen had disintegrated. Pieces of the metal screen were found inside the solenoid, jamming its internal spool valve. The definitive fix was to replace the entire OCV solenoid. The video also notes the importance of checking the other bank's solenoid for similar damage.
OEM Part Supersession History
10921AA220, 10921AA230→10921AA231— Updated design for improved reliability and performance.
Heads up: The parts are physically interchangeable, but using the latest revision (10921AA231) is highly recommended for longevity. The O-rings (Part #806944060 and #16677AA040) are sold separately and must be replaced.
Model Year Variations Within This Range
- 2012-2016: These models use the FB20B engine, which has multi-port fuel injection.
- 2017-2019: These models use the updated FB20D engine, which features direct fuel injection. While the AVCS system and causes for P0021 are the same, direct injection engines can be susceptible to carbon buildup on intake valves over time, which can cause similar symptoms like rough idle but is a separate issue.
Helpful Videos
We Have This Part in Stock
The information in this article is provided for general reference and educational purposes only. Vehicle specifications, procedures, and part compatibility can vary by production date, trim level, and region. Always consult your vehicle's factory service manual and verify part numbers before purchasing or performing repairs. Safety-critical components such as airbags, seat belts, and braking systems should be installed by a qualified professional.
- Subaru IMPREZA:
- 🎬 Helpful Videos
- 🛍️ Shop This Part
- What's Unique About the 2012-2019 Subaru IMPREZA
- Diagnostic Flowchart
- Symptoms You May Notice
- Most Likely Causes
- Rare But Worth Checking
- Diagnosis Steps
- Parts You'll Likely Need
- Related Codes That Often Appear With This One
- Technical Service Bulletins (TSBs) & Recalls
- Platform-Specific Known Issues
- Mechanic-Grade Diagnostic Values
- Scan Tool Commands That Help
- Wiring & Ground Locations
- Real Owner Repair Stories
- OEM Part Supersession History
- Model Year Variations Within This Range
- 🎟️ Get 5% Off