Which ECU for the BMW 3 Series E46 1998–2006 (M54)?
Every ECU below has a harness for this car. They all run the engine basics; the difference is how many of the stock ECU's other functions each one can still wire, and how much spare I/O is left for add-ons such as boost control or a wideband. “Of 65” counts the stock functions at least one ECU here wires.
Confirm before building, whichever ECU you pick:
- Needs CAN (E46 K-bus/CAN); not documented for this ECU
- This car has EWS 3.3 (rolling code) immobilizer; needs a delete/bypass
The wiring below doesn't depend on these, so these harnesses are drafts until someone confirms them.
Most complete
MoTeC M190 13190
Can carry 65 of 65 stock functions, with 24 spare outputs and 26 spare inputs left.
Smallest that keeps every engine function
MoTeC M150 13150
120 ECU pins, and still gives up nothing.
“Smallest” is by pin count, not price. Picks come from harnesses with no validation errors.
What each ECU wires and gives up
MoTeC M190 13190136 pins · draft
65/65Gives up nothing24 out · 26 inDetails ▾Gives up (no free pin on this ECU)
Nothing that another ECU wires for this car.
MoTeC M150 13150120 pins · draft
65/65Gives up nothing12 out · 26 inDetails ▾Gives up (no free pin on this ECU)
Nothing that another ECU wires for this car.
AMP EFI MS3Pro EVO+ HC89 pins · draft
62/65Engine 2Power 16 out · 11 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
AMP EFI MS3Pro EVO+89 pins · draft
62/65Engine 2Power 16 out · 11 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
MaxxECU PRO REV10+155 pins · draft · 1 error
61/65Engine 3Power 132 out · 24 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Emtron KV16120 pins · draft · 1 error
61/65Engine 3Power 120 out · 21 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Emtron KV12115 pins · draft · 1 error
61/65Engine 3Power 116 out · 21 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
MaxxECU GEN2 RACE136 pins · draft · 1 error
61/65Engine 3Power 116 out · 19 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Emtron KV8106 pins · draft · 1 error
61/65Engine 3Power 18 out · 21 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
ECUMASTER EMU PRO 16120 pins · draft · 2 errors
60/65Engine 4Power 122 out · 24 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Exhaust camshaft position
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
rusEFI Proteus93 pins · draft
60/65Engine 4Power 112 out · 9 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
MaxxECU GEN2 TRACK93 pins · draft · 1 error
59/65Engine 5Power 16 out · 9 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Haltech Nexus S3 HT-21300068 pins · draft
59/65Engine 5Power 12 out · 6 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Engine oil temperature
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Emtron Shadow 868 pins · draft · 2 errors
58/65Engine 72 out · 12 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Engine oil temperature
- Intake air temperature (IAT)
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
Link G4X XtremeX 109-400067 pins · draft
58/65Engine 6Power 12 out · 10 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Idle speed control, close
- Idle speed control, open
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Link G4X FuryX 122-400068 pins · draft
58/65Engine 6Power 11 out · 8 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Idle speed control, close
- Idle speed control, open
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
MaxxECU RACE REV9+80 pins · draft · 1 error
58/65Engine 4Emissions 2Power 14 out · 5 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Emissions
Emissions hardware. Usually deleted on race and off-road builds; may set a check-engine light or fail an inspection.
- O2 sensor signal, bank 1 post-cat
- O2 sensor signal, bank 2 post-cat
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Haltech Elite 2500 HT-15130060 pins · draft
58/65Engine 6Power 12 out · 4 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- Engine oil temperature
- Idle speed control, close
- Idle speed control, open
- Intake air temperature (IAT)
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Emtron SL866 pins · draft · 1 error
56/65Engine 8Power 12 out · 9 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Engine oil temperature
- Idle speed control, close
- Idle speed control, open
- Intake air temperature (IAT)
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
MoTeC M170 1317066 pins · draft
56/65Engine 5Emissions 42 out · 6 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
- VANOS exhaust solenoid
Emissions
Emissions hardware. Usually deleted on race and off-road builds; may set a check-engine light or fail an inspection.
- Evap purge valve
- O2 sensor heater, bank 1 post-cat
- O2 sensor heater, bank 2 post-cat
- O2 sensor signal, bank 2 post-cat
MoTeC M130 1313060 pins · draft
56/65Engine 5Emissions 42 out · 5 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
- VANOS exhaust solenoid
Emissions
Emissions hardware. Usually deleted on race and off-road builds; may set a check-engine light or fail an inspection.
- Evap purge valve
- O2 sensor heater, bank 1 post-cat
- O2 sensor heater, bank 2 post-cat
- O2 sensor signal, bank 2 post-cat
ECUMASTER EMU Black63 pins · draft
55/65Engine 7Emissions 2Power 10 out · 5 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Engine oil temperature
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
- VANOS exhaust solenoid
- VANOS intake solenoid
Emissions
Emissions hardware. Usually deleted on race and off-road builds; may set a check-engine light or fail an inspection.
- Evap purge valve
- O2 sensor signal, bank 2 post-cat
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
Emtron SL662 pins · draft · 1 error
54/65Engine 9Emissions 1Power 10 out · 9 inDetails ▾Gives up (no free pin on this ECU)
Engine
Engine sensors and actuators (fuel, spark, triggers, cam/valve control). Check whether the new ECU needs each one: a second cam sensor, for example, is often optional, a VTEC or VVT solenoid is not.
- DISA intake flap
- Engine oil temperature
- Idle speed control, close
- Idle speed control, open
- Intake air temperature (IAT)
- Intake camshaft position
- Knock sensor, cylinders 4-6 (A)
- Knock sensor, cylinders 4-6 (B)
- Map-controlled thermostat
Emissions
Emissions hardware. Usually deleted on race and off-road builds; may set a check-engine light or fail an inspection.
- Evap purge valve
Power
Memory (battery-constant) feed. Only needed by ECUs with a keep-alive input.
- Battery constant (terminal 30)
ECUs without a harness for this car
- MaxxECU SPORTUnconfirmedNeeds CAN (E46 K-bus/CAN); not documented for this ECU
- AMP EFI MS3Pro UltimateUnconfirmed · discontinuedNeeds CAN (E46 K-bus/CAN); not documented for this ECU
- MoTeC M800Needs add-on · discontinuedDrive-by-wire only with an add-on: MoTeC DBW4 expander (obsolete)
- AEM EMS 30-1042Not suitable · discontinuedPlug-in for Honda NSX NA1 1991-2005 (C30A) only; this car's stock plugs differ
- AMP EFI AMP PNP Miata NA6Not suitablePlug-in for MX-5 Miata NA6 1990-93 (B6-ZE, 1.6) only; this car's stock plugs differ
- AMP EFI AMP PNP Miata NA8 94-95Not suitablePlug-in for MX-5 Miata NA8 1994-97 (BP-ZE, 1.8) only; this car's stock plugs differ
- AMP EFI AMP PNP Miata NA8 96-97Not suitablePlug-in for MX-5 Miata NA8 1994-97 (BP-ZE, 1.8) only; this car's stock plugs differ
- AMP EFI AMP PNP Miata NB1Not suitablePlug-in for MX-5 Miata NB1 1999-00 (BP-4W) only; this car's stock plugs differ
- AMP EFI AMP PNP Miata NB2Not suitablePlug-in for MX-5 Miata NB2 2001-05 (BP-Z3, VVT) only; this car's stock plugs differ
- MaxxECU C6 E38 Plug-inNot suitablePlug-in for Chevrolet Corvette C6 2005-13 (LS2/LS3/LS7) only; this car's stock plugs differ
- Link CIVICLink K20XNot suitablePlug-in for RSX Type-S 2002-04 (K20A2) only; this car's stock plugs differ
- Link E36XNot suitablePlug-in for BMW 3 Series E36 1990–2000 (M50/M52) only; this car's stock plugs differ
- Haltech Elite 1500 HT-140960 (02-04 RSX PnP)Not suitablePlug-in for RSX Type-S 2002-04 (K20A2) only; this car's stock plugs differ
- Haltech Elite 1500 HT-140961 (05-06 RSX PnP)Not suitablePlug-in for RSX Type-S 2005-06 (K20Z1) only; this car's stock plugs differ
- Haltech Elite 1500 HT-150900Not suitableOnly 4 ignition outputs; the engine has 6
- ECUMASTER EMU Black PnP ECU2JZBNot suitablePlug-in for Toyota Supra A80 1993-98 USDM (2JZ-GTE, non-VVT) only; this car's stock plugs differ
- ECUMASTER EMU Black PnP K20A2Not suitablePlug-in for RSX Type-S 2002-04 (K20A2) only; this car's stock plugs differ
- Hondata FlashProNot suitablePlug-in for AP2 2006–09 (F22C1, DBW) only; this car's stock plugs differ
- Link G4X AtomXNot suitableNo drive-by-wire; this car has an electronic throttle (the cable-conversion variant may work)
- Link G4X MonsoonXNot suitableOnly 4 ignition outputs; the engine has 6
- Link G4X S2000XNot suitablePlug-in for AP1 2000–03 (F20C), AP2 2004–05 (F22C1, cable) only; this car's stock plugs differ
- Link G4X StormXNot suitableNo drive-by-wire; this car has an electronic throttle (the cable-conversion variant may work)
- rusEFI Hellen 125 Honda KNot suitablePlug-in for RSX Type-S 2002-04 (K20A2) only; this car's stock plugs differ
- Hondata KPro4Not suitablePlug-in for RSX Type-S 2002-04 (K20A2) only; this car's stock plugs differ
- MaxxECU MININot suitableNo drive-by-wire; this car has an electronic throttle (the cable-conversion variant may work)
- MaxxECU STREETNot suitableNo drive-by-wire; this car has an electronic throttle (the cable-conversion variant may work)
- AMP EFI MicrosquirtNot suitableNo drive-by-wire; this car has an electronic throttle (the cable-conversion variant may work)
- AMP EFI MS3Pro MiniNot suitableOnly 4 ignition outputs; the engine has 6
- MaxxECU Mustang 2011-14 plug-inNot suitablePlug-in for Mustang GT 2011–14 (Coyote 5.0) only; this car's stock plugs differ
- Link MX5NAXNot suitablePlug-in for MX-5 Miata NA6 1990-93 (B6-ZE, 1.6), MX-5 Miata NA8 1994-97 (BP-ZE, 1.8) only; this car's stock plugs differ
- Link MX5NB1XNot suitablePlug-in for MX-5 Miata NB1 1999-00 (BP-4W) only; this car's stock plugs differ
- Link MX5NB2XNot suitablePlug-in for MX-5 Miata NB2 2001-05 (BP-Z3, VVT) only; this car's stock plugs differ
- Link RX7XNot suitablePlug-in for Mazda RX-7 FD 1992-2002 (13B-REW twin-turbo) only; this car's stock plugs differ
- Emtron SL4Not suitableOnly 4 ignition outputs; the engine has 6
- SpeeduinoNot suitableNo drive-by-wire; this car has an electronic throttle (the cable-conversion variant may work)
- Link SupraLinkNot suitablePlug-in for Toyota Supra A80 1993-98 USDM (2JZ-GTE, non-VVT) only; this car's stock plugs differ
- Holley Terminator X MAXNot suitableSold only as V8 engine kits (LS, Hemi, Ford) with fixed trigger patterns; no Subaru, Honda or Mazda support found
Categories are read from the stock pin names and are a guide; each item shows its full stock name. Power and ground pins aren't compared, since every harness powers and grounds the ECU. Prices aren't considered. Always check the harness's own findings before building.