How to MegaSquirt Your BMW E30 325i and Other M20/M30 Applications

MSPNP ALERT!

Check out our out‑of‑the‑box plug‑and‑play ECU for 1987–1992 BMW E30 325i (M20B25). It plugs into the factory harness, typical install is about an hour, and it’s ready to run with no wiring changes.
Link: MSPNP-Pro 87–92 BMW E30 325i


DIY Path Welcome


Not using the MSPNP? You can still run BMW M20/M30 (and related S38) on a standard MegaSquirt. The sections below cover wiring, TunerStudio settings, and parts for MS3Pro, MicroSquirt, MS2, and MS3 mainboard builds.

Applications (BMW fitment)
• E30 chassis BMW 325i/325is with M20B25 (1987–1991; 1992 convertible also E30)
• Similar ignition mods/settings apply to M20B25‑equipped ’89–’90 525 (E34) and some M30/S38 cars: ’89–’93 535, ’91–’93 M5, ’88–’92 735
• Earlier 325e M20B27 and some early M20/M30/S38 use flywheel sensors; convert to the later 60‑2 crank trigger assembly (commonly bolts on) for these instructions

Level of control
Full standalone EMS for BMW M20/M30: fuel and ignition control.
• Entry level: MS2/Extra
• Advanced: MS3 adds sequential fuel injection (requires a 1‑tooth cam signal via distributor modification for true sequential (LINK))

Choosing your MegaSquirt option (BMW‑focused)
• MSPNP-Pro — Plug‑and‑play for BMW E30 325i (no internal mods needed)
• MS3Pro family (EVO+ or Mini) — Wire‑in, same wiring/settings across versions
MicroSquirt — Compact wire‑in controller
MS2 V3.57 — Through‑hole or SMD mainboards, requires ignition driver for stock coil
MS3 V3.57 with MS3X — Mainboard + expansion for additional I/O

— MS3Pro — BMW M20/M30 —

Notes

All MS3Pro versions run the BMW M20/M30 without internal modifications. Use the ECU‑specific section 4 wiring diagrams as your base.

Wiring (key BMW items)

• Crankshaft position sensor → CKP+ and CKP‑ (white conn pins 6 and 15). Add a 10 kΩ resistor in parallel with the sensor to prevent high‑RPM sync loss; lower value if needed.
• Stock single coil → requires external ignition module.
– Chevy Vortec module from Spark A (gray conn pin 27), or
– Aftermarket CDI: points/trigger input from TachOut (white conn pin 24).
• IAC (3‑wire) → PWM Out 1 opens (white pin 14), PWM Out 2 closes (white pin 29).
• A/C idle‑up → Digital Switched 12V In (gray pin 19) from factory A/C request.
• Tachometer → often ECU‑driven; use TachOut on white pin 24. If an MSD is installed, use the MSD tach output instead.

TunerStudio (Ignition Options / Wheel Decoder)

• Spark mode: Toothed Wheel
• Trigger Angle/Offset: 0
• Ignition Input Capture: Falling Edge
• Spark Output: Going High (critical—wrong polarity can damage the module/coil)
• Number of coils: Single coil
• “Spark hardware in use”: Spark A for Vortec module; TachOut for a CDI box
• Dwell: start 2.5–3.0 ms; lean‑cruise misfire test then add ~0.2 ms
• Trigger wheel arrangement: Single Wheel with Missing Teeth
• Teeth: 60, Missing: 2
• Tooth #1 Angle: 97° (adjust slightly for production tolerances)
• Wheel speed: Crank wheel

Sequential injection (MS3Pro)

Stock BMW sensors don’t provide a cam signal. Add a 1‑tooth cam pickup in the distributor for sequential fuel. Change to “Dual Wheel with Missing Teeth” and you may need to add 360° to Tooth #1 Angle after adding the cam input.

Suggested parts (MS3Pro)

MS3Pro EVO+ with 8′ Harness
• GM open‑element IAT + 3/8″ NPT bung (aluminum or stainless)
Wideband O2 system

— MicroSquirt — BMW M20/M30 —

Wiring (key BMW items) — per MS2/Extra MicroSquirt Hardware Manual

• Crank sensor → VR1+ / VR1‑ (pins 32/33). Add a 10 kΩ resistor in parallel; reduce value if high‑RPM sync loss persists.
• Stock single coil → external ignition module.
– Vortec module from IGN1 (pin 12), or
– CDI box: points input from WLED (pin 17).
• IAC (3‑wire) → FIDLE opens (pin 7); closing coil to ground through 30 Ω, 50 W resistor.
• Tachometer → often ECU‑driven; use tach out on pin 35.

