P0018 on 2018-2022 Subaru Crosstrek: Causes and Fixes for Camshaft Correlation Error
On a 2018-2022 Subaru Crosstrek, code P0018 is most often caused by low/dirty engine oil or the need for a simple software update from the dealer (TSB 09-120-24R). If oil and software are good, the next most likely cause is a faulty oil control valve (solenoid) on the driver's side of the engine (Part No. 10921AA23B), which costs about $80-$150 for the part.
- Always check your engine oil level and condition first; it's the easiest and cheapest potential fix.
- Ask a dealer about TSB 09-120-24. A simple software update might be all that is needed to fix the code.
- The problem is on the driver's side of the engine ('Bank 2'). The most common part to fail is the Oil Control Valve (OCV), not the sensor.
- Do not immediately assume you need an expensive timing chain replacement. This is the least likely cause and should only be considered after all other diagnostic steps have been exhausted.
- Multiple dashboard lights (Traction Control, Cruise Control) turning on with the Check Engine Light is normal for a Subaru and does not indicate additional problems.
What's Unique About the 2018-2022 Subaru CROSSTREK

For this specific generation of Crosstrek, Subaru has issued a Technical Service Bulletin (TSB 09-120-24R) acknowledging that this code can be falsely triggered by overly sensitive software logic. This TSB, revised as recently as March 2025, provides new ECM reprogramming files to enhance the self-diagnosis logic. Before assuming an expensive mechanical failure, it's critical to check if this ECM software update has been performed, as it was specifically released to fix this issue. Forum users confirm that dealers perform this flash to resolve the code. This makes the diagnostic approach different from vehicles where this code points almost exclusively to a mechanical or sensor fault.
🎬 Watch: DIY walkthrough for P0016 and P0018 correlation codes.Diagnostic Flowchart

Tap your situation to follow the diagnostic path that matches what you're seeing on this vehicle.
Symptoms You May Notice
- Check Engine Light is on
- Traction control light on (this system is disabled by default when a CEL is present)
- Flashing cruise control light (also disabled due to the CEL)
- Hill descent light on
- Rough or unstable idle
- Hesitation or stumbling during acceleration
- Reduced fuel economy
- Engine stalling
- Rattling or ticking noise from the engine
- Replacing the camshaft or crankshaft position sensors without first checking oil level/condition or investigating the TSB for the ECM reprogram.
- Assuming a stretched timing chain before testing the much cheaper and more accessible Oil Control Valves.
- Replacing parts without clearing the code and performing several drive cycles, as some codes may be stored as 'permanent' and require this to clear.
Most Likely Causes

