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


MegaSquirt installation on BMW M20 and M30 engines, using the factory crank trigger

Updated 3/31/2020

MegaSquirtPNP G2 B8793 for the 87-93 BMW E30 325i, Porsche 944 8791 MegaSquirt Gen2 Plug and PlayCheck out our out of the box plug & play solution for 87-92 BMW E30 325i, ready to plug into your factory harness!  Typical installation takes around an hour. It’s ready to run this engine out of the box, with no modifications required.

Application(s): This article covers the 1987 through 1992 E30 chassis BMW 325i with the M20B25 motor. (Note: In 1992, the convertible was an E30 chassis, while all other models had migrated to the E36 chassis and the newer M50 engine.  For everything else, the E30 stopped after 1991.) The same mods and ignition settings apply to other M20B25 cars like the ’89-’90 525, as well as to some M30 and S38 powered cars, including the ’89-93 535, ’91-’93 M5, and ’88-’92 735.  Using this on the earlier 325e eta motor (M20B27) or other early M20, M30, or S38 versions with flywheel speed sensors will require swapping in the crank trigger assembly from the later engines.  It reportedly bolts right up.

Level of control:  Full Standalone EMS– Fuel and Ignition Control

There have been several ways to install MegaSquirt on these engines. An entry level installation can use MS2/Extra.  MS3 adds the possibility of sequential fuel injection, but to make this feature work requires modifying the distributor for a one tooth cam sensor.

MS3Pro

All three wire-in MS3Pro versions use the same wiring and settings for this engine.

Wiring

MS3Pro ECUs – the original version, the MS3Pro EVO, and the MS3Pro Ultimate – do not require any internal modifications to run this engine. Mostly, you’ll use the wiring diagrams in section 4 of the manual for your specific ECU. Here are the main application specific wiring details to keep in mind.

  • The crankshaft position sensor will wire to CKP+ and CKP- (pins 6 and 15 on the white connector). To prevent sync loss at high RPM, you will want to install a 10K resistor in parallel with the crankshaft position sensor. If you still experience sync loss, try a lower value resistor.
  • If using the stock ignition coil, you will need an external ignition module. You can use a Chevy Vortec ignition module wired to spark output A (pin 27 on the gray connector) or an aftermarket CDI box with its points input wired to the tach output (pin 24 on the white connector).
  • The IAC valve is a 3 wire IAC design. You can use PWM Out 1 to open the valve and PWM Out 2 to close it (pins 14 and 29 of the white connector, respectively).
  • To use the A/C idle up function, wire Digital Switched 12V In (gray connector pin 19) to the factory A/C input. The wiring supplies a 12 volt signal to tell the ECU to increase idle speed.
  • The tach is sometimes ECU driven – this seems to depend on production year. The MS3 can run the tach through the its dedicated tach output on pin 24 of the white connector. If using the tach output to drive an MSD box, wire the tach to the MSD tach output instead.

TunerStudio Configuration for MS3Pro

Set the following under Ignition Options / Wheel Decoder.

  • Spark mode: Toothed Wheel
  • Trigger Angle / Offset: 0
  • Ignition Input Capture: Falling Edge
  • Spark Output: Going High  It is critical to get the Spark Output Inverted setting correct, as setting this wrong can result in damage to the ignition module or coil.
  • Number of coils: Single Coil
  • Spark Hardware In Use:
    • Spark for if using a Vortec ignition module
    • Tachout if using a CDI box

Dwell settings will depend on the coil used; 2.5 to 3.0 msec is a safe starting point.  A typical rule of thumb is to back off the dwell until you can just barely detect a misfire under lean cruising conditions, then add 0.2 ms of dwell time.

Use these trigger wheel settings.

  • Trigger wheel arrangement: Single Wheel with Missing Teeth
  • Trigger wheel teeth: 60
  • Missing teeth: 2
  • Tooth #1 Angle: 97 (this may need to be adjusted slightly due to production tolerances)
  • Wheel speed: Crank Wheel

Sequential injection for MS3Pro

The factory sensors do not support sequential injection, but it is possible to modify the distributor with a one tooth trigger wheel and cam position sensor to allow sequential injection You will need to change the trigger wheel setting to Dual Wheel with Missing Teeth. Note that you may need to add 360 degrees to the Tooth #1 Angle setting if adding a cam sensor.

Suggested Parts for MS3Pro Installation

MicroSquirt

The MicroSquirt, like the MS3Pro, does not require any internal modifications to run this engine.

