OBD-II trouble code
P0021: 'A' Camshaft Position Timing Over-Advanced or System Performance (Bank 2)
The intake camshaft on bank 2 isn't holding the timing position the PCM commanded — it's reading further advanced than expected. The electrical side of the VVT solenoid is fine; the camshaft itself isn't responding the way it should.
Quick facts
- System
- Powertrain
- Category
- Variable Valve Timing
- Severity
- Medium severity
- Drivable
- Usually safe to drive short-term
- Repair cost range
- $80 – $2,000
- DIY difficulty
- Intermediate DIY
What does P0021 mean?
P0021 is the bank-2 mirror of P0011, and it's a performance code, not an electrical one. The PCM compares the position it commanded the intake cam to hold against what the cam position sensor is actually reporting back. If the cam is sitting more advanced (rotated further toward 'early intake valve opening') than commanded — and stays there outside the PCM's tolerance window — P0021 sets.
If you take only one thing from this page, take this: oil maintenance is the single biggest factor in VVT codes across every manufacturer. The cam phaser is essentially a hydraulic actuator that uses pressurized engine oil to rotate the camshaft against spring pressure inside the gear. When oil is dirty, low, or the wrong viscosity, the phaser can stick in an advanced position or fail to return to the commanded position. The small filter screen inside the VVT solenoid is the first thing to clog, and once it clogs, the phaser stops behaving predictably even though the solenoid itself is electrically fine. A surprising number of P0021 codes go away after nothing more than an oil change with the correct viscosity and a fresh OEM oil filter — especially on engines past 60,000 miles that haven't seen a 5,000-mile oil interval.
When oil isn't the culprit, the next most common cause is the phaser hardware itself. Internal seals wear out, the locking pin that holds the phaser at the default position can stick, and on engines with timing chains, chain stretch shifts the phaser's reference point enough to trigger the code. Less commonly, a stuck-open VVT solenoid keeps commanding advance even when the PCM tries to back it off.
Common causes
- Dirty or low engine oil restricting flow to the bank-2 intake phaser
- Clogged VVT solenoid filter screen on the bank-2 intake circuit
- Stuck-open or hydraulically fouled VVT solenoid (mechanically allowing oil through when it shouldn't)
- Worn or sticking cam phaser internals on bank 2
- Timing chain stretch on the bank-2 cylinder bank (especially Hyundai/Kia Theta II, BMW N20, Audi/VW TSI)
- Worn timing chain guides or tensioner allowing cam timing to drift
- Wrong oil viscosity — too thin or too thick for the phaser response time the PCM expects
- Failed cam position sensor on bank 2 reporting an inaccurate position back to the PCM
Symptoms
- Check Engine Light on, often with a slightly rough idle
- Loss of low-end response and a hesitation when leaving a stop
- Worse fuel economy than the same vehicle had last month
- Occasional rattle on cold start from the timing-cover area — phaser not locking on startup
- On some platforms, a noticeable change in engine sound at idle when the code sets
Diagnostic steps
- 1.Check engine oil level and condition before anything else. If the oil is past due, change it with the manufacturer-specified viscosity and an OEM filter, clear the code, and drive 50-100 miles before re-testing.
- 2.Read live data and compare commanded vs. actual cam position for bank-2 intake. A gap that persists confirms the phaser isn't tracking the command.
- 3.Remove the bank-2 intake VVT solenoid and inspect the filter screen. A black, sludged screen confirms an oil-driven failure — clean or replace the solenoid.
- 4.Resistance-check the solenoid against spec (typically 6-14 ohms) to rule in or out an electrical fault that's masking as a performance issue.
- 5.Listen for a timing-chain rattle on cold start. If the chain is the underlying problem, you'll often hear it for 1-3 seconds at first crank before oil pressure builds.
- 6.On engines with known chain history (Hyundai Theta II, BMW N20/N26, Audi/VW TSI), use a scope to verify cam-to-crank phase angle directly — chain stretch is a non-trivial repair that's worth confirming before quoting.
- 7.Clear the code and drive at least one complete drive cycle. Recheck for return of P0021 plus any new codes.
Repair cost
$80 – $2,000
Best case is an oil-and-filter change resolving the code: $80-150. Solenoid replacement on bank 2 typically runs $250-700 because of access difficulty. A full cam phaser replacement is $1,200-1,800 because the timing cover has to come off. Timing chain replacement on a platform with known chain stretch issues runs $1,500-3,000 and is the worst-case outcome here.
Estimate your repair
Run the numbers for your vehicle
Open the Repair Cost Estimator with vvt solenoid replacement preselected. Adjust labor rate and vehicle category to fit your situation.
DIY vs shop
This is an intermediate DIY job. It usually involves diagnostic steps, specialty parts, and some careful work in tight spaces. If you have the tools and a service manual or trustworthy video for your specific vehicle, it is achievable in a weekend. Otherwise, a competent independent shop will be faster.