Cruise Control

Elite Software Programmer › ESP - Main setup › FunctionsUpdated Sep 2026

Swapping to a Haltech Elite doesn't mean giving up cruise control. If the car has drive by wire, the ECU can hold a set speed itself, using the factory steering wheel buttons or your own switch pack. Here's how we wire it, calibrate it and tune it so it holds speed without surging.

What Elite cruise control actually does

On an Elite ECU, cruise control is just another job for the drive by wire throttle. You pick a speed, the ECU compares it with measured vehicle speed, and it opens or closes the throttle blade to close the gap. There's no separate cruise module and no vacuum servo, so two things are non-negotiable: an electronic throttle body and a working vehicle speed input. Without a trustworthy speed signal, nothing else on this page matters.

The button side is clever and cheap on wiring. Every cruise button shares one input wire. Each button connects that wire to signal ground through a different resistor, so each press produces its own voltage. The ECU reads the voltage and works out which button you're holding.

Wiring the buttons

The input type has to be analog voltage. Use an AVI (analog voltage input) if you have one free. If you've run out, an SPI will also do the job, with its sensor type set to Hall Effect.

  • AVI pull up: turns on a 1k resistor to 5V. Most button packs need it, because the buttons only ever pull the line toward ground.
  • SPI pull up: a weaker 10k resistor to 5V. Same logic applies.
  • Shared wiring: if the button wire also still goes to a factory ECU (a piggyback-style install), that ECU usually supplies its own pull up. In that case, turn the Haltech one off so the two don't fight.

Building your own switch pack? Give every button its own resistor between the input and signal ground, and choose values so each button reads at least 0.1V away from its neighbors. More separation is better. Tight spacing is the number one reason a homemade pack reads the wrong button.

Indicator lights

Two optional outputs drive dash lights. For each one you choose Disabled, Digital - Switched (an ECU output, typically a DPO or a stepper output) or CAN Output - Switched if the car's cluster takes the light over the CAN bus.

LightLit when
Enable lightCruise is in any state other than Disabled, so the system is armed
Active lightThe ECU is actually holding or changing speed: Cruising, Accelerating or Coasting

Both outputs have an Active State setting. Low (the default) grounds the wire when the light should be on, which suits a lamp fed with 12V on its other side. High flips that logic.

Understanding the cruise states

Every button makes sense once you know the five states the ECU moves between. You can watch them live on the Cruise Control State channel.

  1. Disabled: switched off entirely.
  2. Ready: armed and waiting. Nothing is controlling the throttle yet.
  3. Cruising: holding the target speed.
  4. Accelerating: an accel-type button is held and speed is climbing.
  5. Coasting: a coast-type button is held and speed is falling.

Enable moves you from Disabled to Ready. Set takes Ready to Cruising and locks in your current speed, and pressing it again while cruising grabs the new speed as the target. Cancel drops you from Cruising back to Ready without losing the stored speed. Resume goes from Ready back to Cruising at the last target, but only if Set has been used at least once since the key was turned on. Disable goes straight to Disabled.

Holding Accel or Coast keeps changing speed until you let go, and wherever the car is when you release becomes the new target. A quick tap on +, - or a combined button instead nudges the target by the Speed +/- Increment.

Calibrating the buttons

The Buttons tab lists every function a factory or aftermarket switch pack might have, including combined buttons like Set / Coast / -, Resume / Accel / + and Resume / Coast / Cancel. You only calibrate the ones your switch actually has. Any function you don't need, set to Unknown.

  1. With the ECU connected and no buttons touched, press Calibrate on Rest Position. Expect a reading somewhere between 4 and 5V. This is how the ECU knows no button is pressed.
  2. Hold one button down and press Calibrate on the matching function. The ECU stores the voltage it sees.
  3. Repeat for every button on the switch.
  4. Check the stored voltages are well apart, then watch the Cruise Control Input State channel while you press each button to confirm the right one is recognized.

Two common settings apply to every button. Voltage Tolerance is the window either side of a calibrated voltage that still counts as that button. Keep it smaller than half the gap between your two closest buttons, or they'll overlap. Long Press Time is how long a button must stay down before its hold function takes over. It separates a tap on a combined button (change target by one increment) from a hold (accelerate or coast). On an Enable / Disable push-button, a long hold turns cruise off.

General settings

SettingWhat it doesOur advice
Minimum SpeedBelow this, cruise can't be set or resumed, and it switches off if speed drops under it while activeFactory systems usually sit around 25 mph (40 km/h). That's a sensible starting place
Maximum SpeedAbove this, cruise can't be set or resumed, and it switches off if exceededSet it to the fastest speed you'd ever legitimately cruise at, not the car's top speed
Speed +/- IncrementHow far one tap of a +/- style button moves the targetA small, round step feels natural on the highway

Tuning how it holds speed

The control loop is a PID controller, and each gain lives in its own table in the ECU Navigator under Cruise Control. If PID is new to you, our PID explainer covers the theory. In cruise terms:

GainWhat it responds toScaleToo much looks like
ProportionalHow far you are from target right now1000 = 1% throttle per 1 km/h (about 0.6 mph) of errorA gentle but constant hunt around the set speed
IntegralHow long you've been off target1000 = 1% throttle per 1 km/h of error held for one secondSailing past the target, then back under it
DerivativeHow quickly the error is changing1000 removes 1% throttle per 1 km/h per second of speed riseTwitchy throttle near target

You need some integral. Proportional alone always settles a little short on a hill, because it only adds throttle while there's an error. Integral keeps building until the error is gone. Derivative is the brake on the whole thing: it backs throttle off as speed rushes toward target, which lets you run firmer P and I without the car overshooting. Too much P or D close to target gives a small, rhythmic surge that passengers notice long before you see it in a log.

Tuning Settings table

  • Max Control System Error: caps the speed error (in km/h, plus or minus) the controller will act on. If you hit Resume at 40 mph with a 70 mph target, the controller treats the error as this capped value instead of the full 30 mph, so the car doesn't lunge.
  • Max Throttle Ramp Rate: limits how fast the throttle can open or close while cruise is in control. Lower values feel smoother and are kinder to the driveline and suspension.

Our approach: start with modest gains, cruise on a flat road, and log Cruise Control Target Speed, Cruise Control Speed Error and Cruise Control Output. Then add P until response is brisk, add I until it holds on grades, and use D to calm any overshoot. Make one change per drive.

Troubleshooting

SymptomUsually
Won't engage at allCheck the Cruise Control Disable Reason channel first. Speed outside the min/max window or no speed signal are common
Wrong button recognizedCalibrated voltages too close together or tolerance too wide. Recalibrate and tighten the window
Resume does nothingSet hasn't been pressed since key on, so there's no stored speed
Slow, steady surge at targetProportional or derivative too high
Overshoots after a Set or ResumeIntegral too high, or ramp rate and max error too generous
Loses speed up hillsNot enough integral

Cruise control FAQ

Can I keep my factory steering wheel cruise buttons?

Often, yes. Many factory switch packs use the kind of one-wire resistor ladder this function expects. Wire it to an AVI, calibrate each button and you're done. Our walkthrough on setting up Elite cruise control covers a real install.

Does cruise control work with a cable throttle?

No. The ECU controls speed through the electronic throttle, so a drive by wire throttle body is required.

Why does my cruise feel jerky when I resume?

The controller is seeing a big error and reacting hard. Lower Max Control System Error or Max Throttle Ramp Rate so the car eases back up to speed. If you'd like us to look at your logs, book a free consultation.