Wiring

Mostly, you’ll use the wiring diagrams in the MS2/Extra MicroSquirt Hardware Manual. Here are the main application specific wiring details to keep in mind.

  • The crankshaft position sensor will wire to VR1+ and VR1- (pins 32 and 33). To prevent sync loss at high RPM, you will want to install a 10K resistor in parallel with the crankshaft position sensor. If you still experience sync loss, try a lower value resistor.
  • If using the stock ignition coil, you will need an external ignition module. You can use a Chevy Vortec ignition module wired to IGN1 (pin 12) or an aftermarket CDI box with its points input wired to the WLED output (pin 17).
  • The IAC valve uses a 3-wire design. You can use FIDLE to open the valve (pin 7) and connect the closing coil to ground through a 30 ohm 50 watt resistor.
  • The tach is sometimes ECU driven – this seems to depend on production year. The MicroSquirt can run the tach through the its dedicated tach output on pin 35 of the white connector.

TunerStudio Configuration for MicroSquirt

Set the following under Tach Input / Ignition Settings.

  • Spark mode: Toothed Wheel
  • Trigger Angle / Offset: 0
  • Ignition Input Capture: Falling Edge
  • Spark Output: Going High  It is critical to get the Spark Output Inverted setting correct, as setting this wrong can result in damage to the ignition module or coil.
  • Number of coils: Single Coil
  • Spark A output pin:
    • IGN1 if using a Vortec ignition module
    • WLED if using a with CDI box

Dwell settings will depend on the coil used; 2.5 to 3.0 msec is a safe starting point.  A typical rule of thumb is to back off the dwell until you can just barely detect a misfire under lean cruising conditions, then add 0.2 ms of dwell time.

Use these trigger wheel settings.

  • Trigger wheel arrangement: Single Wheel with Missing Teeth
  • Trigger wheel teeth: 60
  • Missing teeth: 2
  • Tooth #1 Angle: 97 (this may need to be adjusted slightly due to production tolerances)
  • Wheel speed: Crank Wheel

Suggested parts for MicroSquirt installation:

MS2 V3.0

ECU Modifications

Driving the factory coil will require a BIP373 transistor, sold separately. Optionally, you can add three BIP373s for distributorless ignition – see section 5.3.1.2 of the MS2 V3.57 hardware manual for details.

Modifying the MS-II V3.0 ECU

  • Build the ECU up to trigger from the VR Input. Jumper TachSelect to VRIN and TSEL to VROUT.
  • We will also need a high current driver output. We recommend using D14 for the spark output. You’ll want to take a 330 ohm resistor, solder it to a length of wire, and wrap the resistor with heat shrink. Run this wire from IGBTIN to the top of R26 (for a V3.0 board).
  • Solder a BIP373 in the Q16 slot, using a mica insulator.
  • Jumper IGBTOUT to IGN.
  • We recommend installing the stepper IAC outputs for use for tach output and other functions, but these cars should use an MK-PWMIAC mod kit for controlling the stock IAC valve.

That’s it!

Wiring

Connect the crankshaft position sensor to pin 24 and a ground pin. Note that many of these sensors need a 10K resistor inline with the wire to pin 24 to avoid having the crank signal break up at high RPM.

Connect the coil negative terminal to pin 36.

These engines use a pulse width modulated (PWM) idle air control motor.  Use our PWM idle control mod kit to control this valve. Connect the IAC output on pin 30 to the opening coil and connect the closing coil to ground through a 30 ohm 50 watt resistor.

The tach is sometimes ECU driven – this seems to depend on production year. If your car has an ECU driven tach, connect the tach to pin 25 and set the tach output to IAC1.

TunerStudio Configuration for MS2/Extra

Set the following under Tach Input / Ignition Settings.

  • Spark mode: Toothed Wheel
  • Trigger Angle / Offset: 0
  • Ignition Input Capture: Falling Edge
  • Spark Output: Going High  It is critical to get the Spark Output Inverted setting correct, as setting this wrong can result in damage to the ignition module or coil.
  • Number of coils: Single Coil
  • Spark A output pin: D14

Dwell settings will depend on the coil used; 2.5 to 3.0 msec is a safe starting point.  A typical rule of thumb is to back off the dwell until you can just barely detect a misfire under lean cruising conditions, then add 0.2 ms of dwell time.

