CANTCU and Haltech Setup Guide

Technical Library › Tuning tips and guidesUpdated Oct 2026

The CANformance CANTCU and a Haltech ECU share the work over CAN: the Haltech streams engine data to the TCU, and the TCU sends gear and shift requests back. Here's every setting in order, plus a channel cheat sheet you can keep open while you tune.

The short version

The CANformance CANTCU runs the transmission; your Haltech runs the engine. The two talk over CAN in both directions. The TCU listens to the Haltech's normal CAN stream (RPM, throttle, MAP and so on), and it sends gear, shift requests and other data back by imitating a Haltech I/O expander box. Upshift cuts and downshift blips are then carried out by the Haltech's own Flat Shift function, with the TCU deciding when and how hard.

How the pieces connect

DirectionWhat travelsHow
Haltech to CANTCUEngine RPM, throttle position, MAP, wheel speeds, brake switch, coolant temp, engine oil tempThe Haltech's dash data stream (that's why the dash stream has to be on)
Haltech to CANTCUAn engine load number for the TCU's torque mathA generic output on I/O Box B, DPO 1
CANTCU to HaltechGear, drive mode, trans oil temp, cut and blip requests, slip valuesPretends to be I/O Expander Box B
CANTCU to Haltech (optional)Input and output shaft RPM, target RPM, torque changePretends to be I/O Expander Box A

Step 1: Turn on the CAN features (NSP)

  1. Go to Haltech CAN System (see our Haltech CAN System article).
  2. Under Input/Output Expander Boxes, enable I/O Expander 12 (Box B).
  3. Under Displays, enable Haltech CAN Supported Dash. This is what streams engine data out to the TCU, even if you don't have a dash.
  4. Only if you want the extra values (Step 7): also enable I/O Expander 12 (Box A), and only if no real I/O box is already using Box A.

Step 2: Give the TCU an engine load signal

The CANTCU calculates engine torque from your Haltech's Base Fuel Tuning value (essentially your VE number). That value goes out on a Generic Output assigned to a virtual output on Box B:

SettingValue
NameAnything you'll recognize, such as Engine VE
Signal TypeDuty Cycle
ModeTable
Frequency100 Hz
Table axisBase Fuel Tuning (%)
Table values0% at 0 and 100% at 200, so the output is half the fuel value
Wiring › Output 1IOB DPO 1
Active State / Safe StateLow / Inactive

The halving is there because fuel values can run past 100%, and a duty cycle can't. The table squeezes the whole range into 0-100%.

Step 3: Transmission basics

