Go-Parts
Cart 0
Your cart is empty
Add an item to see it appear here.
Wrenchy
Go-Parts Garage
Expert guides for diagnosing, troubleshooting, and replacing auto parts Expert guides for diagnosing and replacing auto parts
Browse All Articles →
🧭 Diagnostic Flowchart 🎬 Helpful Videos 🛍️ Shop This Part

P0018 on 2013-2020 Subaru Impreza: Crank/Cam Correlation Causes and Fixes

On a 2013-2020 Subaru Impreza, code P0018 is most often caused by low or dirty engine oil, or a failing oil control valve (OCV) on the driver's side. An oil change and a new OCV can often fix the issue for under $100. If these simple fixes don't work, the cause could be a stretched timing chain or a failed cam sprocket, which are more expensive repairs.

17 minutes to read 2013-2020 Subaru IMPREZA
Most Likely Cause
Low or Dirty Engine Oil
Est. Time
4.2 hrs
Shop Labor
$150 – $2300
Parts Price
$30 – $600
⚠️ Drivable, but... — You can drive, but expect reduced power, poor fuel economy, and a rough idle. Many owners report the car entering a 'limp mode' where acceleration is heavily restricted. Ignoring the code could lead to more severe engine damage if the underlying cause is a failing timing chain or cam sprocket.
Key Takeaways
  • Start with the basics: P0018 on your Impreza is very often caused by low or dirty oil. Check and change your oil first.
  • The most likely failed part is the Oil Control Valve (OCV) on the driver's side of the engine, not the sensor itself.
  • Before expensive repairs, ask a dealer if your car has the latest engine software, as a simple update might fix the problem per Subaru's own service bulletins.
  • If the oil is clean and the OCV is good, the issue could be a more serious mechanical problem like a stretched timing chain, which requires professional diagnosis.
The trouble code P0018 stands for 'Crankshaft Position - Camshaft Position Correlation Bank 2 Sensor A'. This means your Impreza's Engine Control Module (ECM) has detected that the rotation of the intake camshaft on Bank 2 is out of sync with the rotation of the crankshaft. Bank 2 on a Subaru boxer engine is the driver's side (Left Hand side), and 'Sensor A' refers to the intake camshaft. This system, known as AVCS (Active Valve Control System), is critical for adjusting valve timing to optimize performance and fuel economy.

What's Unique About the 2013-2020 Subaru IMPREZA

Engine bay of a 2013-2020 Subaru Impreza showing the FB20 boxer engine layout.
The FB20 boxer engine in the 2013-2020 Impreza. Note that 'Bank 2' refers to the driver's side (Left Hand) of the engine, where the P0018 code originates.

On the Subaru Impreza with its FB20 boxer engine, "Bank 2" specifically refers to the driver's side (Left Hand) of the engine. This code is particularly sensitive to oil level and quality, as the variable valve timing system (Subaru's AVCS) is hydraulically operated by oil pressure. Notably, Subaru has issued Technical Service Bulletins (TSBs) indicating that this code can sometimes be resolved with an ECM software update, suggesting the original diagnostic logic was too sensitive or that learned values need to be reset after a repair.

Diagnostic Flowchart

Mechanic removing an oil control valve from the top of an engine for testing.
A highly effective diagnostic step for P0018 is swapping the Bank 2 intake OCV with the Bank 1 OCV to see if the code follows the part.

Tap your situation to follow the diagnostic path that matches what you're seeing on this vehicle.

