What you're working with
Honda's K-series arrived in 2001 and quickly became the default four-cylinder swap. For ECU purposes it's a straightforward engine: twin overhead cams on roller rockers, one coil sitting on top of each plug with no distributor, and a crank sensor plus two cam sensors that are all Hall effect. That combination is why it runs so well on a standalone. The ECU gets clean square-wave trigger signals and fires each coil directly.
The notes below cover the K20A and K24A found in the DC5 Integra/RSX and EP3 Civic, plus the K20Z1. Other K variants share most of this, but always confirm connector colors and pin order on your own engine before powering anything up.
Which Haltech ECU for a K-series?
It comes down to the chassis and whether you need drive by wire:
- EP3 Civic Type R / Si: the Elite 1500 EP3 plug 'n' play kit bolts into the factory loom. There is also the Platinum PRO plug-in for the EP3. The EP3 hardware also suits 2002-2004 DC5 cars.
- 2005-2006 DC5 Integra / RSX: the Elite 1500 DC5 plug 'n' play kit.
- Swaps into anything else: an Elite 1500 with the basic or premium universal wire-in harness. The 1500 is the one to pick if the engine will use drive by wire.
Running a Nexus instead? See our notes on the Nexus plug-in ECU for EP3 and DC5.
Base settings at a glance
These are the values Haltech uses for the K20 in the Elite software. The K20 base maps that install with ESP already contain the trigger setup, so treat this as a checklist to confirm rather than something to type in from scratch.
| ESP setting | K20 / K24 value | Why it matters |
|---|---|---|
| Cylinders / capacity | 4, 1998cc (2.0L) or 2354cc (2.4L) | Feeds the fuel model |
| Firing order | 1-3-4-2 | Wrong order means sequential fuel and coils land on the wrong cylinder |
| Injection mode | Sequential, 4 injectors | One injector per cylinder, timed to its own intake stroke |
| Stock injector size / current | 310cc, High | Starting point only, change it the moment you change injectors |
| Ignition mode / edge / dwell | Direct Fire, Falling, Constant Charge | Must match the smart coils or you risk the coils and the ECU |
| Trigger pattern | 12+1 crank, 4+1 on the exhaust cam for home. ESP pattern: Honda K20 | Lets the ECU know crank angle and which stroke it's on |
| TDC angle | 311 | Confirm with a timing light before tuning |
| Trigger and home sensors | Hall, Falling edge, filter 0, Strong pullup | Both cam and crank are Hall effect |
| Home min RPM | 1000 | Leave at the base map value unless you have a reason to change it |
| Quick Start | Enabled | Aimed at getting the engine firing quickly on the first crank |
Even with a base map loaded, we always check ignition timing with a light before any real load goes through the engine.
Trigger sensors and wiring
The crank wheel carries 12 evenly spaced teeth with one extra tooth that gives the ECU its crank reference. Each cam has its own sensor, and the heads are stamped EX and IN so you can tell them apart. The exhaust cam (4+1 teeth) is the one the ECU uses as its home, or stroke, reference. The intake cam (4 teeth) is only there so the ECU can measure where the variable intake cam actually is.
Crank sensor
Here's the catch: the K20 and K24 crank sensors use the same three functions but in a different pin order, and the connectors are different colors. Don't assume one pinout fits both.
| Haltech trigger lead (4-core) | K20 sensor pin (blue plug) | K24 sensor pin (grey plug) |
|---|---|---|
| Trigger + | Pin 1 | Pin 2 |
| Signal Ground | Pin 2 | Pin 3 |
| 12V+ (switched) | Pin 3 | Pin 1 |
Cam sensors
Both cam sensors share a layout. Viewed from the back of the plug with the release tab on top, pins run 1, 2, 3 left to right.
| Pin | Exhaust cam (home) | Intake cam (iVTEC position) |
|---|---|---|
| 1 | Green wire, to Home + on the home 4-core lead | Blue/White wire, to a spare SPI assigned to Cam Control |
| 2 | Brown/Yellow, 0V, to Signal Ground | Brown/Yellow, 0V, to Signal Ground |
| 3 | Yellow/Black, 12V | Yellow/Black, 12V |
If you're chasing a no-start or sync error, our guide to checking crank and cam angle sensors walks through what to look for on the trigger scope.
Ignition coils
The factory coils have the igniter built in, so they wire straight to the ECU ignition outputs with no external module. Each coil has three pins: pin 1 is the trigger from an ECU ignition output, pin 2 grounds to the cylinder head, and pin 3 takes switched 12V.
Run these coils as Constant Charge on a Falling edge. The wrong dwell mode or edge can hold the coils on and cook them, and it can take an ECU output with them. Double-check it before the first crank.
Fuel system and injector data
The K20 uses a returnless fuel system whose regulator is not referenced to the intake manifold. Fuel pressure stays roughly constant while manifold pressure swings, so the pressure difference across the injector changes with load. That's why the injector flow should be mapped against injector pressure differential rather than treated as a fixed number. If there's no fuel pressure sensor on the car, the ECU leans on the Base Fuel Pressure setting to work this out, so make sure it's realistic.
Dead time matters just as much. It's the slice of every injection pulse where the injector is waking up or closing and not flowing its full rate. Get it wrong and idle and light cruise will never tune cleanly. Our injector dead time article explains how it's used.
iVTEC and VTEC: two different jobs
People lump them together, but the K-series has two separate systems and Haltech controls them with two separate functions:
- VTC (the variable part of iVTEC): a phaser on the intake cam that can advance or retard it continuously. Honda only puts it on the intake side. In the ECU this is Cam Control. It needs the intake cam sensor set up as a feedback input plus an output to drive the oil control solenoid.
- VTEC: an on/off switch between a mild low-rpm cam lobe and a bigger high-rpm lobe. In the ECU this is Cam Control Switched. It only needs an output that can drive high side. On an Elite, use a stepper output for this.
Why bother with either? One fixed cam profile is always a compromise. A cam that breathes well at 8,000 rpm idles poorly and feels soft down low. That lumpy idle on a big-cam V8 is exactly that trade-off. Switching lobes gives you two profiles, and moving the intake cam lets you set valve overlap for each rpm and load point. Better filling means more torque, and more torque at high rpm is more horsepower.
Not every K uses VTEC the same way
The K20A2 (RSX Type S, TSX) uses VTEC for performance, swapping to the big lobe around 5,800 rpm while VTC works all the time. The K20A3 (RSX base, Civic Si, Accord, CR-V, Element) uses an economy-style VTEC instead. At low rpm one intake valve barely opens, and around 2,200 rpm the second valve comes in. Know which one you have before you set the switching point, because the right strategy is completely different.
Throttle, MAP and speed sensors
| Sensor | 5V supply | Signal | Ground |
|---|---|---|---|
| Throttle position (TPS) | Pin 3, orange | Pin 2, to a spare AVI (AVI-10, white) | Pin 1, black/white |
| MAP (on the intake) | Pin 1, orange | Pin 2, to a spare AVI (AVI-9, yellow) | Pin 3, black/white |
The vehicle speed sensor is Hall effect, and yes, the pin order changed between years:
- 2002-2004: pin 1 ground, pin 2 12V, pin 3 signal.
- 2005: pin 1 12V, pin 2 signal, pin 3 ground.
Swapping gearboxes and speedo problems
From the factory, one speed sensor feeds both the gauge cluster and the ECU. Put a DC5 transmission in an EP3, for example, and the new sensor's calibration doesn't match the old cluster, so the speedo reads wrong. The clean fix is to cut the wire running to the speedometer and let the Haltech drive it. Wire the sensor to the ECU, then use the Speedo function on a spare DPO to generate a corrected speed signal for the cluster. The dash then reads correctly whatever gearbox and sensor you run.
Troubleshooting
| Symptom | Usually |
|---|---|
| Cranks, no RPM signal | K20 pinout used on a K24 crank sensor (or the reverse), or no 12V at the sensor |
| RPM shown but never syncs | Home wired to the intake cam instead of the exhaust cam |
| Cam Control can't hold a target | Intake cam sensor not assigned to Cam Control, or the solenoid output isn't set up |
| VTEC never engages | Output can't drive high side. On an Elite, move it to a stepper output |
| Fueling drifts with boost or vacuum | Injector flow not mapped over pressure differential, or Base Fuel Pressure wrong |
| Speedo reads wrong after a trans swap | Cluster still fed directly by the new sensor. Use the ECU Speedo output |
K-series FAQ
Can I use the factory coils with a Haltech?
Yes. They have built-in igniters, so they wire directly to the ECU ignition outputs. Just make sure dwell is Constant Charge and the edge is Falling.
Do I need drive by wire on a K swap?
Only if the engine you're using has an electronic throttle and you want to keep it. If so, choose an Elite 1500 or bigger. Cable throttle engines run fine on smaller ECUs.
Where do I get the ECU pinout?
The factory ECU pinout is useful for plug-in and patch-harness work. It's a diagram, so ask us and we'll send it over with advice for your build. For a deeper background read, see what's so special about Honda's K-series, or compare the older B-series and F20C notes.
Planning a K swap and want a second opinion on parts? Book a free 30-minute consultation.




