OBD-II trouble code
P0591: Cruise Control Multi-Function Input "B" Circuit Range/Performance
A voltage arrived on the "B" input that is neither too low nor too high — it simply landed in the empty space between two recognised commands, so the module could measure it but had no idea what the driver asked for.
Quick facts
- System
- Powertrain
- Category
- Cruise Control
- Severity
- Low severity
- Drivable
- Usually safe to drive short-term
- Repair cost range
- $0 – $450
- DIY difficulty
- Intermediate DIY
What does P0591 mean?
P0591 is about the gaps in a lookup table, which makes it a fundamentally different failure from the low and high codes that sit either side of it.
The calibration for a multiplexed switch input is a list of voltage windows. Each recognised command occupies a narrow band, and between the bands the engineers leave deliberate empty space — guard bands, whose only purpose is to keep two adjacent commands from being confused when component tolerances stack up in opposite directions. That empty space is not a fault region by accident. It is designed to be unreachable in a healthy system, which is precisely what makes an arrival there diagnostically meaningful. P0591 says a measurement landed in a guard band: on scale, within the supply rails, entirely readable, and matching nothing.
The physical cause is almost always drift rather than damage. The values in the ladder come from real resistors, and real resistors move. Carbon-film elements age upward. Contact resistance at a switch pad climbs as the plating oxidises. Every one of those changes is small — a few percent — and for a long time it makes no difference at all, because the band has margin built in. Then the accumulated drift finally walks one command past the edge of its window and into the guard band next door, and the code appears with no event to explain it. Nothing broke on the day the light came on; a slow change simply crossed a line.
That mechanism gives P0591 two behaviours the other codes in the family do not share, and both are useful. First, it is strongly temperature-sensitive. Resistance shifts with temperature, so a ladder already sitting near the edge of a window is far more likely to fall out of it on a cold morning than on a warm afternoon, which is why so many of these are intermittent in a way that tracks the weather rather than the road. Second, and more valuable, the fault is self-identifying. Because a guard band lies between two specific commands, reading the measured voltage and comparing it against the calibration table tells you exactly which button has drifted, without disassembling anything. There is no equivalent shortcut on a low or high code, where the fault swamps every band at once.
The other population worth naming is aftermarket hardware. A replacement steering wheel, a switch pad from a different trim level, or a generic control assembly sold as a universal fit will often use resistor values that are close to the original but not identical. The buttons work — sometimes for months — and then the mismatch shows up as a persistent range/performance fault on one function. If the wheel or the switch pad has been changed at any point, that is the first thing to establish, because no amount of circuit testing will find a fault in wiring that is perfectly healthy.
Common causes
- Aged resistors in the switch ladder whose values have drifted out of their calibration windows
- Oxidised switch contacts adding resistance that shifts a command toward the adjacent guard band
- Aftermarket or wrong-trim steering wheel switch assembly with resistor values close to but not matching specification
- High resistance at a connector pin behind the wheel, offsetting every band by a small amount
- Marginal ground reference for the switch circuit, biasing all reported values
- Partially broken conductor strand raising circuit resistance without opening it
- Moisture inside the switch pad creating a leakage path in parallel with the ladder
- Worn contact plating on a single frequently used button such as set or resume
- Control module reference voltage drifting slightly out of tolerance, uncommon and last to suspect
Symptoms
- Check engine light on with P0591 stored
- One cruise control function producing the wrong action while others behave normally
- Cruise engaging but ignoring a specific command such as resume or coast
- Fault appearing on cold mornings and clearing once the vehicle warms up
- Intermittent behaviour with no clear connection to road or steering input
- Cruise buttons working when pressed firmly but not with a light touch
- Symptoms starting some time after a steering wheel or switch pad was replaced
- No symptoms at all beyond the stored code on some vehicles
Diagnostic steps
- 1.Read the live "B" circuit voltage with nothing pressed, then with each button held, and write down every value. This code is diagnosed from the numbers, not from continuity.
- 2.Compare each measured value against the calibration table and identify which two commands the failing reading fell between. That names the drifted button before anything is taken apart.
- 3.Establish whether the steering wheel, switch pad or clockspring has ever been replaced. Aftermarket ladders with near-miss resistor values produce this exact code and no wiring fault.
- 4.Repeat the readings cold if the complaint is weather-related. A ladder that measures in specification warm can fall out of its window at low temperature, and testing warm will find nothing.
- 5.Measure the resistance of each button directly at the switch connector and compare against specification rather than against each other. A uniform offset across all buttons points at the shared path, not the switch.
- 6.Check the voltage drop across the circuit ground. A small ground offset moves every band and is a common reason a good switch reads out of range.
- 7.Inspect connector pins behind the wheel for green oxide or spread terminals, which add exactly the small, stable resistance this code responds to.
- 8.Press each button with light and then firm pressure while watching the live value. A reading that only reaches its correct band under firm pressure is a worn contact caught in the act.
- 9.Where the module supports it, compare the "A" ladder's values against the "B" ladder's. Both drifting together implicates the reference or ground; one drifting alone implicates that switch.
Repair cost
$0 – $450
Cleaning oxidised contacts or reseating a connector behind the wheel can resolve it for the cost of an hour's labour. A steering wheel control switch assembly is $30-$200 in parts with 0.5-1.5 hours of labour, and the correct part number matters more here than on most jobs — a switch from the wrong trim level will have different resistor values and can set this code straight back. Repairing a high-resistance ground or connector is $80-$250. If an aftermarket steering wheel is involved, budget for the OEM switch assembly rather than another universal-fit part, since the mismatch is the fault.
Estimate your repair
Run the numbers for your vehicle
Open the Repair Cost Estimator with cruise control switch 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.