In Transmission, set:

  • Transmission Type: Auto with separate controller
  • Drive Type: to suit the car (CANformance's example is Rear Wheel Drive)
  • Number of Forward Gears: 8 for an 8HP
  • Gear Detection Type: Gear Position Sensor
  • Enable the Gear Ratio, Paddle Shift Inputs and Flat Shift functions

Calibrate Gear Ratios on a drive once everything else works.

Step 4: Gear position

In Gear Detection Wiring, assign the gear input to IOB AVI 1. In Gear Detection Position, enter:

GearRN12345678
Volts00.51.01.52.02.53.03.54.04.5

Each gear is half a volt above the last, which makes it easy to spot a mistake in a log. See Gear Detection for the setting details.

Step 5: The virtual paddles

The CANTCU asks for a cut or a blip by moving a virtual paddle voltage on IOB AVI 3. You don't wire anything for this; it arrives over CAN.

  1. Open Paddle Shift Inputs › Wiring. Set Paddle Shift Option to Analogue Up and Down and Neutral Shift Method to None. Paddles only select forward gears.
  2. Assign Both Paddles Input to IOB AVI 3, Pull Up disabled.
  3. In Paddle Shift Inputs, set Up-shift Request Voltage to 4.00 V, Down-shift Request Voltage to 1.00 V and Voltage Tolerance to 0.10 V.

Resting, the signal sits at 2.5 V. 4 V means "cut now" and 1 V means "blip now". More in Paddle Shift Inputs.

Step 6: Cuts and blips with Flat Shift

Set up Flat Shift like this. The settings marked "required" are what make the TCU the one in charge; the rest are CANformance's example values for you to adjust.

SettingValueNotes
ModeWhile ActiveRequired. The cut lasts as long as the TCU asks for it.
Flat Shift Input Enable / Input SelectOn / Paddles with external controllerRequired. Triggers from the virtual paddles.
Shift Direction (Torque Reduction)Up ShiftsRequired. The upshift paddle is the TCU's cut request.
Torque Reduction MethodExample: Fuel Cut, Ignition Cut & Ignition RetardYour choice, to suit the engine and how it's driven
Recovery MethodExample: Ramp Out Cut and Retard TogetherYour choice
Max Shift Time / BlockoutExample: 3000 ms / 0 msA safety ceiling on cut length
Min TPS / Min RPMExample: 0% / 1000 rpmBelow these, no cut
Throttle Blip on Down ShiftEnabled, with Rev-match Limiter onThe limiter stops RPM overshooting until the blip ends
Blip Min Speed / Min RPMExample: about 12 mph (20 km/h) / 1200 rpmNo blips when crawling

How hard to cut

Give both the Cut Percentage and Ignition Retard tables an axis of IOB DPI 1, the TCU's cut-percent request (0-100%). Now the TCU sets the intensity shift by shift. You can add a second axis; CANformance uses IOB AVI 4, the TCU's drive mode, so each mode can shift differently. In their example a full request asks for between 12% and 20% cut and 10° to 15° of retard, depending on drive mode, and zero request asks for nothing.

How hard to blip

Give Throttle Blip Amount an axis of IOB DPI 2, the TCU's blip-percent request. CANformance's example climbs from 0% throttle at no request to 15% at a full request. Set Throttle Blip Duration with whatever axes suit you.

Before you enable blips

Test downshifts first with blips off, and confirm in a log or live view that the blip table is behaving. Start with small blip values and work up. Too much blip over-revs the engine or shoves the car forward mid-shift. Do this tuning on a dyno or a closed track.

Step 7 (optional): Extra values on Box A

If Box A is free, the CANTCU can send four more channels. Turn it on in the CANTCU software: CAN3 Configuration › Send Extra Values (IOBox A) = Enabled, then enable Box A in the Haltech (Step 1).

Channel cheat sheet

Everything arrives at 50 Hz. Set up each input in the Haltech with these scalings so the values read correctly.

Haltech inputTCU valueScaling
IOB AVI 1Gear0-4.5 V (see Step 4)
IOB AVI 2Trans oil temp0-5 V = -40 to 160 °C (-40 to 320 °F)
IOB AVI 3Cut/blip trigger1 V blip, 2.5 V idle, 4 V cut
IOB AVI 4Drive mode0-5 V, 1 V per mode
IOB DPI 1Cut request0-100% duty
IOB DPI 2Blip request0-100% duty
IOB DPI 3Clutch slip-100 to +100%
IOB DPI 4Converter slip-100 to +100%
IOA AVI 1 (optional)Input shaft RPM0-10,000 rpm
IOA AVI 2 (optional)Output shaft RPM0-10,000 rpm
IOA AVI 3 (optional)Target RPM0-10,000 rpm
IOA AVI 4 (optional)Torque change-1000 to +1000 Nm

Troubleshooting

SymptomUsually
TCU shows no RPM, throttle or MAPHaltech CAN Supported Dash isn't enabled
No IOB channels in the HaltechI/O Expander 12 (Box B) isn't enabled
Shifts feel wrong under loadThe Engine VE generic output isn't set up, or isn't on IOB DPO 1
No cut on upshiftsFlat Shift mode isn't While Active, input isn't "Paddles with external controller", or Shift Direction isn't Up Shifts
Cut on downshifts tooShift Direction set to both directions; it must be Up Shifts
Box A values are nonsenseA real I/O box is also using Box A

FAQ

Do I need to buy a Haltech I/O box?

No. The CANTCU imitates the boxes over CAN; you only enable them in the software.

Who decides the shift cut, the Haltech or the TCU?

The TCU decides when and how much. The Haltech decides how the torque comes out (fuel cut, spark cut, retard) using the tables you set.

Can you set this up for me?

Yes. Book a free consultation and we'll help plan your transmission swap. Using a TurboLamik instead? See our TurboLamik and Haltech setup guide.