P0018 on 2020-2022 Subaru Legacy: Crank/Cam Correlation Causes & Fixes
On a 2020-2022 Subaru Legacy with the 2.5L engine, code P0018 is frequently caused by a software glitch that requires an ECM reprogram from a Subaru dealer, as detailed in TSB #09-120-24R. Before replacing any parts, check your engine oil level and condition, as the AVCS system is highly sensitive to oil pressure. If the oil is clean and full, inquiring about this software update should be your next step.
- For a 2020-2022 Legacy, your first step for P0018 should be to ask a dealer about the ECM software update mentioned in TSB #09-120-24R.
- The second step is to check your engine oil. Low or dirty oil is a frequent and simple-to-fix cause.
- Do not replace the camshaft or crankshaft sensors unless you have proven they are faulty, typically by swapping them with the opposite bank to see if the code moves.
- This code disables other systems like cruise control as a safety measure, so seeing other warning lights is common.
- Ignoring the code could lead to significant engine damage if the cause is mechanical (e.g., timing chain), so it should be addressed promptly.
What's Unique About the 2020-2022 Subaru LEGACY
For this specific generation of Subaru Legacy with the 2.5L FB25D engine, the P0018 code has a well-documented history of being triggered by overly sensitive software in the Engine Control Module (ECM). Subaru has issued Technical Service Bulletin #09-120-24R to address this, recommending a software update as the primary fix. This is a crucial first step, as many owners might otherwise unnecessarily replace physical parts like sensors or solenoids. This issue is also common on platform mates like the Subaru Outback, Forester, and Crosstrek that use the same engine.
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
- Rough or unstable idle
- Reduced engine power and poor acceleration
- Decreased fuel economy
- Engine may hesitate or stall
- Engine rattling or ticking noises
- Replacing the camshaft or crankshaft position sensors without first checking for the ECM software update or addressing oil level/condition.
- Replacing the timing chain or cam phasers before thoroughly diagnosing the oil control valves and confirming the ECM has the latest software.
- Assuming the ECM itself is bad. While a rare possibility, it's more likely that the ECM simply needs the software update per TSB #09-120-24R or a reset of learned values after a mechanical repair.
Most Likely Causes
- Outdated Engine Control Module (ECM) Software 🔴 High Probability → Shop Engine Control Module (ECM) Subaru has officially acknowledged that the original ECM logic for monitoring the cam/crank correlation can be too sensitive, leading to false codes. TSBs #09-120-24 and the revised #09-120-24R were released to remedy this specific issue by enhancing the self-diagnosis logic.
How to confirm: Contact a Subaru dealership with your vehicle's VIN and ask if TSB #09-120-24R or #09-120-24 applies and if the update has been performed. The TSB is specifically applicable to 2020-22 Legacy and Outback models with the 2.5L engine.
Typical fix: A Subaru technician will reprogram the ECM with the updated software file. This is not a DIY repair and typically takes about an hour of labor.
Est. part cost: $0 - Low or Dirty Engine Oil 🟡 Medium Probability The AVCS (variable valve timing) system is hydraulic and extremely sensitive to oil pressure and cleanliness. Low or contaminated oil can prevent the cam phasers from adjusting timing correctly, or cause the Oil Control Valve to stick. This is a very common first point of failure for this code across all Subaru models.
How to confirm: Check the engine oil dipstick for proper level and inspect the oil for darkness, thickness, or debris. The recommended oil is 0W-20 synthetic.
Typical fix: Perform an oil and filter change using the manufacturer-specified oil viscosity (e.g., 0W-20 synthetic). In some cases, an engine flush may be recommended if significant sludge is suspected.
Est. part cost: $40-$80 - Faulty Oil Control Valve (OCV) / VVT Solenoid ⚪ Low Probability → Shop Engine Variable Valve Timing (VVT) Solenoid Sludge from infrequent oil changes can clog the small passages or filter screen in the OCV, causing it to stick or respond slowly. While less common than the software issue on these newer models, it's a frequent cause on Subarus in general. A failing OCV can sometimes produce a ticking sound.
How to confirm: A technician can test the solenoid's resistance (typically 6-12 ohms) or use a scan tool to command it to operate while monitoring cam angle data. A common DIY method is to swap the Bank 2 (driver's side) intake OCV with the Bank 1 (passenger's side) OCV and see if the code changes to P0016.
Typical fix: Replace the Bank 2 intake oil control valve. The part is located on the front of the engine on the driver's side and is relatively accessible. 🎬 See this walkthrough on replacing the oil control valve
Est. part cost: $70-$150
Rare But Worth Checking
- Stretched Timing Chain or Failed Tensioner: → Shop Engine Timing Chain While more common on older, higher-mileage vehicles, a stretched chain or failed tensioner can cause a persistent P0018 code that doesn't resolve with oil changes or a new OCV. This is a significant mechanical repair that involves removing the timing cover. One owner on a forum reported a $3800 estimate for this repair.
- Faulty Camshaft Position Sensor: → Shop Engine Camshaft Position Sensor It is possible for the sensor itself to fail, but this is often misdiagnosed. The sensor is usually reporting a real timing issue, not failing itself. Finding metallic particles on the sensor tip when removed can indicate a more serious mechanical problem like cam gear wear. Swapping it with the sensor from the other bank is a good diagnostic step before replacement.
- Failed AVCS Cam Sprocket/Phaser: The AVCS sprocket itself can fail mechanically or become clogged internally. This is a major repair requiring removal of the timing chain. In some cases, after a mechanical failure and repair, the ECM retains learned values that prevent the code from clearing, requiring a specific ECM reset procedure or replacement.
Diagnosis Steps
- Verify Code: Use an OBD-II scanner to confirm P0018 is the active code. Note if it is listed as active, pending, or permanent, as permanent codes may require several drive cycles to clear after a fix.
- Check for TSBs: Contact a Subaru dealer with your VIN to see if TSB #09-120-24R is open for your vehicle. If so, this is the most likely solution.
- Inspect Engine Oil: Check the oil level on the dipstick. Is it low? Is the oil dark, sludgy, or past its change interval? If so, perform an oil and filter change with 0W-20 synthetic oil. This simple step resolves the issue in many cases.
- Perform ECM Reprogram: If the TSB applies, have the dealer perform the software update. This is the definitive first repair step if oil condition is good.
- Test the Oil Control Valve (OCV): If the code returns, inspect the Bank 2 intake OCV. Check for sludge on its screen. Use a scan tool to perform an actuator test; the engine should hesitate or stall. You can also test its resistance (typically 6-12 ohms). Swap it with the Bank 1 OCV to see if the code follows (changes to P0016). If it does, the OCV is faulty.
- Test the Camshaft Position Sensor: Similarly, you can swap the Bank 2 and Bank 1 camshaft position sensors to see if the code follows. Inspect the sensor tip for metallic debris. Test the power supply wire for battery voltage and the signal wire for approximately 5V with the key on.
- Mechanical Inspection: If all else fails, a more in-depth mechanical inspection of the timing chain, tensioners, and cam phasers (sprockets) is required. This is an advanced job best left to a professional.
- Reset ECM Learned Values: If parts were replaced and the code persists as a 'permanent' DTC, the ECM's learned VVT values may need to be reset using a professional scan tool with this specific function. 🎬 Watch: How to reset VVT learned values using a scan tool
Parts You'll Likely Need
- Engine Oil & Filter — Low or dirty oil is a primary cause of issues in the AVCS system that triggers this code.
Trusted brands: Subaru Genuine, Idemitsu, Mobil 1
OEM price range: $50-$90
Aftermarket price range: $40-$80 - Oil Control Valve (VVT Solenoid)
(OEM #10921AA231)— This solenoid controls oil flow to the cam phaser. It can become clogged or fail electronically, preventing correct cam timing adjustment. This part number supersedes 10921AA230 and 10921AA220.
Trusted brands: Subaru Genuine, Denso, Dorman
OEM price range: $120-$160
Aftermarket price range: $70-$120 - Camshaft Position Sensor — Though less common to fail, this sensor provides the data that the ECM uses to identify the correlation fault. It's often replaced unnecessarily, but can be the culprit.
Trusted brands: Subaru Genuine, NTK, Denso
OEM price range: $80-$120
Aftermarket price range: $50-$90
Related Codes That Often Appear With This One
- P0016 — This is the same correlation error but for Bank 1 (passenger side). Seeing both codes could point to a systemic issue like low engine oil or the ECM software glitch affecting both banks. The TSB also covers this code.
- P0017 — This is a correlation error for the exhaust camshaft on Bank 1. The TSB for the ECM reprogram covers this code as well.
- P0019 — This is a correlation error for the exhaust camshaft on Bank 2 (driver's side). It often appears with P0018 if there is a widespread oiling or timing issue on that bank, or due to the ECM software sensitivity. The TSB also covers this code.
Technical Service Bulletins (TSBs) & Recalls
- 09-120-24R: Announces new ECM reprogramming files to remedy DTCs P0016, P0017, P0018, and P0019 by enhancing the self-diagnosis logic. Applies to 2020-22 Legacy/Outback 2.5L models.
- 09-120-24: The original bulletin announcing the availability of ECM reprogramming files for the same set of DTCs.
Platform-Specific Known Issues
- A primary issue for the 2020-2022 Legacy 2.5L is the Engine Control Module's (ECM) sensitivity, which can falsely trigger P0018 and related timing codes. Subaru issued TSBs #09-120-24 and #09-120-24R to remedy this with a software update.
- The direct-injection nature of the FB25D engine can lead to carbon buildup on intake valves over time, though this is not a direct cause of P0018, it is a maintenance item to be aware of for overall engine health.
Mechanic-Grade Diagnostic Values
- Camshaft Position Sensor (CMP) Power Supply Voltage — expected: Battery Voltage (approx. 12V) with ignition on. Failure: Low or no voltage indicates a wiring or power supply issue.
- Camshaft Position Sensor (CMP) Signal Voltage — expected: Approx. 5V with ignition on. Failure: Incorrect voltage suggests a faulty sensor or wiring issue.
- AVCS Advance Angle at Idle ('VVT Adv. Ang. Amount') — expected: 0 degrees. Failure: A non-zero value at idle indicates the camshaft is not in its base position, suggesting a stuck phaser or OCV.
Hidden / Shadow Codes Worth Checking
- Permanent DTC (P-code): After a repair, a standard code clear may remove the 'active' and 'pending' faults, but a 'permanent' P0018 code can remain stored. This does not necessarily mean the fault is still present. (see via Visible on some OBD-II scan tools after a 'Clear Codes' command has been issued. The permanent code will not clear until the vehicle's own diagnostic monitors have run and passed, which may take several drive cycles.)
Scan Tool Commands That Help
- Subaru Select Monitor (SSM), Autel, Launch, ThinkDiag: OCV/VVT Actuator Test — To functionally test the Oil Control Valve (OCV). When the command is sent to activate the Bank 2 intake OCV with the engine running, a noticeable hesitation or engine stall should occur, confirming the solenoid and oil passages are working.
- Autel, Launch, ThinkDiag (and other advanced scan tools): Reset VVT Learned Values / Test Mode Change — Crucial for when a P0018 code persists as a 'permanent' DTC after a mechanical repair (like a new cam sprocket) or sensor replacement. The ECM can 'burn in' old adaptive values and will continue to set the code until they are specifically reset. This procedure involves putting the vehicle in a diagnostic mode (often by adding a fuse) and using the scan tool's special function to clear the learned data, which avoids an unnecessary and costly ECM replacement.
Wiring & Ground Locations
- Engine Block Grounds — Generally found on top of the engine, under the intake manifold, secured by 12mm bolts. There are often ground straps on both sides of the engine block connecting to the chassis.. The ECM, camshaft sensors, and oil control solenoids all rely on a clean ground path. A corroded or loose engine ground can cause erratic sensor readings and trigger correlation faults like P0018.
Real Owner Repair Stories
- Reddit user kantrol86 in r/WRX (2017 WRX (FA20 engine, similar AVCS logic)) — P0018 Check Engine Light.
❌ Tried (didn't work) Replacing the Oil Control Valve (OCV), Replacing the Camshaft Position Sensor
✅ What actually fixed it Used a ThinkDiag2 scan tool to access a special function to 'reset the VVT learned values'. The code did not return after the reset. - Reddit user B4TT3RY4C1D in r/WRX (2017 WRX with 126,000 miles (FA20 engine)) — Persistent P0018 code, car sounds and runs fine.
❌ Tried (didn't work) Swapping cam sensors from left to right, Swapping OCVs from left to right, Getting an oil change
✅ What actually fixed it Used an Autel scan tool to put the car in diagnostic mode (by adding a fuse), then used the scanner to switch to 'test mode' and cleared the DTCs. This successfully cleared the 'permanent' code. - Reddit user in r/WRX (2020 WRX (FA20 engine)) — P0016 and P0018 codes.
❌ Tried (didn't work) Oil change, Swapping sensors, Swapping OCVs
✅ What actually fixed it A shop diagnosed the LH intake cam sprocket (phaser) as faulty. The user replaced both intake sprockets and other timing components. Critically, after the mechanical repair, they used a ThinkDiag2 scanner to perform an ECM reset ('clear the fault memory'), which was a successful workaround to the dealer-recommended ECM replacement.
OEM Part Supersession History
10921AA220, 10921AA230→10921AA231— Updated design for the Oil Control Valve (VVT Solenoid).
Heads up: The replacement part 10921AA231 may not include the necessary O-rings (part numbers 806944060 and 16677AA040), which should be purchased separately.
Model Year Variations Within This Range
- 2020-2022: No significant mechanical variations are noted within this year range for the FB25D engine that affect this code. The primary variation is whether a specific vehicle's ECM has been updated with the revised software from TSB #09-120-24R, which was released to fix overly sensitive diagnostic logic.
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 LEGACY:
- 🧭 Diagnostic Flowchart
- 🎬 Helpful Videos
- 🛍️ Shop This Part
- What's Unique About the 2020-2022 Subaru LEGACY
- 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
- OEM Part Supersession History
- Model Year Variations Within This Range
- 🎟️ Get 5% Off