AutoLogicTools

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.

Medium severityPowertrainVariable Valve TimingDrivable short-term

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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

Related codes

Frequently asked questions

Can I keep driving with P2090?

Yes in the short term. The exhaust phaser sits at a default position chosen so the engine always starts and runs, so nothing is being strained and the car pulls normally on the road. What suffers is idle quality and cold running, and on a diesel or a modern petrol engine the emissions strategy loses one of its main tools at light load. It is not an emergency, but it will not improve, and the usual cause is oil somewhere it should not be — which is a problem that grows.

What does the 'B' in this code actually mean?

On a dual variable-timing engine, 'A' is the intake camshaft and 'B' is the exhaust one. They do different jobs, which is why the two codes feel different to drive. The intake phaser changes how much air gets into the cylinder, so an intake-side fault shows up as flat mid-range torque. The exhaust phaser decides how much burnt gas stays behind for the next cycle, which is the engine's own way of recirculating exhaust at light load — so an exhaust-side fault shows up at idle and during warm-up instead.

Why does it idle badly but drive perfectly well?

Because that is exactly where the exhaust camshaft earns its living. At light load the module uses exhaust valve timing to hold burnt gas in the cylinder, which keeps combustion temperatures and emissions down while you sit in traffic. With the phaser stuck at its default, the module has to compensate with fuel and spark instead, and the result is an idle that hunts or feels lumpy along with a longer, rougher warm-up. Open the throttle and the phaser was not doing much there anyway, so the car pulls normally.

I have both this code and the 'A' circuit code. Does that mean two bad solenoids?

Almost certainly not. The two solenoids sit within inches of each other on the same cylinder head, are usually fed from the same supply, and often share a connector body or a length of loom. Two of them failing on the same day would be a real coincidence; one shared supply, ground or connector failing and taking both branches with it is ordinary. When both codes are present, test what they share before testing either part. When only this one is present, the shared side is proved healthy and the fault is on the exhaust branch.

Editorial context

About This Diagnostic Information

AutoLogicTools diagnostic guides explain OBD-II trouble codes using recognized code definitions, standard automotive diagnostic principles, and practical automotive context. A trouble code records a condition detected by a control module. It does not automatically identify a failed part, and the right diagnostic procedure can vary by vehicle.

Manufacturer service information, technical service bulletins, wiring diagrams, and vehicle-specific procedures should take precedence when available.

AutoLogicTools was founded by Vincent Fisk, an automotive locksmith and shop owner in San Diego with hands-on experience in vehicle keys, immobilizer systems, electrical issues, modules, programming, and diagnostics.