OBD-II trouble code
P2090: 'B' Camshaft Position Actuator Control Circuit Low (Bank 1)
'B' is the exhaust cam, and it earns its living at idle rather than at speed. Lose its control circuit and the complaint is a lumpy, hunting idle and a slow warm-up — the opposite of what the intake-side fault produces.
Quick facts
- System
- Powertrain
- Category
- Variable Valve Timing
- Severity
- Medium severity
- Drivable
- Usually safe to drive short-term
- Repair cost range
- $100 – $1,100
- DIY difficulty
- Intermediate DIY
Browse every code in P2000–P20E8, or start from the full code library.
What does P2090 mean?
P2090 is set when the module sees the control line to the exhaust camshaft actuator solenoid on bank 1 held low when it should not be.
The letter is the thing to understand first. On a dual variable-timing engine, 'A' designates the intake camshaft and 'B' the exhaust one, and they are not interchangeable in what they do. The intake phaser is mostly about filling the cylinder — moving it changes how much air gets in, so its effect is felt as torque through the mid range. The exhaust phaser does something different: by deciding when the exhaust valve closes relative to the intake opening, it controls how much burnt gas stays in the cylinder for the next cycle. That retained gas is internal exhaust gas recirculation, and it is the engine's main tool for keeping combustion temperatures and emissions down at light load, which is to say at idle and in traffic. So a fault on the B circuit does not present the way a fault on the A circuit does. It shows up where the engine spends its quietest time.
With the exhaust solenoid unable to be controlled, the phaser sits at the position its spring and lock pin define. That default is chosen so the engine will always start, but it is not the position the calibration wants for a smooth warm idle, and the module has to compensate with fuel and spark instead. The result is usually a slightly lumpy or hunting idle, a longer and rougher warm-up on a cold morning, and a catalyst monitor that takes a long time to complete because the exhaust temperature is not being managed the way the strategy expects. The engine pulls perfectly well once you are moving. That inversion — fine on the road, unsettled at rest — is the clearest single indication that the exhaust side is the one affected, and it is worth checking against the driver's description before any part is named.
The second useful piece of reasoning is what the code's company tells you. The two solenoids on one cylinder head sit within inches of each other, are usually fed from the same fuse and switched supply, and frequently share a connector body or at least a common section of loom. That shared arrangement makes the pairing informative. P2090 on its own means the shared feed and the shared ground are intact and the fault lies on the B side of the split — this solenoid, this connector, this branch. P2090 together with the equivalent A-side code means the odds have shifted decisively toward what the two share: the supply, the ground, the common connector, or a length of loom where both branches run together. Two solenoids failing at once is a coincidence; one supply failing and taking both with it is not.
Access is the third factor and it is where the two sides genuinely differ in cost. The intake solenoid is usually the more accessible of the pair, positioned where a hand fits. On many engines the exhaust solenoid is set further back along the head or on the opposite face, behind intake plumbing, a coolant housing or a wiring trough, and reaching it means removing things that were not in the way on the other side. That is worth establishing before a quote is accepted, because two jobs described identically on paper can differ by an hour of labour depending only on which letter is involved.
The practical starting point remains the same as on any control circuit pulled low: look inside the connector before measuring anything. A low fault needs a leakage path to ground, and on a cylinder head the substance most likely to provide one is oil that has found its way into a connector body.
Common causes
- Oil contamination inside the exhaust solenoid connector providing a leakage path to ground
- Control wire chafed against a coolant housing, wiring trough or bracket on the rear face of the head
- Shorted winding inside the exhaust solenoid coil after long service
- Fretted or corroded terminal in the solenoid connector
- Harness pinched during intake manifold, coolant housing or valve cover work
- Connector not fully latched after the solenoid was previously disturbed
- Loom section shared with the intake solenoid branch damaged where both run together
- Water ingress through a perished connector seal on an exposed part of the run
- Module driver damaged by an earlier short that was never properly repaired
- Incorrect replacement solenoid with a coil resistance the driver was not designed for
Symptoms
- Lumpy, hunting or slightly unsettled idle with the engine warm
- Longer and rougher warm-up on a cold start
- Check engine light with completely normal pulling power on the road
- Exhaust cam timing shown stuck at its default value regardless of command
- Catalyst readiness monitor taking an unusually long time to complete
- Marginally worse fuel economy in stop-start traffic rather than on a long run
- Occasional light exhaust smell at idle from unmanaged combustion temperature
- Oil visible inside the solenoid connector when it is disconnected
- Companion exhaust cam timing performance codes stored alongside
- No misfire and no loss of top-end performance
Diagnostic steps
- 1.Match the symptom to the letter before anything else. An engine that idles badly but pulls normally fits an exhaust-side fault; one that idles perfectly and feels flat under load fits the intake side, and the two get confused constantly.
- 2.Check whether the equivalent A-side code is also stored. This one alone means the shared supply and ground are healthy and the fault is on the B branch; both together points at what the two solenoids share rather than at either of them.
- 3.Disconnect the solenoid and look inside the connector. A circuit pulled low needs a leakage path, and oil that has crept into a connector body on a cylinder head is the most common thing that provides one.
- 4.Trace an oily connector back to its source. A weeping cover gasket that is not dealt with will refill the connector and bring the code back after any electrical repair.
- 5.Run the disconnect test. Unplug the solenoid, clear the code and see whether it returns immediately. A code that comes back with nothing connected means the short is in the harness rather than in the part.
- 6.Scope the control line rather than relying on a meter. The solenoid is pulsed at a varying duty cycle, so an averaged voltage reading looks similar whether the circuit is healthy or partially shorted.
- 7.Measure the exhaust solenoid coil resistance and compare it directly with the intake solenoid on the same head. Two similar components on one engine make an excellent reference for each other.
- 8.Follow the control wire along the head, paying attention to the rear face, coolant housings and wiring troughs, which are where this branch chafes and the intake branch does not.
- 9.Check the shared supply and ground at the point where both solenoid branches meet, especially if the fault history includes any intermittent A-side codes.
- 10.Confirm the labour before authorising a solenoid replacement. The exhaust solenoid is frequently the harder of the two to reach, and identical-sounding quotes can differ by an hour depending on which one is involved.
Repair cost
$100 – $1,100
Diagnosis is $110 to $210 and should include scope work on the control line. The solenoid is $45 to $200 in parts, with 0.5 to 1.6 hours of labour — usually longer than the intake side, since the exhaust solenoid is often set further back or behind intake plumbing and a coolant housing. Cleaning or replacing an oil-contaminated connector is $80 to $240, and the valve cover gasket that let the oil in is $150 to $500 fitted. Harness repair for a chafed control wire is $90 to $320. Module driver failure is the rare top of the range at $500 to $1,100 with programming and should only be reached once the circuit has been proved sound.
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.