Boost Control User's Guide

Technical Library › Functions and TuningUpdated Sep 2026

Closed loop boost control on a Haltech Elite looks intimidating until you see the logic behind it. The ECU starts from a duty you give it, waits for boost to settle, then trims toward your target. Here is how we set it up in ESP for street and mild race cars, and how to read the logs when it misbehaves.

Start with the wastegate

A turbo is a feedback loop. Exhaust spins the turbine, the turbine drives the compressor, more boost makes more exhaust energy, and without something to interrupt it that cycle keeps escalating until a part fails. The wastegate is the interruption. It is a valve that lets some exhaust skip the turbine and go straight to the dump or exhaust, so only as much energy as you need reaches the turbine wheel.

The valve is held shut by a spring behind a diaphragm. A reference hose from the compressor side pushes on that diaphragm, and once the pressure beats the spring, the valve cracks open and boost levels off. Swap the spring and you change that baseline boost. That baseline is the floor for everything that follows.

What the ECU adds

To run more than spring pressure, you put a boost control solenoid in that reference line. The Elite pulses it with a 0 to 100% duty signal. The solenoid bleeds off part of the signal meant for the diaphragm, so the wastegate sees less pressure than the manifold does and stays closed longer. As a rule, more duty means more pressure bled away and more boost.

ESP gives you two ways to decide that duty:

  • Open loop: you fill in a duty table and the ECU outputs exactly that. Think of it as a mechanical bleed valve you can map against RPM or other axes. It never corrects itself.
  • Closed loop: you give the ECU a target pressure. It starts from a base duty, compares real boost to the target, and adds or removes duty to close the gap. This is where most of the confusion lives, so the rest of this guide focuses on it.

If you want the short version of that comparison first, read closed vs open loop boost control.

The Boost Control tab, setting by setting

SettingWhat it doesOur advice
ModeOpen Loop or Closed LoopClosed Loop for nearly every street car once the base table is sorted
Controlled ParameterManifold Pressure (the same MAP sensor used for fuel and timing) or Wastegate PressureManifold Pressure unless you run a two-solenoid CO2 system
Output FrequencyPulse rate for the solenoid, in HzNot a tuning value. Match the solenoid; 33 Hz suits Haltech's HT-020400
Minimum Duty CycleA floor that overrides lower table values, covering the solenoid's dead zoneOften 5 to 10% on the Haltech solenoid. Find the duty where boost first climbs above spring pressure
Maximum Duty CycleA ceiling that overrides higher table values100% is fine with the Haltech solenoid
Control Point OffsetHow far below target boost must reach before closed loop starts correctingBegin near 5 psi. Raise it if boost overshoots early, lower it if boost sags early
Max DerivativeBoost must be rising slower than this rate before corrections are allowedTry 15 psi/sec, then log the MAP Derivative channel and set it a little under what you see while boost builds
Overboost OffsetSwitches the solenoid output off if boost passes target by this muchAbout 5 psi while tuning, tightened to about 3 psi when finished
Enable Spool AssistHolds 100% duty from positive boost until the control point, then drops to base dutyLeave it off while you learn the system. Long wastegate plumbing can make it overshoot
Closed Loop Min TPSThrottle opening required before closed loop runsAround 80%, so the engine has the airflow to actually reach target

Note that overboost offset is not a fuel or spark cut. It simply releases the wastegate so boost falls back. For real engine protection, set up an overboost cut as well.

Why min TPS matters so much

Picture cruising up a hill at half throttle. The engine physically cannot reach a 20 psi target there, so an unguarded controller keeps stacking duty, trying to fix an error it can never fix. Engineers call that integral wind-up. Now floor it. All that stored duty hits the solenoid at once and boost rockets past target. Requiring a high throttle opening before corrections start keeps the controller out of situations it cannot win.

The tables that do the real work

Closed Loop Base Duty Cycle

