EZ30D Engine

Technical Library › Engine Information › SubaruUpdated Sep 2026

The EZ30D is Subaru's 3.0 liter flat six from the Liberty, Legacy and Outback. It's a smooth, strong engine that responds well to a proper standalone. Here's what we check and how everything connects when we put one on a Haltech Elite 2500.

EZ30D at a glance

Of the Elite range, the Elite 2500 is the Elite model this engine is supported on, and it can read both of the factory knock sensors.

SpecEZ30D
LayoutHorizontally opposed 6 cylinder
Displacement2997cc (about 183 cubic inches)
Firing order1-6-3-2-5-4
Cylinder numberingViewed from the front of the engine, 1, 3 and 5 are on the left bank; 2, 4 and 6 are on the right
Found inThird and fourth generation Liberty/Legacy, and the Outback
OEM injector flow260 cc/min

If you want a plug-in route rather than a wire-in, the Elite 2500 + Liberty/Legacy Gen 4 3.0R and GT Plug 'n' Play kit connects the ECU to the factory loom.

Know which EZ30D you have

Subaru made two quite different versions, and the differences decide how you wire throttle, idle and cams.

FeatureSeries 1 (MY00-03)Series 2 (MY04 on)
ThrottleCable, with a separate TPSDrive by wire
Idle control3-pin idle air valve on the throttle bodyHandled by the DBW throttle
Cam timingAVCS on the intake camsAVCS on the intake cams
Cam liftNoneAVLS switching lift on the intake cams
Intake manifoldAluminum, with variable length resonance chamberPlastic
Exhaust portsSiamesed, one port per headIndividual ports
Other10.7:1 compressionLighter block, hollow cams

Crank and cam triggers

The trigger pattern is Subaru specific, so it's worth understanding before you look at a trigger scope. The crank wheel sits where the flywheel bolts on and is based on 36 teeth. It has one gap of two missing teeth, and roughly a third of a turn away there's a second feature made of two 2-tooth gaps with a single tooth between them. The cam signal comes from three evenly spaced teeth on one camshaft on bank 2.

The crank sensor is a reluctor type mounted at the rear of the block. The cam sensors are Hall effect units at the back of the cylinder heads.

Sensor pinHaltech wireFunction
Crank 1Trigger 4-core, yellowReluctor positive
Crank 2Trigger 4-core, greenReluctor negative
Cam 1Home 4-core, redSwitched 12V supply
Cam 2Home 4-core, yellowCam signal
Cam 3Home 4-core, blueSignal ground

If the engine won't sync, swapping reluctor polarity is the first thing we try on the crank side. Check the result with the trigger scope before chasing anything else.

Ignition

Each cylinder gets its own coil on plug, and every coil has its igniter built in, so they run straight off the ECU's ignition outputs with no external igniter box. Pin 1 is the one closest to the locking tab.

  • Pin 1: ignition output from the ECU (yellow ignition wires in the Haltech loom)
  • Pin 2: ground, to the cylinder head
  • Pin 3: switched 12V from the ignition

Set the 1-6-3-2-5-4 firing order in the software, make sure each coil is on the ignition output your setup assigns to that cylinder, and confirm every cylinder with a timing light before you load the engine.

Throttle: DBW or cable

Series 2 drive by wire

The later engines use a single electronic throttle body. Here's how the throttle body and pedal land on the Elite loom:

PinThrottle bodyHaltech connection
1Motor positiveDBW1 (brown/black)
2Motor negativeDBW2 (brown/red)
3Sensor groundSignal ground (black/white)
4Throttle position 2AVI-3 (orange/red)
5Sensor supply5V (orange)
6Throttle position 1AVI-2 (orange/black)
PinAccelerator pedalHaltech connection
1Supply for track 25V (orange)
2Pedal position 2AVI5 (orange/green)
3Supply for track 15V (orange)
4Ground for track 1Signal ground (black/white)
5Pedal position 1AVI4 (orange/yellow)
6Ground for track 2Signal ground (black/white)