What is the condition of your engine oil and Oil Control Valve?
→ Change the oil using an OEM filter and 0W-20 full synthetic oil ($30-$70). Clear the code and drive.
→ Swap the Bank 2 (driver's side) intake OCV with the Bank 1 OCV. Clear codes and see if P0016 appears.
→ Replace the faulty Oil Control Valve (OEM 10921AA231) and gasket (10924AA011) for roughly $50-$120.
Is your engine control module software updated per recent Subaru TSBs?
→ Contact a dealer to check your VIN for TSBs #09-120-24R or #11-127-13R and reprogram the ECM ($0-$200).
→ Swap camshaft sensors to test. If P0018 persists, get a mechanical inspection for a stretched timing chain ($972-$2000+).

Generation note: This range covers the fourth generation (2013-2016) and the fifth generation (2017-2020) of the Subaru Impreza. Both generations use a version of the 2.0L FB20 engine (FB20B for the 4th gen, FB20D for the 5th gen), so the causes and fixes for P0018 are largely identical.

Symptoms You May Notice

Subaru Impreza instrument cluster with the Check Engine, Traction Control, and Cruise Control lights illuminated.
Subarus are notorious for disabling cruise control, traction control, and hill assist when a Check Engine Light is triggered, resulting in a dashboard full of warning lights.
  • Check Engine Light is on
  • Traction control, hill assist, and cruise control lights may also illuminate or flash
  • Rough or unstable idle
  • Reduced engine power and poor acceleration, sometimes described as 'limp mode'
  • Decreased fuel economy
  • Engine stalling or hesitation
  • Rattling or ticking noise from the engine, particularly from the front timing cover area
⚠️ Don't Waste Money on the Wrong Fix
  • Replacing the camshaft or crankshaft position sensors immediately without first checking the oil level/condition or testing the Oil Control Valve.
  • Performing a costly timing chain replacement when the actual issue was a simple software update or a clogged, inexpensive OCV solenoid.
  • Replacing parts without clearing the code and performing several drive cycles, as some scan tools report a 'permanent' code that only clears after the ECM verifies the fix.

Most Likely Causes

Comparison of a clean, new oil control valve and a failed, sludge-clogged oil control valve.
The AVCS system relies on clean oil. A sludged or clogged Oil Control Valve (right) restricts oil flow to the cam phaser, triggering correlation codes like P0018.
  1. Low or Dirty Engine Oil 🔴 High Probability The AVCS (VVT) system uses oil pressure to adjust cam timing. Low, dirty, or incorrect viscosity (0W-20 is specified) oil prevents the cam phasers from operating correctly, causing a correlation error.
    How to confirm: Check the oil level and condition on the dipstick. If it's low, dark, or past its service interval, this is the first and most crucial step.
    Typical fix: Change the engine oil and filter using a quality OEM filter and the correct full synthetic 0W-20 oil. Some owners recommend an engine oil system flush before the oil change if the oil is particularly dirty.
    Est. part cost: $30-$70
  2. Faulty Oil Control Valve (OCV) / VVT Solenoid 🔴 High Probability → Shop Engine Variable Valve Timing (VVT) Solenoid The OCV for the Bank 2 intake cam is a very common failure point. It can become clogged with sludge or fail electrically, preventing proper oil flow to the cam phaser.
    How to confirm: Swap the Bank 2 (driver's side) intake OCV with the Bank 1 (passenger's side) intake OCV. They are identical parts. Clear the codes and drive. If the code changes to P0016 (Bank 1 correlation), the OCV is confirmed bad.
    Typical fix: Replace the Bank 2 intake oil control valve and its associated gasket. It is a simple repair with two bolts and is easily accessible on top of the engine. 🎬 Watch: How to replace and upgrade your oil control valve.
    Est. part cost: $50-$120
  3. Outdated Engine Control Module (ECM) Software 🟡 Medium Probability → Shop Engine Control Module (ECM) Subaru has released TSBs #09-120-24R and #11-127-13R specifically to address this and related codes with a software update, suggesting the original diagnostic logic was too sensitive or that learned values can get 'stuck'.
    How to confirm: A Subaru dealership or a well-equipped independent shop can check your vehicle's VIN against the TSBs and verify the current software (CID) number.
    Typical fix: Reprogram the ECM with the updated file. In some cases, even after a mechanical repair like an OCV replacement, the ECM's learned values may need to be reset by the dealer.
    Est. part cost: $0-$200 (cost varies by dealer, may be covered under emissions warranty)
  4. Stretched Timing Chain or Failed Tensioner ⚪ Low Probability → Shop Engine Timing Chain While less common than oil-related issues, wear and tear over higher mileage (often cited above 75k-100k miles) can cause the timing chain to stretch, creating a persistent correlation error that won't be fixed by sensors or solenoids.
    How to confirm: This is a complex diagnosis often made after all other possibilities are eliminated. A mechanic may listen for chain slap noise from the front cover or measure cam deviation with an advanced scan tool. Visual inspection requires removing the timing cover. 🎬 See this walkthrough of the FB engine timing chain installation.
    Typical fix: Replace the timing chain, tensioners, and guides. This is a labor-intensive job.
    Est. part cost: $300-$600 for parts, with total repair costs reported from $972 to over $2000.
  5. Faulty Camshaft or Crankshaft Position Sensor ⚪ Low Probability → Shop Engine Crankshaft Position Sensor While sensors can fail, they are less likely to be the root cause for this specific correlation code compared to oil flow issues or mechanical timing problems.
    How to confirm: Sensors can be tested with a multimeter or by observing their live data on a scan tool. Swapping the suspect Bank 2 intake cam sensor with the Bank 1 sensor is a valid diagnostic step to see if the code changes to P0016.
    Typical fix: Replace the faulty sensor (either the Bank 2 intake camshaft sensor or the crankshaft position sensor).
    Est. part cost: $40-$100

Rare But Worth Checking

  • Failed Camshaft Phaser (Sprocket): → Shop Engine Camshaft The VVT sprocket itself can fail mechanically, getting stuck, or the small plunger and spring mechanism inside can break. This is a significant mechanical repair requiring timing cover removal. In one documented case, replacing the cam sprockets was the ultimate fix after a timing chain replacement failed to solve the issue.
  • Clogged OCV Filter Screen: There are small, thimble-shaped filter screens for the VVT system located in the oil passages within the cylinder heads, often inside banjo bolts. These can become clogged with debris, especially after an internal engine failure, starving the OCV of oil. Cleaning or replacing these can sometimes resolve the issue.
  • Frayed Wiring Harness: In some cases, the wiring harness leading to the camshaft sensor or OCV can become frayed or damaged by rodents, causing an intermittent connection and triggering the code.

Diagnosis Steps

  1. Check Engine Oil: Verify the oil level is full and the oil is clean and of the correct 0W-20 viscosity. If in doubt, perform an oil and filter change with a Subaru OEM filter, clear the code, and drive.
  2. Scan for Other Codes: Check for any other related trouble codes that could point to a specific area.
  3. Inspect OCV and Sensor Wiring: Visually inspect the wiring harnesses for the Bank 2 (driver's side) intake camshaft sensor and oil control valve for any damage, oil contamination in the connectors, or loose connections.
  4. Test the Oil Control Valve (OCV): Swap the Bank 2 (driver's side) intake OCV with the Bank 1 (passenger's side) intake OCV. They are identical and easily accessible. Clear the codes and drive. If the code returns as P0016, the OCV is faulty and needs replacement. This is the most effective diagnostic step.
  5. 🎬 Watch: A guide to testing and fixing P0018 correlation codes.
  6. Check for TSBs/Software Updates: Contact a Subaru dealer with your VIN to see if your ECM needs a software update as specified in TSBs #09-120-24R or #11-127-13R.
  7. Test the Camshaft Position Sensor: If the OCV is good, you can swap the Bank 2 intake camshaft position sensor with the sensor from the other bank to see if the code follows.
  8. Advanced Mechanical Inspection: If all else fails, the issue is likely mechanical. A trusted mechanic should inspect the timing system. This could range from a stretched timing chain to a failed cam sprocket, both requiring significant labor.

Parts You'll Likely Need

  • Oil Control Valve (VVT Solenoid) (OEM #10921AA231 (supersedes 10921AA230, 10921AA220)) — This part is a very common failure point, either by becoming clogged with oil sludge or failing electrically. It's a primary suspect after confirming good oil condition.
    Trusted brands: Subaru (Genuine), Denso, Dorman
    OEM price range: $90-$150
    Aftermarket price range: $40-$90
  • Gasket - Oil Control Valve (OEM #10924AA011) — This small gasket should be replaced whenever the Oil Control Valve is removed to prevent oil leaks.

Related Codes That Often Appear With This One

  • P0016 — This is the same correlation error but for Bank 1 (passenger's side). Seeing both P0016 and P0018 simultaneously strongly points to a systemic issue like low/dirty oil, a stretched timing chain, or failed cam sprockets affecting the entire engine.
  • P0017 — This is a correlation error for the exhaust camshaft on Bank 1. The provided TSBs group these codes together as having similar diagnostic paths and often being solved by the same ECM reprogram.
  • P0019 — This is a correlation error for the exhaust camshaft on Bank 2. The provided TSBs group these codes together as having similar diagnostic paths.

Technical Service Bulletins (TSBs) & Recalls

  • Announces availability of new ECM reprogramming files to remedy DTCs P0016, P0017, P0018, and P0019, suggesting the original logic was too sensitive. This applies to 2017-2022 Impreza models.
  • Provides updated ECM reprogramming files and diagnostic procedures for DTCs P0016, P0017, P0018, and P0019 on 2013 Impreza and XV Crosstrek models.
  • Addresses an out-of-spec clearance on the camshaft position sensor (CPS) that can cause these codes on early FB engines. It provides inspection and repair procedures.

Platform-Specific Known Issues

  • Owner Experience: The Persistent P0018: On Reddit, a 2019 Crosstrek owner with 80k miles reported a persistent P0018 code despite having no noticeable driving symptoms. The owner, an experienced DIYer, performed all the common fixes: swapped the VVT solenoid with an OEM part, swapped cam sensors between banks, changed the oil with OEM 0W-20 and a new filter, and cleaned all electrical connections. The code continued to return immediately after being cleared, leading to frustration and the likelihood of needing a dealer visit for deeper diagnostics, possibly related to ECM learned values or a hidden mechanical issue.
  • Owner Experience: Timing Chain vs. Cam Sprocket: → Shop Engine Timing Chain The owner of a 2015 Crosstrek with 118k miles and both P0016/P0018 codes was quoted over $3,000 by the dealer for cam sprocket replacement. Seeking a second opinion, a local mechanic first replaced the timing chains for $2,300, but this did not fix the issue. The mechanic then proceeded to replace the cam sprockets, which finally resolved the check engine light. This highlights a worst-case scenario where the phasers themselves are the point of failure, a costly repair that can be misdiagnosed as a timing chain issue alone.

Mechanic-Grade Diagnostic Values

  • Oil Control Valve (OCV) Solenoid Resistance — expected: 6.9 to 7.9 Ohms at 68°F (20°C). Failure: A reading of 0 ohms (short) or infinite/OL (open) indicates a failed solenoid coil.
  • Engine Oil Pressure (Warm Engine) — expected: Greater than 10 PSI at idle; Greater than 30 PSI at 3000 RPM. Failure: Pressure below these thresholds indicates a systemic oiling problem (e.g., pump, pickup, clogs) that will trigger VVT codes.
  • Camshaft/Crankshaft Sensor Resistance — expected: Varies significantly by model and sensor type (2-pin vs 3-pin Hall effect). Some older models specify 950-1250 ohms.. Failure: While an open or shorted sensor is bad, resistance tests on modern Hall-effect sensors can be inconclusive. A voltage output test (heartbeat test) while cranking is more reliable.

Hidden / Shadow Codes Worth Checking

  • Mode 6, MID $36, TID $8B/$8C: These are Test IDs within OBD-II Mode 6 data that specifically monitor the AVCS (VVT) system correlation for Bank 2. 'MID $36' is for Bank 2, and the TIDs correspond to specific camshaft timing checks. (see via A professional scan tool like the Subaru Select Monitor (SSM) is required. Navigate to OBD Mode $06. A diagnostic value ('Val.') of 1000 or greater indicates a confirmed fault in the system.)

Scan Tool Commands That Help

  • Subaru Select Monitor (SSM) or equivalent advanced scan tool: AVCS Actuator Test (for Bank 2 Intake) — This command directly energizes the OCV solenoid. If the solenoid is working, the engine should hesitate or stall. If there is no change in engine operation, it confirms the OCV is stuck or the oil passage is blocked, helping to isolate the fault.
  • Subaru Select Monitor (SSM) or equivalent advanced scan tool: Live Data PID: 'VVT Adv. Ang. Amount' — This allows you to monitor the actual advance angle of the camshaft in real-time. It should change based on engine RPM and load. If it is stuck at 0 or another value, it points to a stuck phaser or non-functional OCV.

Real Owner Repair Stories

  • Reddit user BigBlackWRX (2018 Subaru WRX (FA20 engine, similar AVCS system)) — P0018 code, but engine ran well.
    ❌ Tried (didn't work) Changing oil, Cleaning and swapping all 4 OCVs, Cleaning and swapping all 4 cam position sensors
    ✅ What actually fixed it The issue was a failed cam gear (phaser). A small metal plate behind the gear that holds a spring-tensioned plunger had popped out, preventing the gear from actuating. This required removing the timing cover and chains to replace the cam gear.
  • Reddit user Prestigious_Panic373 (Subaru WRX) — P0018 code, ticking noise at idle.
    ❌ Tried (didn't work) Initial clearing of the code with a basic scanner.
    ✅ What actually fixed it Replacing the Bank 2 oil control solenoid (OCV) fixed the ticking noise. The code reappeared but was stored as a 'permanent' DTC. After performing several drive cycles as required by the ECU, the permanent code cleared itself, confirming the fix was successful.
  • Reddit user TomatilloOpening8919 (Subaru Crosstrek (FB20 engine)) — P0018 code with associated dash lights (Check Engine, traction control, etc.).
    ❌ Tried (didn't work) Initial diagnosis pointed to multiple potential expensive causes.
    ✅ What actually fixed it The problem was solved by replacing the VVT (OCV) solenoid for Bank 2.

"I Checked Everything" — The Actual Cause

  • In one case, a user performed all the standard electrical and component swaps (OCV, cam sensor) with no success. The actual cause was a mechanical failure inside the cam phaser itself—a small plunger had broken—which is impossible to see without removing the timing cover.
  • A common point of confusion is when a part (like an OCV) is replaced and the code is cleared, but the Check Engine Light returns. This can be due to a 'permanent' DTC stored in the ECM, which requires multiple complete drive cycles to verify the fix before it will clear itself. The repair may be successful even if the light comes back on temporarily.

OEM Part Supersession History

  • 10921AA220, 10921AA23010921AA231 — Standard part revision and improvement by the manufacturer.
    Heads up: None found. The newest part number is a direct replacement for the older versions.

Model Year Variations Within This Range

  • 2013-2016 vs 2017-2020: The engine changed from the port-injected FB20B (4th gen) to the direct-injected FB20D (5th gen) starting in 2017. While this changed the fuel system, the underlying AVCS (VVT) mechanical and hydraulic control system that triggers P0018 remained fundamentally the same. The diagnostic path for this specific code is not significantly affected by the change in injection type.
DIY | 2005 - 2025 Subaru XV Crosstrek P0016 & P0018 Codes | Crankshaft & Camshaft Correlation Bank
DIY | 2005 - 2025 Subaru XV Crosstrek P0016 & P0018 Codes | Crankshaft & Camshaft Correlation Bank
Replace/upgrade FA20 FB20 oil control valve vvt
Replace/upgrade FA20 FB20 oil control valve vvt
How to Test & Fix P0018 Crankshaft - Camshaft Position Correlation Bank 2 Sensor A (Bank 2 - Intake)
How to Test & Fix P0018 Crankshaft - Camshaft Position Correlation Bank 2 Sensor A (Bank 2 - Intake)
2019 Subaru Crosstrek Premium FB20D 2.0L major overhaul part 2 timing chain assembly removal
2019 Subaru Crosstrek Premium FB20D 2.0L major overhaul part 2 timing chain assembly removal
Subaru FA/FB Series Engine Timing Chains: Removal & Installation
Subaru FA/FB Series Engine Timing Chains: Removal & Installation
Wrenchy
Article researched & written by
Go-Parts' AI research assistant. Every article is backed by live web research, verified OEM data, and real technician knowledge — so you get accurate, up-to-date information you can trust.
Meet Wrenchy → Updated May 25, 2026

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.

Year Coverage
This article covers the OBD-II Code P0018 for:
  • Subaru IMPREZA: 20132014201520162017201820192020
In this article
🧭 Diagnostic Flowchart
Jump to ▴

Email This Guide

We'll send you a link to this article so you can read it later or share it.

Added to cart · Part