EJ25 Engine

Technical Library › Engine Information › SubaruUpdated Sep 2026

The turbo EJ25 is one of the most common engines we see come through the shop, and it takes to a Haltech ECU well once you know its quirks. This guide covers the WRX version of the engine: what each sensor is, how it connects, and the few spots where reusing the factory part is a mistake.

The EJ25 at a glance

We're focusing on the turbocharged EJ25 as fitted to the Subaru WRX. It's a flat four, so half the cylinders sit on each side of the crank, and that layout affects how you think about cylinder numbering, cam banks and even where you mount a wideband.

SpecEJ25 turbo
LayoutHorizontally opposed (boxer) four cylinder
Displacement149.9 ci (2457 cc)
Firing order1-3-2-4
Cylinder 1Front of the engine, on the right as you sit in the driver's seat
BanksCylinders 1 and 3 on the right, 2 and 4 on the left

EJ255 vs EJ257

You'll run into two versions of the turbo engine. The EJ255 is the WRX engine: direct fire coils, drive by wire throttle, 8.4:1 compression and variable cam timing on the intake side only. The EJ257 in 2008 and later form adds variable timing on the exhaust cams too (dual AVCS). Early EJ257s came in at 8.2:1 compression, and the later dual AVCS engines went to 8.7:1. The practical difference for wiring is the number of cam sensors and cam solenoids you need to connect.

CAN on 2006 and newer cars

From 2006 the factory dash, ABS and body control modules talk over CAN bus. The Haltech Elite range supports this, which is what keeps the cluster and other factory systems alive after the swap. The factory ECU also takes vehicle speed from CAN rather than a wired sensor, and the Elite 1500 and 2500 can read that same speed data. If you want a plug-in route, the Elite 2500 + Subaru WRX MY06-10 adaptor harness kit is the place to start.

Crank and cam trigger

Engine position comes from one crank sensor plus a cam sensor, but the engine can carry anywhere from two to four cam sensors in total depending on how many cams are variable.

  • Crank wheel: 36 teeth with gaps cut in two places. One side of the wheel has a single two-tooth gap. The opposite side has two separate two-tooth gaps with one tooth standing between them. Some Ford, Suzuki and Mazda engines use the same pattern, so it's a well supported trigger type.
  • Crank sensor: a reluctor (magnetic) sensor at the front of the engine next to the crank pulley on every model.
  • Cam wheel: three teeth spaced 90 degrees apart, so you can think of it as a four tooth wheel with one tooth removed.
  • Cam sensor: Hall effect, and the same part on every EJ25. Only the cylinder 1 side intake cam sensor is used for sync.

That last point is a change from the older EJ20. On the EJ25, the bank 1 intake cam does double duty as the sync reference, and each additional variable cam gets its own sensor purely so the ECU can see where that cam is sitting.

Sensor and pinJobHaltech wire
Crank, pin 1Positive side of the reluctorTrigger 4-core, yellow
Crank, pin 2Negative side of the reluctorTrigger 4-core, green
Sync cam, pin 1Sensor supplyHome 4-core, red (12V+)
Sync cam, pin 2OutputHome 4-core, yellow (Home +)
Sync cam, pin 3Ground referenceHome 4-core, blue (signal ground)

Reversed polarity is a common start-up problem with any reluctor sensor. If the engine cranks with an erratic or missing RPM signal, swap the two crank wires before you start changing trigger settings.

Ignition coils

Each cylinder has its own coil with the igniter built in, so there's no external ignitor module to add. The coils drive straight from the ECU's ignition outputs. Pin 1 is the one nearest the locking tab.

  • Pin 1: trigger signal from an ECU ignition output (the yellow ignition wires).
  • Pin 2: ground to the cylinder head.
  • Pin 3: switched 12V from the ignition.

Set dwell to suit the coil, then confirm with a timing light that the timing you command is the timing you get.

Drive by wire throttle and pedal

The WRX runs a single electronic throttle body, and the throttle body also handles idle, so there is no separate idle valve to wire. Both the throttle and the pedal carry two position sensors each for redundancy.

WherePinFunctionHaltech wire
Throttle body6TPS1AVI 2, orange/black
Throttle body4TPS2AVI 3, orange/red
Throttle body5Sensor supply5V+, orange
Throttle body3Sensor groundSignal ground, black/white
Throttle motor2Motor driveDBW 1, brown/black
Throttle motor1Motor driveDBW 2, brown/red
Pedal6Main sensor (APP 1)AVI 4, orange/yellow
Pedal3Sub sensor (APP 2)AVI 5, orange/green
Pedal1 and 4Supply for each sensor5V+, orange
Pedal2 and 5Ground for each sensorSignal ground, black/white

Run the drive by wire setup and calibration before you ever try to start the car. A throttle that opens the wrong way or fails its sensor cross-check will stop you cold, and it's far easier to catch on the bench.

MAP sensor: use the Haltech one