Use these trigger wheel settings.

  • Trigger wheel arrangement: Single Wheel with Missing Teeth
  • Trigger wheel teeth: 60
  • Missing teeth: 2
  • Tooth #1 Angle: 97 (this may need to be adjusted slightly due to production tolerances)
  • Wheel speed: Crank Wheel

Suggested Parts for MS2 V3.0:

MS2 V3.57

ECU Modifications

Driving the factory coil will require a BIP373 transistor, sold separately.

Modifying the MS-II V3.57 ECU

  • Build the ECU up to trigger from the VR Input. Set JP1 to the 1-2 position, and J1 to the 3-4 position
  • We will also need a high current driver output. We recommend using D14. Take a 330 ohm resistor, solder it to a length of wire, and wrap the resistor with heat shrink. Run this wire from IGBTIN to U1 pin 7 on the underside of the board.
  • Solder a BIP373 in the Q16 slot, using a mica insulator.

That’s it!

Wiring

Connect the crankshaft position sensor to pin 24 and a ground pin. Note that many of these sensors need a 10K resistor inline with the wire to pin 24 to avoid having the crank signal break up at high RPM.

Connect the coil negative terminal to pin 36.

These engines use a pulse width modulated (PWM) idle air control motor.   Connect the PWM idle output on pin 30 to the opening coil and connect the closing coil to ground through a 30 ohm 50 watt resistor.

The tach is sometimes ECU driven – this seems to depend on production year. If your car has an ECU driven tach, connect the tach to pin 25 and set the tach output to IAC1.

TunerStudio Configuration for MS2/Extra

Set the following under Tach Input / Ignition Settings.

  • Spark mode: Toothed Wheel
  • Trigger Angle / Offset: 0
  • Ignition Input Capture: Falling Edge
  • Spark Output: Going High  It is critical to get the Spark Output Inverted setting correct, as setting this wrong can result in damage to the ignition module or coil.
  • Number of coils: Single Coil
  • Spark A output pin: D14

Dwell settings will depend on the coil used; 2.5 to 3.0 msec is a safe starting point.  A typical rule of thumb is to back off the dwell until you can just barely detect a misfire under lean cruising conditions, then add 0.2 ms of dwell time.

Use these trigger wheel settings.

  • Trigger wheel arrangement: Single Wheel with Missing Teeth
  • Trigger wheel teeth: 60
  • Missing teeth: 2
  • Tooth #1 Angle: 97 (this may need to be adjusted slightly due to production tolerances)
  • Wheel speed: Crank Wheel

Suggested Parts for MS2 V3.57:

MS3 V3.0 with MS3X

Modifying the MS-III PCB V3.0 ECU

Using the MS3X expansion board

  • Set up the ECU up to trigger from the VR Input. Jumper TachSelect to VRIN and TSEL to VROUT for a V3.0.

There are two ways to control the coil. If using an MSD box, you can use the MS3X tach output to control the coil by connecting the tach output to the MSD white wire. Alternatively, you can use a built in high current coil driver:

  • Connect JS10 to IGBTIN (if there are any wires connected to JS10, remove them.)
  • Solder a BIP373 in the Q16 slot, using a mica insulator.
  • Jumper IGBTOUT to IGN.

That’s it!

Wiring – MS3 V3.0

Connect the crankshaft position sensor to main board pin 24 and a ground pin. Note that many of these sensors need a 10K resistor inline with the wire to pin 24 to avoid having the crank signal break up at high RPM.

Connect the coil negative terminal to main board pin 36 (unless using the MS3X tach output to drive an MSD box, in which case you will wire the MS3X tach output to the MSD white wire).

These engines use a pulse width modulated (PWM) idle air control motor. You can use the IDLE output on the MS3X card for the opening coil output, and any unused mid current output on the MS3X for the closing coil.

The air conditioning operates separately from the ECU. The ECU does get a 12 volt signal which can be used for idle up input. For an MS3, connect this to the MS3X nitrous output if you wish to use this feature.

The tach is sometimes ECU driven – this seems to depend on production year. The MS3 can run the tach through the its dedicated tach output on the MS3 connector (if using this to drive an MSD box, wire the tach to the MSD tach output).

TunerStudio Configuration for MS3 V3.0

Set the following under Tach Input / Ignition Settings.

  • Spark mode: Toothed Wheel
  • Trigger Angle / Offset: 0
  • Ignition Input Capture: Falling Edge
  • Spark Output: Going High  It is critical to get the Spark Output Inverted setting correct, as setting this wrong can result in damage to the ignition module or coil.
  • Number of coils: Single Coil
  • Spark Hardware In Use:
    • JS10 with direct coil control mods
    • Tachout if using MS3X tach output to run a CDI box