- Low or Dirty Engine Oil 🔴 High Probability The Active Valve Control System (AVCS) is hydraulic and extremely sensitive to oil pressure and cleanliness. Low or sludged oil is a very common cause for this code on Subarus, as it can clog passages in the oil control solenoids or cam phasers.
How to confirm: Check the oil level on the dipstick. Inspect the oil's color and consistency. If it's low, dark, or thick, it needs to be changed. Many forum users recommend an oil change as the very first step.
Typical fix: Top up the oil to the correct level or perform a complete oil and filter change using the manufacturer-specified 0W-20 synthetic oil. Some users suggest an engine oil flush for persistent issues.
Est. part cost: $40-$80 - Outdated Engine Control Module (ECM) Software 🔴 High Probability → Shop Engine Control Module (ECM) Subaru released TSB 09-120-24R specifically for 2018-2022 Crosstreks (and other models) to fix faulty diagnostic logic that could erroneously trigger P0018, P0016, P0017, and P0019.
How to confirm: A Subaru dealer or a well-equipped independent shop can check the current software calibration ID against the one listed in the TSB. This is a known issue discussed frequently in owner forums.
Typical fix: Reprogramming the ECM with the updated software file provided by Subaru. This is typically a dealer-level fix.
Est. part cost: $0-$200 - Faulty Oil Control Valve (OCV) / VVT Solenoid 🟡 Medium Probability → Shop Engine Variable Valve Timing (VVT) Solenoid The OCV can become clogged with sludge or fail electronically, preventing it from correctly regulating oil flow to the cam phaser. It's a common failure point in VVT systems and a widely reported fix in forums.
How to confirm: The valve for Bank 2, Sensor A (intake) is on the driver's side, top position. It can be removed and tested for resistance (typically 6.9-7.9 ohms). A common DIY method is swapping it with the identical valve from the passenger side (Bank 1) to see if the code follows and changes to P0016.
Typical fix: Replace the faulty Oil Control Valve. The OEM part number is 10921AA23B, which supersedes 10921AA23A.
Est. part cost: $80-$150 - Faulty Camshaft Position Sensor ⚪ Low Probability → Shop Engine Camshaft Position Sensor Like any sensor, it can fail and send incorrect data to the ECM. It's less common than an OCV failure but is a known cause. One user on a forum noted finding metallic particles on the sensor tip, indicating other potential issues.
How to confirm: The sensor for Bank 2, Sensor A (intake) is on the driver's side. It can be swapped with the sensor from the passenger side to see if the code changes to P0016. It can also be tested with a multimeter for resistance, which should be between 1 to 4 kilo-ohms for many Subaru models.
Typical fix: Replace the faulty camshaft position sensor.
Est. part cost: $50-$100
Rare But Worth Checking
- Stretched Timing Chain or Failed Tensioner: → Shop Engine Timing Chain This is the most serious and expensive possible cause. It typically occurs at higher mileage or if oil changes have been neglected. If you hear a rattling noise from the front of the engine, this becomes more likely. Some mechanics report this is a common fix for this code.
- Failed Camshaft Phaser/Sprocket: → Shop Engine Camshaft The sprocket itself can fail internally, getting stuck in one position. This requires significant labor to replace as the timing cover must be removed. A dealership quoted one owner $3,100 for this repair on a 2015 model with both P0016 and P0018 codes.
Diagnosis Steps
- Check Engine Oil: Verify the oil level is full and the oil is clean. If in doubt, perform an oil and filter change with Subaru-specified 0W-20 oil. This is the first step recommended in multiple forums and by mechanics.
- Check for TSBs: Ask a Subaru dealer or qualified shop to check if TSB 09-120-24R (ECM Reprogram) applies and has been performed. This is a critical, vehicle-specific step.
- Inspect Wiring: Visually inspect the wiring and connector for the intake camshaft position sensor and the oil control valve on the driver's side (Bank 2) for any damage, corrosion, or oil contamination. Rodents chewing wires is a known possibility.
- Test the Oil Control Valve (OCV): The Bank 2 intake OCV is the top solenoid on the driver's side. Swap it with the passenger's side intake OCV. Clear the codes and drive the vehicle. If the code changes to P0016, the OCV is bad and needs to be replaced. You can also test its resistance, which should be between 6.9 and 7.9 ohms.
- Test the Camshaft Position Sensor: If the OCV swap does not isolate the problem, perform the same swap test with the camshaft position sensors. If the code moves to P0016, the sensor is faulty.
- Mechanical Timing Inspection: If all previous steps fail to resolve the code, the issue is likely mechanical. A professional technician should inspect the timing chain, guides, tensioners, and cam phasers for wear or damage. This is an advanced, labor-intensive job.
Parts You'll Likely Need
- Oil Control Valve (VVT Solenoid)
(OEM #10921AA23B)— This valve controls oil flow to the cam phaser and is a frequent point of failure, either by clogging or electronic malfunction. It's a primary cause after oil issues and software are ruled out.
Trusted brands: Subaru (OEM), Denso, Hitachi
OEM price range: $120-$160
Aftermarket price range: $70-$110 - Camshaft Position Sensor
(OEM #22053AA151)— Can fail and send incorrect timing data to the ECM. It's a common diagnostic step to replace this if the OCV is confirmed to be good.
Trusted brands: Subaru (OEM), Bosch, NTK
OEM price range: $80-$120
Aftermarket price range: $40-$80 - Timing Chain Kit — In high-mileage or poorly maintained engines, the chain can stretch, causing a permanent correlation fault that sensors and solenoids cannot fix. This is a major repair.
Trusted brands: Subaru (OEM), Aisin
OEM price range: $500-$800
Aftermarket price range: $300-$500
Related Codes That Often Appear With This One
- P0016 — This is the equivalent code for Bank 1 (passenger side). Seeing both P0016 and P0018 together often points to a systemic issue like low/dirty oil, an ECM software problem, or a stretched timing chain affecting the whole engine.
- P0017, P0019 — These are the correlation codes for the exhaust camshafts ('B' sensors). Seeing them with P0018 can also indicate a widespread timing issue or the need for the ECM reprogram mentioned in TSB 09-120-24R.
Technical Service Bulletins (TSBs) & Recalls

- Announces availability of new reprogramming files for the ECM to remedy DTCs P0016, P0017, P0018, and P0019 due to overly sensitive diagnostic logic. Applies to 2018-22 Crosstrek, 2017-22 Impreza, and other models.
Platform-Specific Known Issues
- Subaru Technical Service Bulletin 09-120-24R announces an ECM reprogram specifically to remedy DTC P0018 (among others) on 2018-2022 Crosstreks, indicating a known software logic issue.
- When the Check Engine Light illuminates, Subaru's vehicle dynamics control system automatically disables traction control, stability control, and cruise control, causing multiple warning lights to appear on the dashboard.
- The OCVs for intake and exhaust on the same bank are located one above the other. For P0018, which is Bank 2 Sensor 'A' (Intake), the correct solenoid is the top one on the driver's side.
Mechanic-Grade Diagnostic Values
- Oil Control Valve (OCV) / VVT Solenoid Resistance — expected: 6.9 - 7.9 Ohms at 68°F (20°C). Failure: A reading outside this range indicates a faulty solenoid coil.
- Camshaft Position Sensor Resistance — expected: 1.0 - 4.0 kΩ (kilo-ohms). Failure: A reading outside this range, or an open circuit, indicates a failed sensor.
- AVCS Live Data at Idle (Cobb Accessport) — expected: AVCS Left (Bank 2) and AVCS Right (Bank 1) should both read near 0-5 degrees.. Failure: One side reading a high value (e.g., 50 degrees) while the other is near zero points to a stuck phaser or faulty OCV on the high-reading bank.
- Mechanical Timing Check via Live Data — expected: With the OCVs unplugged, the camshaft position sensor value should be close to 0° at idle.. Failure: A value of positive or negative 10° (or a multiple) suggests the timing chain has skipped a tooth.
Hidden / Shadow Codes Worth Checking
- Permanent DTC (P-code): After a repair, a standard OBD-II scanner may clear the 'active' and 'pending' P0018 code, but a 'permanent' version may remain stored in the ECM. This permanent code does not keep the check engine light on but can cause confusion. It will only clear itself after the vehicle's internal monitors have successfully run over several drive cycles. (see via Visible with more advanced scan tools that can differentiate between active, pending, and permanent fault codes.)
Scan Tool Commands That Help
- Subaru Select Monitor (SSM) or advanced aftermarket scanner (e.g., Autel): Clear Learned VVT Values / Test Mode DTC Clear — After replacing an OCV or other timing component, the ECM may retain old learned values, preventing the code from clearing. Some aftermarket tools have a special procedure involving a diagnostic fuse to force-clear permanent codes that don't clear with a standard command.
- Subaru Select Monitor (SSM) or equivalent: AVCS Duty Cycle Command / Actuator Test — This bidirectional command allows a technician to manually activate the OCV solenoid and observe the change in camshaft angle via live data. This directly tests the solenoid's and phaser's hydraulic response, confirming if the circuit and parts are working.
Wiring & Ground Locations
- Main ECU Grounding Point — On the top of the intake manifold.. The ECU and its sensors rely on a clean ground reference. On many Subarus, the main ECU ground is on the intake manifold. A poor connection here can cause erratic sensor readings and phantom codes, including timing correlation faults.
- Engine Harness to Bulkhead Harness Connection — In the engine bay, where the harness on the engine block connects to the main body harness that passes through the firewall.. This is a critical connection point for all engine sensor signals, including the cam and crank sensors, on their way to the ECU. Corrosion or damage at this junction can disrupt signals and trigger correlation codes.
Real Owner Repair Stories
- Reddit user in r/WRX (Subaru WRX (similar FA engine and AVCS system)) — P0018 code appeared but the car ran fine.
❌ Tried (didn't work) Initial diagnosis pointed to cam sensor or OCV solenoid.
✅ What actually fixed it The user replaced both the OCV solenoid and the camshaft position sensor. However, the code returned. The final resolution came after using a different, more advanced scan tool that could see and clear the 'permanent' DTC. After clearing the permanent code and performing several drive cycles, the code did not return, suggesting the initial parts replacement had worked but the stubborn code needed a specific clearing procedure. - Reddit user in r/WRX (2017 WRX with 126,000 miles) — P0018 code, car sounds and runs fine.
❌ Tried (didn't work) Swapping cam position sensors from left to right., Swapping OCVs (solenoids) from left to right., Getting an oil change.
✅ What actually fixed it The user discovered that P0018 can be a permanent code that standard clearing doesn't remove. The fix was to use an Autel scan tool, put the car in a diagnostic mode using a fuse, and then use the scan tool's 'test mode' to clear the DTC. The code did not return, indicating no mechanical fault was present.
When the Usual Fixes Don't Work
- While the most common fixes are oil, software, or an OCV solenoid, multiple owner accounts exist where these steps did not solve the problem. In one case, a user swapped both sensors and OCVs from side-to-side with no change in the P0018 code. The final solution was a specific procedure using an advanced scan tool to clear a 'permanent' version of the code that persisted after the initial fault was fixed, highlighting that sometimes the problem is residual data in the ECM, not the parts themselves.
OEM Part Supersession History
10921AA23A→10921AA23B— Standard part revision for improved reliability or manufacturing process change.
Heads up: The new part (10921AA23B) is a direct replacement for the old one and is fully compatible.
Model Year Variations Within This Range
- 2021-2022: The 2.5L FB25D engine became available on Sport and Limited trims. While larger, it uses the same Dual AVCS technology and components like the OCV (10921AA23B) are shared with the 2.0L FB20D. The causes and diagnostic procedures for P0018 remain identical between the two engines.
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 CROSSTREK:
- 🧭 Diagnostic Flowchart
- 🎬 Helpful Videos
- 🛍️ Shop This Part
- What's Unique About the 2018-2022 Subaru CROSSTREK
- 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
- Hidden / Shadow Codes Worth Checking
- Scan Tool Commands That Help
- Wiring & Ground Locations
- Real Owner Repair Stories
- When the Usual Fixes Don't Work
- OEM Part Supersession History
- Model Year Variations Within This Range
- 🎟️ Get 5% Off