P0016 on 2020-2022 Subaru Legacy: Crank-Cam Correlation Causes and Fixes
On a 2020-2022 Subaru Legacy with the 2.5L engine, code P0016 is frequently caused by an Engine Control Module (ECM) software issue that requires a dealer reprogram, as outlined in TSB #09-120-24R. Before replacing parts, check for this TSB and ensure engine oil is clean and at the correct level, as low or dirty oil is another primary cause.
- For a 2020-2022 Legacy 2.5L, the first step for P0016 should be checking with a dealer for the ECM software update mentioned in TSB #09-120-24R.
- Always check your engine oil level and condition. Low or dirty oil is a frequent cause of this code.
- The passenger-side intake Oil Control Valve (OCV) is a likely mechanical culprit. Swapping it with the driver's side is a good way to diagnose it.
- Do not assume a costly timing chain replacement is needed without ruling out the software, oil, and OCV issues first.
What's Unique About the 2020-2022 Subaru LEGACY
For this specific generation of Subaru Legacy with the 2.5L FB25D engine, a primary documented cause for P0016 is not a mechanical failure but a software glitch. Subaru issued Technical Service Bulletin (TSB) #09-120-24R, which provides new ECM programming to fix this exact code by enhancing the self-diagnosis logic. This is a critical distinction from older Subarus where this code often pointed directly to a stretched timing chain or failed mechanical parts. The TSB also applies to other codes like P0017, P0018, and P0019.
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 acceleration
- Engine may hesitate or stall
- Worse fuel economy
- Rattling noise from the engine, especially on startup
- Engine cranks but may not start 🎬 Watch: A breakdown of P0016 symptoms, causes, and common fixes.
- Immediately replacing the timing chain without first checking for the ECM software update (TSB #09-120-24R) or testing the Oil Control Valve.
- Replacing the camshaft or crankshaft position sensors without confirming they are faulty through testing.
- Replacing the ECM when it only needed a reprogram per the TSB. 🎬 Watch: Why you should update software before replacing the ECM.
Most Likely Causes
- Engine Control Module (ECM) Software 🔴 High Probability Subaru has officially identified a software logic issue and released a fix via TSB #09-120-24R for 2020-2022 Legacy 2.5L models. The update corrects overly sensitive diagnostic parameters that can falsely trigger the P0016 code.
How to confirm: A Subaru dealer or a shop with a Subaru Select Monitor (SSM) can check the current software version (CID) of the ECM and determine if the update is needed by cross-referencing with the TSB.
Typical fix: Reprogramming the ECM with the updated software files provided in the TSB. This is often covered under the federal emissions warranty (8 years/80,000 miles). If out of warranty, the cost is typically around one hour of labor, approximately $100-$150.
Est. part cost: $0 - Low, Dirty, or Incorrect Viscosity Engine Oil 🟡 Medium Probability The Active Valve Control System (AVCS) uses oil pressure to change cam timing. Low or dirty oil starves the system, preventing correct operation and causing correlation faults. The FB25 engine is known to be sensitive to oil level and condition.
How to confirm: Check the oil level on the dipstick and inspect its condition. If it's low, black, sludgy, or smells burnt, it needs to be changed. Ensure the correct 0W-20 viscosity is being used.
Typical fix: Perform an engine oil and filter change using the manufacturer-specified oil viscosity (e.g., 0W-20 synthetic). In many cases, this alone can resolve the code.
Est. part cost: $40-$80 - Failing Oil Control Valve (OCV) / VVT Solenoid 🟡 Medium Probability → Shop Engine Variable Valve Timing (VVT) Solenoid The OCV can become clogged with sludge from infrequent oil changes or can fail electronically, preventing it from directing oil to the cam phaser correctly. These solenoids are a known failure-prone item on many Subaru models.
How to confirm: A common diagnostic technique is to swap the Bank 1 (passenger side) intake OCV with the Bank 2 (driver's side) intake OCV. Clear the codes and drive. If the code changes to P0018 (Bank 2 Sensor A), the OCV is faulty. A technician can also test the resistance of the solenoid, which should be between 6-12 Ohms.
Typical fix: Replace the faulty Oil Control Valve for Bank 1 Intake. The part is relatively accessible on top of the engine. 🎬 See this walkthrough on how to replace the oil control valve.
Est. part cost: $80-$150 - Stretched Timing Chain or Failed Tensioner ⚪ Low Probability → Shop Engine Timing Chain While less common on these newer models compared to older Subarus, significant wear can still occur, especially with poor maintenance. A stretched chain or a failing hydraulic tensioner can create enough slack to cause a timing correlation error.
How to confirm: This is a mechanical issue that requires significant disassembly to inspect the timing chain, guides, and tensioner for wear or slack. A technician may first use a scope to compare cam/crank signals for tell-tale signs of a timing issue. This is typically the last resort after software and oil-related causes are ruled out.
Typical fix: Replace the timing chain, tensioners, and guides. This is a labor-intensive job, often costing over $2,000 at a dealership.
Est. part cost: $400-$700
Rare But Worth Checking
- Faulty Camshaft or Crankshaft Position Sensor: → Shop Engine Crankshaft Position Sensor While possible, sensor failure is less common than OCV or oil-related issues. The sensor could be sending inaccurate data to the ECM. Testing with a multimeter or oscilloscope can confirm its operation. Often, a sensor is replaced unnecessarily when the issue is elsewhere.
- Damaged Camshaft Sprocket (AVCS Actuator): → Shop Engine Camshaft The phaser mechanism itself can fail, getting stuck in one position or having its internal lock pin fail. This is usually a last resort after all other components have been checked and is an expensive repair.
- Clogged OCV Filter Screens: Small filter screens for the VVT control valves can become clogged with metal shavings or sludge, restricting oil flow. This can happen due to lack of oil maintenance. Cleaning or replacing these may be necessary.
Diagnosis Steps
- Check for Technical Service Bulletins (TSBs). Specifically, check if TSB #09-120-24R applies to your vehicle's VIN. If so, an ECM reprogram is the first recommended step.
- Inspect Engine Oil. Check the oil level and condition. If it is low, dirty, or the wrong viscosity (0W-20 is specified), perform an oil and filter change. This simple step resolves the issue in many cases.
- Scan for Other Codes. Check for any other related codes that could point to a specific part of the system (e.g., sensor circuit codes, or codes for other banks like P0018).
- Test the Oil Control Valve (OCV). Swap the Bank 1 and Bank 2 intake OCVs. They are identical and accessible. Clear the codes and drive the vehicle. If the code returns as P0018, the OCV you moved is faulty and needs replacement.
- Inspect Sensors and Wiring. Visually inspect the wiring and connectors for the camshaft position sensor, crankshaft position sensor, and OCV for any damage, corrosion, or loose connections.
- Test Sensors. If suspected, test the camshaft and crankshaft position sensors with a multimeter or oscilloscope to ensure they are producing the correct signal.
- Mechanical Timing Inspection. If all else fails, a mechanical inspection of the timing chain, guides, and tensioners is required. This is a complex job best left to a professional.
Parts You'll Likely Need
- Engine Oil Control Valve (VVT Solenoid)
(OEM #10921AA23B)— This solenoid is a common failure point. It can get clogged or fail electronically, making it unable to properly adjust cam timing. It is the same part for left and right banks.
Trusted brands: Subaru (Genuine), Denso
OEM price range: $100-$150
Aftermarket price range: $60-$100 - Camshaft Position Sensor
(OEM #22056AA260)— Though less common, a faulty sensor can send incorrect data, triggering the code. It's replaced if testing proves it has failed.
Trusted brands: Subaru (Genuine), NGK, Denso
OEM price range: $90-$130
Aftermarket price range: $50-$80 - Timing Chain Kit — In cases of mechanical failure, the chain, tensioners, and guides must be replaced to restore correct engine timing. This is the most expensive and labor-intensive fix.
Trusted brands: Subaru (Genuine)
OEM price range: $400-$700
Aftermarket price range: $250-$450
Related Codes That Often Appear With This One
- P0017 — Crankshaft Position - Camshaft Position Correlation Bank 1 Sensor B (Exhaust). This code often appears with P0016 if the timing issue, such as a software glitch or oil problem, affects the entire bank. TSB #09-120-24R also addresses this code.
- P0018 — Crankshaft Position - Camshaft Position Correlation Bank 2 Sensor A (Intake). This code may appear after swapping a faulty OCV from Bank 1 to Bank 2 for diagnostic purposes. It can also set alongside P0016 if there is a systemic issue like dirty oil.
- P000A — 'A' Camshaft Position Slow Response Bank 1. This can be a precursor to P0016, indicating the VVT system is struggling to adjust, often due to oil pressure or flow issues.
Technical Service Bulletins (TSBs) & Recalls
- 09-120-24R: The most critical TSB for this issue. It announces new ECM reprogramming files to fix false P0016, P0017, P0018, and P0019 codes on 2020-22 Legacy/Outback models, among others.
- 02-163-16R: An older, but relevant TSB that provides detailed diagnostic procedures for AVCS-related DTCs, including checking for 'bad learned values' that can get stored in the ECM after an oil starvation event.
Platform-Specific Known Issues
- A primary issue for the 2020-2022 Legacy 2.5L is the need for an ECM software update to correct the logic for detecting cam/crank correlation, as detailed in TSB #09-120-24R.
- Owner experiences on forums like Reddit confirm that dealers often perform the ECM reprogram as the first step, which frequently solves the problem without replacing any parts.
Mechanic-Grade Diagnostic Values
- Oil Control Valve (VVT Solenoid) Resistance — expected: 6 to 12 Ohms. Failure: A reading outside this range, or an open/infinite reading, indicates a faulty solenoid coil.
- Camshaft Position Sensor Signal Voltage (3-wire Hall effect type) — expected: The signal wire should show approximately 5V with Key On, Engine Off. When the engine is running or cranked, it should produce a square wave, switching between ~0V and ~5V.. Failure: No voltage, or voltage that does not switch when a metal object is passed in front of the sensor, indicates a failed sensor.
- Engine Oil Pressure — expected: Greater than 10 PSI at idle and greater than 30 PSI at 3000 RPM with a warm engine.. Failure: Pressure below these specifications indicates an oiling system problem that must be fixed before addressing VVT components.
- Live Data: 'VVT Adv. Ang. Amount' at idle — expected: Should be 0 degrees at idle immediately after starting, with the OCVs disconnected.. Failure: A non-zero value indicates a potential base timing issue (e.g., stretched or jumped timing chain).
Hidden / Shadow Codes Worth Checking
- Mode $06, MID $35, TID $8B/$8C: This is not a shadow code, but rather a specific OBD Mode $06 test result that monitors the Bank 1 intake camshaft correlation. A diagnostic value of 1000 or greater indicates a confirmed problem with the Bank 1 intake AVCS system, corresponding to P0016. (see via A professional scan tool with Mode $06 capabilities, such as the Subaru Select Monitor (SSM4).)
Scan Tool Commands That Help
- Subaru Select Monitor (SSM), Autel, Launch, Thinkdiag: VVT Learned Value Reset / Test Mode Change — This is a critical step after replacing timing components or an OCV. The ECM can retain old, incorrect timing values ('bad learned values' per TSB 02-163-16R), causing the P0016 code to persist even with new parts. This function, often performed in a special 'Inspection Mode', clears the learned values, forcing the ECM to relearn the correct timing and can prevent unnecessary ECM replacement.
Wiring & Ground Locations
- Engine Ground (GE) — There are primary engine-to-chassis ground straps on both sides of the engine. A key ground point for the engine harness, including sensor grounds, is located on the rear passenger side of the intake manifold.. A poor ground connection at this point can cause erratic voltage signals from the cam and crank sensors, leading to false correlation codes. All sensor signals rely on a clean ground path to the ECM.
- ECM Connector B136 (Cam Sensor) — At the Engine Control Module (ECM), typically located under the passenger side floor/dashboard area.. Technicians may need to test for signal continuity and voltage directly at the ECM pins to rule out wiring harness issues between the sensor and the module. For example, on some Subaru models, the cam sensor signal is at pin B136-15, power at B136-16, and ground at B136-35, though specific pinouts for the 2020-2022 Legacy should be verified with a service manual.
Real Owner Repair Stories
- YouTube user comment on a diagnostic video (2016 Subaru Crosstrek (similar FB engine and VVT system)) — Persistent P0016 code after replacing timing components that were confirmed to be out of time.
❌ Tried (didn't work) Replacing mechanical timing parts., Clearing codes with a standard scan tool.
✅ What actually fixed it A special procedure was used to clear the ECM's retained memory ('bad learned values'). This involved activating an 'Inspection Mode' with a fuse, using a scan tool to enter 'Test Mode', clearing the codes while in this mode, and then exiting. This cleared the history and learned values, and the code did not return. - Reddit user r/WRX (2017 Subaru WRX (FA20DIT engine, similar VVT system)) — P0016 code, which can lead to oil starvation and rod knock if ignored.
❌ Tried (didn't work) Standard code clearing after replacing a faulty cam sprocket.
✅ What actually fixed it The user confirmed that after replacing the mechanical parts, the persistent P0016 code was resolved by using an Autel scanner to perform the 'VVT learned values' reset procedure while the car was in 'test mode' (activated by a fuse). This avoided the dealership's recommendation to replace the entire ECU, which was quoted at nearly $1000.
When the Usual Fixes Don't Work
- While the TSB for an ECM reprogram is the most common fix, there are documented cases where this did not resolve the issue. In a forum discussion regarding a 2013 BRZ (which shares VVT system design principles), a user reported that a hot oil flush and the software update per the TSB did not fix their P0016. The final resolution required replacing the camshaft sprocket assembly and the ECU. This highlights that while the software update should be the first step, it is not a guaranteed fix, and underlying mechanical or electronic issues can still be the root cause.
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
- When the Usual Fixes Don't Work
- 🎟️ Get 5% Off