After wiring, run the DBW calibration before anything else, and read our Elite drive by wire notes if you're new to it.

Series 1 cable throttle

Early engines have a three-wire TPS on the throttle body: pin 1 takes 5V, pin 2 goes to signal ground and pin 3 is the signal, which goes to an AVI. Idle speed on these is handled by a three-pin idle valve. Only pin 1 connects to the ECU, on a spare output, and it's set up as a BAC 2-wire type. Pin 2 is switched 12V and pin 3 grounds to the head.

MAP, MAF and air temperature

The factory MAP sensor can be used. Pin 1 is signal ground, pin 2 is the MAP signal to a spare AVI (AVI-9, yellow) and pin 3 takes 5V. You can also just use the ECU's internal MAP sensor. On a turbo build running more boost than either can read, fit an external sensor such as the 5 bar TI MAP sensor on a spare AVI.

Most people delete the MAF when going standalone, but it can stay if you want it. The factory air temp sensor lives inside the MAF housing, so if the MAF goes, add an air temp sensor close to the port the MAP sensor draws its vacuum from.

MAF pinHaltech connectionFunction
1Not connected to the ECU (grey/red)Switched 12V
2Signal ground (black/white)Ground
3Spare AVIAirflow signal
4Spare AVI (AVI-7, grey)Intake air temp
5Signal ground (black/white)Ground

Temperature sensors

The EZ30D has coolant, oil and fuel temperature sensors, and all of them can be read by the Haltech. They're two-wire and don't care about polarity: one pin to a spare AVI, the other to signal ground. Use an AVI with a selectable pullup and turn it on. If the input you've chosen doesn't have one, fit a 1k resistor from the signal to 5V. The same applies to an aftermarket air temp sensor.

Cams, knock and oxygen sensors

  • AVCS: the continuously variable intake cam timing runs on the Haltech Cam Control function.
  • AVLS (Series 2): the switched intake cam lift uses Cam Control Switched.
  • Knock: both factory knock sensors work with the Elite 2500.
  • O2 sensors: the engine has four narrowband sensors, one before and one after the cat on each bank. The ECU can read them, but narrowbands tell you very little for tuning. We fit a WB2 dual channel wideband kit with its LSU 4.9 sensors in the pre-cat bungs. A 22 mm wrench or O2 socket gets the old ones out.

Injectors

The factory injectors flow 260 cc/min, measured held fully open. If your fuel system runs a fixed pressure that isn't referenced to manifold pressure, as many returnless systems do, map injector flow against manifold pressure or your fueling will drift as boost and vacuum change. Accurate dead time data matters just as much, because it covers the time lost while the injector opens and closes.

Dash and CAN

The factory cluster gets its coolant temperature over CAN, so plan for that when you configure the ECU if you want the gauge to keep working.

Base maps

Haltech base maps exist for the Elite adaptor harness setup. Import the map into the ECU rather than opening it as a replacement file, then check trigger, firing order and sensor settings against your engine before the first crank. Our base map basics article explains what a base map is and isn't.

Troubleshooting

SymptomUsually
Cranks but no syncCrank reluctor wired backward, or wrong trigger setup for the Subaru pattern
Temperature reads wildly wrongAVI pullup not enabled and no external 1k pullup fitted
Coolant gauge dead on the dashThe gauge needs its CAN data
Rough idle on a Series 1Idle valve not set as BAC 2-wire, or wired to the wrong pin
AFR changes with boost despite a stable tuneReturnless fuel system with flow not mapped against manifold pressure

EZ30D FAQ

Can I keep the factory knock sensors?

Yes. The Elite 2500 reads both, so you keep knock monitoring from both factory sensors.

Do I need a wideband?

For tuning, yes. The factory sensors are narrowband and only tell you rich or lean of stoichiometric.

Can I get the pinout and factory ECU diagrams?

Need this diagram? Ask us and we'll send it over with advice for your build. You'll also find related guides on the EJ25 and EJ20 pages.