This is the most important table in the whole function. Each value should be the duty that lands exactly on a given target. The default horizontal axis is Boost Control Target Pressure, not measured boost, and that is deliberate: when the target changes, the ECU looks up the matching duty and starts from a sensible place. Start the column that matches your spring pressure near your minimum duty and add duty as targets rise.

Closed Loop Target Pressure

What you want the engine to make. Entirely your call.

Controller Start Delay

A wait time after boost passes the control point before short term corrections kick in. Correct too soon and the ECU sees boost below target, adds duty, and causes the overshoot you were trying to avoid. Err on the long side; too long only costs a brief pause. Boost builds slower at low RPM, so use longer delays there and shorter ones up top.

Proportional, Integral and Derivative gains

A boost system is slow by nature. The ECU pulses a solenoid, which changes diaphragm pressure, which moves a valve, which changes exhaust flow, which eventually changes compressor output. Aggressive gains just chase something that cannot respond that quickly. Our approach:

  • Proportional: reaction to the size of the error. Keep it low. Too much gives fast oscillation.
  • Integral: helps push the last bit of the way when the error is small. Start low and raise it only if target arrives too slowly. Too much gives a slow, rolling oscillation.
  • Derivative: damps how fast the output changes. Leave it at or near zero on a normal wastegate setup. It earns its place on fast systems like CO2 control.

Our PID mapping article covers the theory in more depth.

Long term trim (Elite 1500 and 2500)

On the Elite 1500 and Elite 2500, long term trim watches what the short term controller is doing. If short term keeps adding duty, long term slowly learns a positive offset; if it keeps removing duty, it learns a negative one. That lets the base table adapt to climates and altitudes you never tuned in.

SettingWhat it doesOur advice
Enable Long Term TrimTurns learning onOff until you understand the short term behavior
LTT Min TPSThrottle required before learning80 to 90%. Short term can work lower, but don't let it learn there
LTT Min RPMNo learning below this RPMThe RPM where your turbo can first hold target
LTT Max RPMNo learning above this RPMRoughly 500 RPM under the rev limiter
LTT Min GearLowest gear allowed to learn (needs gear detection)3rd is usually the first gear stable enough
Long Term Trim GainHow quickly it learns100 to 200 is a good start. A good base table leaves it little to do
Reset / Apply To Base TableClears learned values, or folds them into base duty and clearsApply after a few sessions of consistent data

Worked example: three boost settings on a knob

Say a customer wants low, mid and high boost on a rotary trim module: 12 psi, 17 psi, and 19 psi rising to 21 psi above 5500 RPM. The base duty table needs a column for each of those target values, 12, 17, 19 and 21 psi. On the 12 psi setting, only the 12 psi column matters, so we adjust just that column until logs show 12 psi with almost no correction. Same for 17. On the high setting, we tune the 19 psi column below 5500 RPM and the 21 psi column above it.

Two mistakes we see all the time. One is changing the axis to plain manifold pressure, which takes away the ECU's way of choosing a starting duty for each target. The other is filling the whole table with one number, which means only one target can ever be hit accurately.

Reading the logs

SymptomUsually
Boost dips well under target right after the control point, then recovers slowlyBase duty too low. Raise it until the dip is gone. Most obvious with spool assist on
Duty and boost both flutter quickly around targetProportional too high. Halve it and retest
Boost swells and sags in slow wavesIntegral too high. Halve it and retest
Overshoot as boost arrivesController start delay too short, control point offset too small, or spool assist with long plumbing
Spike when going from part to full throttleClosed loop min TPS too low

For solenoid plumbing and output setup, see Elite boost control settings.

FAQ

Should I use spool assist?

Sometimes. It can bring boost in faster, but it can also overshoot. Tune without it first, then try it and compare logs.

Why won't my Elite hold target at part throttle?

By design. Below closed loop min TPS the ECU runs base duty only, because the engine may not be able to reach target there.

Can long term trim replace tuning the base table?

No. It is meant to nudge a good table, not build one. If it is learning large numbers, fix the base duty. Need a hand? Book a free consultation.