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

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.

16 minutes to read 2020-2022 Subaru LEGACY
Most Likely Cause
Engine Control Module (ECM) Software
Est. Time
4.5 hrs
DIY Doable?
🔧 Shop
Shop Labor
$150 – $2100
Parts Price
$40 – $700
⚠️ Drivable, but... — You can drive, but it should be addressed promptly. Ignoring the code can lead to reduced engine performance, poor fuel economy, a rough idle, stalling, and potential for more severe engine damage if the underlying cause is mechanical or oil-starvation related. In some cases, cruise control and traction control may be disabled.
Key Takeaways
  • 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.
The P0016 code means the Engine Control Module (ECM) has detected a misalignment between the crankshaft and the Bank 1 intake camshaft. On a Subaru boxer engine, 'Bank 1' is the passenger side of the engine, and 'Sensor A' refers to the intake camshaft. Essentially, the ECM sees that the actual position of the camshaft does not match the position it expects based on the crankshaft's rotation, indicating a problem with the engine's mechanical timing or the variable valve timing (VVT) system, which Subaru calls Active Valve Control System (AVCS).

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.

Which best describes the current condition and software status of your Subaru Legacy?
→ Perform an oil and filter change using the specified 0W-20 synthetic oil ($40-$80).
→ Have a dealer apply TSB #09-120-24R to reprogram the ECM (often free under 8yr/80k warranty, or $100-$150).
If you swap the Bank 1 and Bank 2 OCVs, does the code change?
→ Replace the faulty Bank 1 Intake Oil Control Valve (OEM part 10921AA23B, $80-$150).
→ Test the Camshaft Position Sensor (OEM 22056AA260) or seek professional mechanical timing inspection ($150-$2100 labor).
→ Seek immediate professional inspection for a stretched timing chain or failed tensioner ($400-$700 parts, $150-$2100 labor).
Professional service recommended: Diagnosing this code correctly requires checking for TSBs and potentially reprogramming the ECM, which can only be done at a dealership or a properly equipped independent shop. Misdiagnosis can lead to unnecessary and expensive parts replacement, such as a timing chain, when a software update or a less expensive part like an Oil Control Valve was the true cause.

Symptoms You May Notice

⚠️ Don't Waste Money on the Wrong Fix
  • 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

  1. 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
  2. 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
  3. 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
  4. 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

  1. 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.
  2. 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.
  3. 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).
  4. 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.
  5. 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.
  6. Test Sensors. If suspected, test the camshaft and crankshaft position sensors with a multimeter or oscilloscope to ensure they are producing the correct signal.
  7. 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.
What's Causing Your P0016 Code? Symptoms, Causes, & Fixes!
What's Causing Your P0016 Code? Symptoms, Causes, & Fixes!
Replace/upgrade FA20 FB20 oil control valve vvt
Replace/upgrade FA20 FB20 oil control valve vvt
Subaru VVT Learned Values Reset With Autel | ECM Saved!
Subaru VVT Learned Values Reset With Autel | ECM Saved!
2016 Subaru crosstrek P0016 cam crank correlation after repair!!! do you need to replace the ECM???
2016 Subaru crosstrek P0016 cam crank correlation after repair!!! do you need to replace the ECM???
How to Replace Camshaft Position Sensor 2010-2014 Subaru Outback (2.5L H4)
How to Replace Camshaft Position Sensor 2010-2014 Subaru Outback (2.5L H4)
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 Apr 30, 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 P0016 for:
  • Subaru LEGACY: 202020212022
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