TunerStudio (Tach Input / Ignition Settings)

• Spark mode: Toothed Wheel
• Trigger Angle/Offset: 0
• Ignition Input Capture: Falling Edge
• Spark Output: Going High (critical)
• Number of coils: Single coil
• Spark A output: IGN1 (Vortec module) or WLED (CDI)
• Dwell: start 2.5–3.0 ms; fine‑tune as above
• 60‑2 wheel settings: Single Wheel with Missing Teeth; Teeth 60; Missing 2; Tooth #1 Angle 97°; Wheel speed Crank

Suggested parts (MicroSquirt)

MicroSquirt ECU with 8′ harness
• 3‑Bar MAP (GM or 1/8NPT)
• GM open‑element IAT + 3/8″ NPT bung (aluminum or stainless)
Wideband O2 system

— MS2 V3.57 — BMW M20/M30 —

ECU modifications

• Add a BIP373 for the stock coil.
• VR input: JP1 = 1‑2, J1 = 3‑4 (assembled units typically set this way).
• High‑current spark on D14: 330 Ω from IGBTIN to U1 pin 7 (underside).
• BIP373 at Q16 with mica insulator.

Wiring (key BMW items)

• Crank sensor → pin 24 + sensor ground; many require a 10 kΩ inline to pin 24.
• Coil negative → pin 36.
• PWM IAC → pin 30 to opening coil; closing coil to ground via 30 Ω, 50 W resistor.
• Tachometer → if ECU‑driven, tach to pin 25; set tach output to IAC1.

TunerStudio (MS2/Extra)

• Same as MS2 V3.0 above (Toothed Wheel; 60‑2; Tooth #1 97°; Going High; D14 spark).

Suggested parts (MS2 V3.57)

MegaSquirt‑II V3.57 assembled unit
MK‑BIP373 (1× stock distributor, 3× wasted spark)
JimStim + power supply
8′ Harness or 24″ Pigtail

• GM open‑element IAT + 3/8″ NPT bung (aluminum or stainless)
Wideband O2 system

 

— MS3 V3.57 with MS3X — BMW M20/M30 —

ECU modifications

• VR input jumpers: JP1 = 1‑2; J1 = 3‑4 (our assembled units ship this way).
• Coil control options:
– MS3X TachOut → MSD white wire, or
– Direct coil driver: JS10→IGBTIN; install BIP373 at Q16 (mica).

Wiring (key BMW items)

• Crank sensor → mainboard pin 24 + ground; use 10 kΩ inline to pin 24 if needed.
• Coil negative → mainboard pin 36 (unless using MS3X TachOut to MSD).
• PWM IAC → MS3X IDLE output to opening coil; closing coil from any unused MS3X mid‑current output or mainboard FIDLE (pin 30).
• A/C idle‑up → MS3X nitrous input (optional).
• Tachometer → dedicated TachOut on MS3 connector; MSD installs use MSD tach output.

TunerStudio (MS3 V3.57)

• Same as MS3 V3.0 above (Toothed Wheel; 60‑2; Tooth #1 97°; Going High; JS10 or TachOut).

Sequential injection

As above: add a 1‑tooth cam trigger and change to Dual Wheel with Missing Teeth; Tooth #1 Angle may need +360° with the added cam signal.

Suggested parts (MS3 V3.57 + MS3X)

MegaSquirt‑III V3.57 with MS3X assembled unit

• JimStim + power supply
8′ Harness or 24″ Pigtail

• GM open‑element IAT + 3/8″ NPT bung (aluminum or stainless)
Wideband O2 system

Post‑install checks for BMW M20/M30

• No sync‑loss events at high RPM; verify VR polarity, sensor gap, shielding/grounds
• Timing light matches commanded advance (use fixed‑timing test in TunerStudio)
• Stable idle and cruise AFR with wideband O2
• Harness secured with strain relief; no chafing near the valve cover or fan
• Short road test; rescan for DTCs if applicable

Troubleshooting quick hits

• No RPM in TunerStudio: reverse VR polarity, confirm shield ground at ECU end only, check 10 kΩ aid resistor.
• Misfire/backfire under load: verify Tooth #1 Angle ~97°, coil dwell, plug wire order, and whether using single‑coil vs. wasted‑spark.
• High or hunting idle: vacuum leaks, correct PWM IAC wiring (open vs. close), proper IAC settings for BMW 3‑wire valve.
• Flash/comm errors: use powered USB port/cable and maintain >12.2 V during write.
• Tach in cluster inoperative: use ECU TachOut or MSD tach output as appropriate.