There is a factory MAP sensor on the throttle body, but Subaru only used it for boost control and evap. It can't read deeper vacuum than -86.5 kPa, and an engine on overrun can pull lower than that. For tuning, plumb a vacuum line from the intake manifold to the MAP sensor built into your Haltech ECU. If you're running more boost than the internal sensor covers, fit an external sensor such as the 5 Bar TI MAP sensor on a spare AVI.

The factory MAP plug is still useful: its wiring makes a tidy home for that external sensor. Pin 1 is signal (to a spare AVI, for example AVI 9, yellow), pin 2 is ground (signal ground, black/white) and pin 3 is the 5V+ supply (orange).

AVCS variable cams

Subaru calls its variable cam timing AVCS. On a WRX only the intake cams move. On the STI both intake and exhaust cams are adjustable. Each adjustable cam has a duty controlled solenoid, and the ECU runs them closed loop using feedback from the extra cam sensors.

  • Extra cam sensors (Hall effect): pin 1 to 12V+ (grey/red), pin 2 to any spare SPI, pin 3 to signal ground (black/white).
  • Cam solenoids: pin 1 takes switched ignition 12V, pin 2 goes to any spare output. Ignition outputs are the only ones you can't use.

Once wired, set up cam control and confirm each cam reads a sensible angle before you start targeting advance. Treat full retard as off limits, as the joke goes, and check the actual cam angle in your logs rather than assuming it follows the target.

Temperature sensors

Coolant

The EJ25 coolant sensor has three pins. Unlike the earlier EJ20K sensor, it works like a normal thermistor referenced to sensor ground rather than needing a 5V feed. Pin 1 is signal ground, pin 2 goes to a spare AVI (AVI 8, violet, for example) and pin 3 feeds the factory gauge and isn't used by the Haltech.

Intake air

The factory air temp sensor lives inside the MAF. That's fine for a MAF based factory ECU, but a Haltech running on MAP needs to know the temperature of the air where the load is measured, which means close to the intake plenum. Fit a separate air temp sensor as close to the plenum as you practically can.

Knock sensor

Good news here: the factory donut style sensor is a non-resonant type and works well for tuning. It has a single signal wire (pin 1 to Knock Input 1, grey/green) and grounds through its own body to the block, so pin 2 stays empty. Make sure the mounting face is clean and the bolt is torqued properly, since that is the ground path. Then set up knock detection from logged data.

Keeping the MAF (optional)

Most people remove the MAF when they go to a Haltech, but you can keep it if you want the data.

  • Pin 1: switched 12V+ (grey/red)
  • Pin 2: MAF signal ground (black/white)
  • Pin 3: MAF signal to an AVI
  • Pin 4: air temp signal to an AVI with the pull up enabled
  • Pin 5: air temp ground (black/white)

Wideband O2: do not reuse the factory location

The factory sensor is a limited range, 4-wire wideband mounted in the exhaust manifold ahead of the turbo. Subaru put it there for quick response and corrected its reading using a predicted exhaust back pressure. On a modified engine that correction no longer matches reality, so the reading is wrong.

We strongly recommend a WB1 CAN wideband kit. On early cars with a pre-cat sensor, the LSU 4.9 sensor can go in that position (a 22 mm socket or wrench removes the factory sensor). On engines where the factory sensor sits before the turbo, weld the mount supplied with the kit into the downpipe after the turbo.

Warning

Never screw a Haltech wideband sensor into the factory pre-turbo port. The pressure and heat there give bad readings, can kill the sensor, and a false lean or rich number can lead straight to engine damage.

Injector data

Injector flow is rated with the injector held fully open. If your fuel system runs a fixed pressure that isn't referenced to the manifold, which is common on returnless setups, the effective flow changes with boost, so the flow needs to be mapped against manifold pressure. Dead time is the part of every pulse where the injector isn't flowing its full rate, covering the time to energize and open, the time to close, and the partly-open transitions in between. Both the flow and dead time data for these engines come in the base map supplied with ESP.

Finding and removing the factory ECU

The factory ECU sits in the passenger footwell, under the carpet and up against the firewall. Pull the kick panel, fold back the carpet and remove the sheet metal cover, which is held on with 10 mm bolts.

Base maps

Haltech has base maps made for the Elite plug-in adaptor harnesses, and older Platinum Pro maps ship with the ECU Manager software. Import the map into the ECU rather than just opening it, then check every sensor calibration against your actual parts. Our free base maps guide covers where they fit in.

EJ25 FAQ

Can I use the factory MAP sensor for tuning?

You can, but we don't. It stops reading at -86.5 kPa of vacuum, which clips the low end. Use the ECU's own MAP sensor or an external one with enough range.

Why won't my Haltech wideband read right in the stock O2 port?

On turbo EJ25s the stock port is before the turbo. That spot is wrong for a Haltech sensor. Move it to the downpipe after the turbo.

Will my 2006+ dash and ABS still work?

Those systems rely on CAN, which the Elite range supports. If you're unsure about your exact car, book a free consultation and we'll talk it through.