Cruise control now works through the stock 1988 Pontiac Fiero cruise stalk!
Several must haves that are burried across several Haltech technical guides:
- DBW
- Vehicle Speed - from a wheel speed input
- Brake Switch wired into ECU
- Gear detection or neutral switch
- If Manual Transmission - Clutch Wired into ECU
- 1 or 2 input wires, must carry all the signals, voltage or resistance must vary based on resistors for each circuit
Now my Fiero did not have stock cruise, but I added the stock cruise stalk. So all the wiring terminations start at the clutch switch, brake switch, cruise stalk, 203, and Haltech ECU and Haltech 12 I/O Expansion module. For all the Haltech connections, I list the pin location. It is starts with an A or C it is the Haltech ECU, if it is IO12 then it is a pin location the expansion module - many of these could originate at the ECM depending on how many I/O you have:

Now there are a couple gotchas in this chart.
VSS Input:You will need to know the teeth count per 1 revolution for your VSS (F40 3.091 Final Drive = 68 teeth)
You will also need to know the rotations per mile for your drive wheels (275/35/18 rear tires = 815 rotations per mile)
The field for
DriveShaft RPM Sensor - Number of Teeth is maxed at 50, so just enter 50 as it really does not matter.
The key is the
Drive Train Sensor - Pulses/Mile = this is # VSS Teeth for 1 rotation x # Tire rotations per mile.
For my setup with the 3.091 final drive it is 68 x 815 = 55,420. From there you can bump it up and down to make the ECU match GPS.

Now you have the Vehicle Speed into the ECU, but it needs to get to the Fiero Speedometer.
VSS Output:The Rebel LS does not come with a VSS output, so you have to make your own using one of the Generic Outputs.
ON this page, you give the output a name = "Speedometer Output", select the signal type = "Frequency", and set Mode = "Table"

Next is to setup the "Frequency" table. We need to know the frequency (cycles = pusles per second) for a 4000 pulses per mile (most older electronic GM speedometers need a 4000 PPM input) @ 100 miles per hour.
4000 cycles/mile x 100 miles/hour / 60 minutes/hour / 60 seconds/minute = 111.11 hz @ 100 mph. This output is linear for all speeds, so some simple math and you get this table:

Now we have to assign the "Output" to a pin location and configure it:
Working Speedometer:Now that everthing is done in the Haltech for the speedometer output, it still didn't work for me. So I added in the typical speedometer buffer circuit that is needed for any OBD2 ecm to drive the Fiero speedometer. It is shown at the bottom of this schematic. With this circuit between the Rebel LS Speedo output and pin G on the 203 connector, the speedo will now work:

Once you have a working speedometer, now you can start working on getting cruise to work.
Cruise Speed Reference:From what I gather, the drivetrain speed within the ECU is not good enough for the Haltech speed signal for cruise, so I enabled a Left Rear Wheel Speed Sensor. You don't actually need to install a wheel speed sensor, you can "T" off the VSS Output signal going to Pin G of the 203 (and your speedometer) and send it back to the Haltech ECU once you have setup a SPI input for it.
LR Wheel Speed Input:Basically just turn on the Left Rear Wheel Speed toggle and enter "4000" pulses per mile since that is what we set the output driving the speedometer to.

I used an SPI input, set it for "Digital - Frequency", Edge Select = "Falling", Sensor Type = "Hall Effect", Pull Up = "Disable"

This should get you a working wheel speed for cruise.
Gear Detection:Since the F40 is a manual transmission, I need to enable Gear Detection:
First thing to note is that the FWD F40 6 speed manual didn't make the cut in the available lists of transmissions (neither did the 2005-2009 LS4 for that matter - L33 FTW), so I used a T56 manual.
Transmission Type = "Manual"
Gear Detection Type = "Gear Ratio"
Funtions = Toggle "Gear Ratio" to the ON state

Since the F40 has the VSS on the differential teeth, I went ahead and chose the km/hr per 1000 Engine RPM.
From there you then have to calculate (or use the calibrate function for each gear)
Formula is: 1000 RPM /(Gear ratio * Differenial Ratio) * (Tire Dia (in) * 3.14 / 12 / 5280) * 60

Now the ECU should know what gear the transmission is in.
Brake Pedal:The brake pedal is easy as the brake wire in the pedal harness just needs spliced into the +12V from the brake switch on the brake pedal.
Clutch Switch:The clutch switch is an available function, so it needs turned on and assigned to an input. I chose to use an AVI input for this. Since I was using a 5V feed for the clutch and cruise inputs, the clutch sends a 5V back to the ECU when it is pressed. This could have just as easily been a 12V circuit.
Input Mode = "State/Switch/Button Input", Switch On Voltage = "4.0V", Switch Off Voltage = "2.0V", Pull Up = "Disable"
Cruise Control:Now at long last we are ready to setup the actual cruise control inputs. This takes some pre-planning and some trial and error (at least for us non-electrical engineering types).
You can use either 1 or 2 inputs for the cruise commands. The 2nd input can only be to Engage/Disengage cruise
All other cruise commands need to share the same input and have varying voltages based on which button was pressed.
Since I was using 5V for the cruise commands, I used the 2nd input for Engage/Disengage as it was one less resistor and voltage splits I would need.
Here is the first Cruise table, most of this is pre-populated. The one thing I did change was the Maximum Wheel Speed Difference = 100 mph. This was due to troubleshooting my front wheel speed sensor for traction control. If you have any other wheel speed sensors that are not working (and calibrated), then you need to include this setting or Cruise will not work.

The cruise buttons page really had me stumped for a while. For a mid 80s Fiero, Input Type = Analogue - Voltage
Then you need to setup available cruise commands. Typical 80s GM application will just have 3: Set/Coast -, Resume/Accell +, and Resting Position. Resting position really isn't a command, but an absence of a command. Now
Set/Coast - & Resume/Accel + will need to come in on the same wire, so before they join, you need to add in a couple of resistors. Since I have 5V to work with, I installed a 220k Ohm resistor on the Set/Coast - wire and a 1M Ohm resistor on the Resume/Accel + wire. Once wired up, you press the lever for the command, then press calibrate. Then move to the next. Last while not pressing anything calibrate the resting position.

Here are the input configurations. The separate input toggle is switched on.
Input (these are the cruise commands on the buttons page), is an AVI, Pull Up = Disable.
The Separate Engage Input = AVI input, Switch ON Voltage = 4.0, Switch OFF Voltage = 2V, Pull Up = "Disable", Button Mode = "Momentary"

It was a fair amount of work to get figured out, but having working cruise is AWESOME!
[This message has been edited by fieroguru (edited 07-09-2025).]