What the distributor still does with EFI
On an engine with a distributor, the coil makes one spark at a time and the spinning rotor decides which spark plug lead it goes to. Many distributors also carry the trigger: a toothed reluctor or vane and a pickup that tell the ignition system when to fire. When a Haltech ECU controls the ignition, that trigger signal goes to the ECU instead of straight to an ignition module, and the ECU decides when the coil fires.
That split of duties is where phasing problems come from. The ECU is now choosing the timing, but the rotor is still a mechanical part that only lines up with each cap terminal over a certain window of crank angle.
How the ECU times the spark
The ECU can only fire the coil after it has seen a trigger event, because it measures from that event. It knows where the trigger tooth sits relative to TDC (that's the TDC offset), works out how much advance your ignition map is asking for, and waits the difference before firing.
For example, if the trigger tooth passes the pickup at 60 degrees before TDC and your map asks for 25 degrees of advance, the ECU waits 35 degrees of crank rotation and then fires. If the map ever asked for more advance than the trigger position allows, the ECU would have no event early enough to time from.
Lock out the mechanical advance
Older distributors use flyweights and springs that swing outward with RPM, rotating the trigger and rotor to add advance. Under ECU control you don't want anything mechanical moving the trigger, so the advance mechanism has to be removed or welded/pinned so it can't move.
If you lock the mechanism, lock it at its most advanced position. The trigger has to arrive before the earliest spark you'll ever command, so giving the ECU the earliest possible trigger event keeps your full timing range available.
What goes wrong: cross-firing
Many distributors were designed to fire a coil directly from the pickup, so the trigger teeth and the rotor tip were aligned to each other at the factory. Put an ECU in charge and the spark can now happen anywhere across your timing range, and that range might not match where the rotor sits over the right terminal.
Picture the rotor tip sweeping past a cap terminal. With a correctly phased rotor, a heavily retarded spark happens with the tip just arriving at the terminal, a mid-range spark happens with the tip pointing straight at it, and a heavily advanced spark happens as the tip is just leaving it. Every spark in that range still jumps to the correct terminal.
With poor phasing, part of that range falls outside the terminal. At high advance the spark may go to the right cylinder, but when timing is pulled back (at idle, during cranking, or when knock control retards timing) the spark jumps to the neighboring terminal instead. That's cross-firing. It can be constant, or it can come and go with timing, which makes it look like a random misfire or a bad coil.
Quick test: is phasing the problem?
- Go online with the ECU and use the ignition lock feature (on Elite this is Ignition Lock Mode set to
Always On) to force a fixed timing value. - Lock the timing very retarded and see whether the engine misfires.
- Then lock it well advanced and check again.
- If the engine runs cleanly at both extremes, rotor phasing probably isn't your issue, and it's time to look at the coil, leads, plugs or trigger signal.
Phasing a distributor with a fixed rotor
Do this any time the distributor has been pulled, or you don't know how it was installed. The idea is to set the rotor so it points dead-center at the terminal in the middle of your real-world timing range, then fix the ECU's timing reference in software, never by turning the distributor again.
- Pick your timing range. Think about the lowest and highest advance you'll actually run. As an example, you might need around TDC for starting and up to about 40 degrees BTDC at light load and high RPM. The middle of that range is 20 degrees BTDC.
- Set the crank to the midpoint. Turn the engine by hand until cylinder #1 is at that midpoint (20 BTDC in our example) on its compression stroke. Close is good enough here.
- Mark the body. Put a paint pen mark on the distributor housing directly beneath the center of the cylinder #1 cap terminal.
- Pull the cap and align the rotor. Turn the distributor housing until the rotor tip points straight at your mark.
- Clamp it and leave it. Tighten the hold-down. From here on, the distributor housing does not move.
- Lock the timing. Online with the ECU, enable ignition lock and set the lock value (the Firing Angle on Elite) to match a timing mark you can see, often TDC, so 0 degrees.
- Check with a timing light. Clamp the light on the cylinder #1 lead, start the engine and see where the mark falls.
- Correct it in software. If the light doesn't show your locked value, adjust the Trigger TDC Offset Angle until it does. Resist the urge to twist the distributor.
- Unlock. Turn ignition lock back off so the map controls timing again.
Now the rotor is centered on the terminal in the middle of your timing range, so anything from TDC to 40 degrees in our example lands on the correct cylinder. For more on the software side, see how to set your TDC offset angle and how to use a timing light.
When you need an adjustable rotor
Sometimes you can phase the rotor correctly but the resulting TDC offset ends up in a place that doesn't suit the ECU, for example with the trigger arriving too late to support the advance you need. The fix is an adjustable rotor. It lets you rotate the rotor's tip relative to the shaft, so you can set the trigger position and the rotor position independently.
The order of operations flips. You set the trigger reference first, then phase the rotor to suit it:
- Go online and set the TDC offset to a sensible value that leaves plenty of room ahead of your maximum advance. Around 50 degrees usually works well.
- Enable ignition lock and set it to a value you can see on your timing marks, such as 0 degrees.
- With the timing light on cylinder #1, start the engine and rotate the distributor housing until the light shows your locked value. At this stage it's the housing you move, not the software.
- Tighten the hold-down, and don't move the housing again. Turn ignition lock off.
- Choose the midpoint of your timing range as before, and turn the crank so cylinder #1 sits at that angle.
- Mark the housing under the cylinder #1 terminal and remove the cap.
- Loosen the adjustable rotor's screws, turn the tip to point at your mark, tighten, and reassemble.
You've now set both the TDC offset and the rotor phase, and they no longer have to compromise with each other.
Troubleshooting
| Symptom | Usually |
|---|---|
| Misfire only at idle or when cranking | Rotor phasing is off, so sparks at the retarded end of the range reach the wrong terminal |
| Misfire only at high advance, light load | Rotor phasing is off, so sparks at the advanced end of the range reach the wrong terminal |
| Timing wanders on the timing light | Mechanical advance not fully locked, or a worn distributor shaft |
| Timing light reading doesn't match the ECU after phasing | TDC offset not corrected, or the distributor was moved after it was set |
| Can't get a usable TDC offset and correct phasing together | Time for an adjustable rotor |
Rotor phasing FAQ
Do I need to phase the rotor on a distributor with a separate crank trigger?
Yes. Even if the distributor only carries a cam reference, or nothing but the rotor, the rotor still has to line up with the terminal across your timing range.
Can I just rotate the distributor to set timing like the old days?
Not after phasing. Turning the housing moves the rotor away from its phased position. Make timing reference changes with the TDC offset in software.
Does this apply to dual-pickup distributors too?
Yes, and there's more detail in verifying the TDC offset with a dual-pickup distributor and our trigger systems explainer. Stuck? Get in touch and we'll help you sort it out.