Dwell settings will depend on the coil used; 2.5 to 3.0 msec is a safe starting point.  A typical rule of thumb is to back off the dwell until you can just barely detect a misfire under lean cruising conditions, then add 0.2 ms of dwell time.

Use these trigger wheel settings.

  • Trigger wheel arrangement: Single Wheel with Missing Teeth
  • Trigger wheel teeth: 60
  • Missing teeth: 2
  • Tooth #1 Angle: 97 (this may need to be adjusted slightly due to production tolerances)
  • Wheel speed: Crank Wheel

Sequential injection

The stock sensors on an E30 do not support sequential injection, but you could modify the distributor to add a 1 tooth cam trigger to add this feature when using MS3. You will need to change the trigger wheel setting to Dual Wheel with Missing Teeth. Note that you may need to add 360 degrees to the Tooth #1 Angle setting if adding a cam sensor. See section 6.9.8 of the MS3 Hardware Manual for details.

Suggested Parts for MS3 V3.0:

MS3 V3.57 with MS3X

Modifying the MS-III V3.57 ECU

And the MS3X expansion board

  • Set up the ECU up to trigger from the VR Input. Set the JP1 jumper on the main board to the 1-2 position, and set J1 to the 3-4 position. (Note – our assembled units are configured this way by default.)

There are two ways to control the coil. If using an MSD box, you can use the MS3X tach output to control the coil by connecting the tach output to the MSD white wire. Alternatively, you can use a built in high current coil driver:

  • Connect JS10 to IGBTIN (if there are any wires connected to JS10, remove them.)
  • Solder a BIP373 in the Q16 slot, using a mica insulator.

That’s it!

Wiring – MS3

Connect the crankshaft position sensor to main board pin 24 and a ground pin. Note that many of these sensors need a 10K resistor inline with the wire to pin 24 to avoid having the crank signal break up at high RPM.

Connect the coil negative terminal to main board pin 36 (unless using the MS3X tach output to drive an MSD box, in which case you will wire the MS3X tach output to the MSD white wire).

These engines use a pulse width modulated (PWM) idle air control motor. You can use the IDLE output on the MS3X card for the opening coil output, and any unused mid current output on the MS3X (or main board pin 30 for the FIDLE output) for the closing coil.

The air conditioning operates separately from the ECU. The ECU does get a 12 volt signal which can be used for idle up input. For an MS3, connect this to the MS3X nitrous output if you wish to use this feature.

The tach is sometimes ECU driven – this seems to depend on production year. The MS3 can run the tach through the its dedicated tach output on the MS3 connector (if using this to drive an MSD box, wire the tach to the MSD tach output).

TunerStudio Configuration for MS3

Set the following under Tach Input / Ignition Settings.

  • Spark mode: Toothed Wheel
  • Trigger Angle / Offset: 0
  • Ignition Input Capture: Falling Edge
  • Spark Output: Going High  It is critical to get the Spark Output Inverted setting correct, as setting this wrong can result in damage to the ignition module or coil.
  • Number of coils: Single Coil
  • Spark Hardware In Use:
    • JS10 with direct coil control mods
    • Tachout if using MS3X tach output to run a CDI box

Dwell settings will depend on the coil used; 2.5 to 3.0 msec is a safe starting point.  A typical rule of thumb is to back off the dwell until you can just barely detect a misfire under lean cruising conditions, then add 0.2 ms of dwell time.

Use these trigger wheel settings.

  • Trigger wheel arrangement: Single Wheel with Missing Teeth
  • Trigger wheel teeth: 60
  • Missing teeth: 2
  • Tooth #1 Angle: 97 (this may need to be adjusted slightly due to production tolerances)
  • Wheel speed: Crank Wheel

Sequential injection

The stock sensors on an E30 do not support sequential injection, but you could modify the distributor to add a 1 tooth cam trigger to add this feature when using MS3. You will need to change the trigger wheel setting to Dual Wheel with Missing Teeth. Note that you may need to add 360 degrees to the Tooth #1 Angle setting if adding a cam sensor. See section 6.9.8 of the MS3 Hardware Manual for details.

Suggested Parts for MS3 V3.57:

Feedback welcome

If you have any further information, contributions, or questions about this article, please contact us.