Using Bosch BIP373 Ignition Modules With MegaSquirt


Updated 12/8/2022

The BIP373 has been discontinued by Bosch and we replaced it with an uprated OnSemi EcoSpark IGBT.  This same article applies to any legacy installations that may have the Bosch part or new installations using the OnSemi part.  Usage is identical.

The Bosch BIP373 transistor has served in many different Bosch ECUs and ignition modules. They’ve been available to ECU and ignition module manufacturers for some time in wholesale lots, but now we are making these transistors available in retail quantities for the hobbyist market.  We’ve done extensive testing on them and found these make a great drop-in replacement for the now-discontinued VB921 IGBT ignition drivers commonly used in MegaSquirt ECUs. Not only do they drop right in, we’ve found they are much harder to destroy if the output or dwell settings are incorrectly configured.  In fact we’ve been trying really hard and we haven’t been able to burn one up yet!

Like the VB921, the BIP373 is a transistor in a TO-220 package designed to drive ignition coils.  The pinout is exactly the same as a VB921. There is one key difference in building a Megasquirt using BIP373s: The BIP373 is not in an insulated package, so you must use a mica insulator when mounting it on a heat sink.  Other than that, it works in any circuit that you can use a VB921 in.  When driving a single BIP373 from a processor output, we recommend using a 330 ohm resistor in the wire connected to the base for both MS1/Extra and MS2/Extra applications.  When driving two BIP373s from one output for firing coil-on-plug applications in a wasted spark mode, you’ll also use 330 ohm resistors, one resistor per BIP373.

Bosch BIP373s have both output current limiting and thermal shutdown built in. The data sheet puts the typical current limiting at 11.5 amps with a maximum of 16 amps.  The thermal shutdown range is between 185 and 210 degrees C with a typical shutdown at 195C.   Basically that means the BIP373 will provide a hotter spark that a VB921, and if you configure it wrong and it gets hot, it shuts itself down instead of turning on the pyrotechnics.

According to the datasheet and confirmed by our tests, the BIP373s can charge up more current than a VB921s could and can do so fairly safely due to the very functional current limiting and thermal shutdown.  There is however still a need to responsibly set your dwell and configure your spark output setting properly.  If you let it get out of control the BIPs will not be the weak point now, they’ll get hot and thermally shut themselves down and stop sparking until they cool down.  You’ll know something is wrong because your spark will go away and your ECU and particularly the BIPs will be HOT… but the spark will come back after they cool down.  Correct the problematic setting (spark output reversed or too much dwell) and try again.  Note that with the BIP373 IGBT component no longer being the weak link, the next link in the chain could be the coil itself if you overdwell it or invert the spark output.  Coils can melt too.  We tried really hard on our test rig and weren’t able to melt one, but there are a ton of coils out there, your mileage may vary.

The proper way to set dwell is with a scope, using the trick we’re about to share as a backup.  As a ‘quick and dirty’ method of setting dwell without a scope we recommend checking the temperature of the BIP373s while slowly increasing dwell.  Maybe start at 1.2-1.5ms and increase it .2ms at a time while idling the car – if they become too warm to the touch, back the dwell off a bit until they stabilize at ambient temp or barely above.  Check it again after running the car at different RPMs to verify the same results.  They shouldn’t run hot all the time…

Here a couple tips on installing the BIP373 in V3.0 and V3.57 ECUs. This covers just the outputs; inputs will depend the engine.

BIP373s on a MS1

Hardware mods required:

  • Jumper IGBTOUT to IGN to send to IGBT ignition coil driver signal out of pin 36 on the DB37. (V3.0 only)
  • Cut out R57 if fitted on a V3.0 (This won’t be there on my units, though.).

Now for constructing the outputs…

  • Get a 330 ohm 1/4w resistor and cut the leads down to about 1/2″ at each end. Maybe a bit less.
  • Tin each end of the resistor with a bit of solder.
  • Cut a 5″ piece of hookup wire (22ga is fine) and strip just a 1/8″ or so. Tin the stripped wire with solder.
  • Melt the tinned wire tip to one end of the tinned 330 ohm resistor tip and let it cool.
  • Heatshrink wrap this wire/resistor assembly.
  • On a V3.0, use this wire/resistor combo to jumper the ‘top’ (top as in when you facing the silkscreen side of the PCB, with the text so that you can read it normally) lead of R26 on a V3.0 to IGBTIN on the opposite side of the PCB. (On a V3.57, this is kind of tricky. It’s easier to use pin 7 on the U1 socket instead, on the underside of the board.) On a V2.2, you’ll run this to the right of R25 instead.
  • Now, you will be constructing duplicates of this BIP373 circuit for each coil output you need, if you’re using more than 1 output. You can mount the additional BIP373s on a second heat sink stacked on top of the first, attached on top with long screws. Or you can mount the BIP373s to the case.
  • Each BIP373 will need a resistor-on-a-wire assembly, running to its left leg. You will get the BIP373 input signal from the following locations:
Output Input Location (V2.2) Input Location (V3.0) Input Location (V3.57)
Spark A Right of R25 Top of R26 U1 pin 7
Spark B Right of R28 Top of R29 U1 pin 8
Spark C Right of R26 Top of R27 U1 pin 9
Spark D Top of R14 with R14 removed Bottom of R1 with R1 removed Bottom of R1 with R1 removed
Spark E U1 pin 10 JS7 JS7
Spark F JP1 pin 5 JS10 JS10
  • The center leg of the BIP373 is its spark output. We have found that the IAC traces on a V3.0 or V3.57 can carry enough current for normal use, so you can use one IAC trace for each spark output. You may need to add an extra connector on 12 cylinder applications if you are not using a V3.57.  This is our recommended pinout, which we use in our assembled ECUs, for up to 8 cylinder engines.
Output V3.0 / V3.57 board connection V3.0 / V3.57 DB37 pin
Spark A IGN 36
Spark B IAC2B 31
Spark C IAC2A 29
Spark D IAC1B 27
  • V2.2 traces are a bit thinner. You can solder to the underside of the DB37 directly, or cut a hole in the case and add a second connector for the spark outputs. Your call.
  • Connect the right leg of each BIP373 to a ground, preferably the DB37 ground pins, the right leg of R37 or R38, or the bottom hole of R43. The proto grounds can be used but this creates more noise on the signal ground plane. On a V2.2, solder these to the ground pins on the DB37, or route them out second ground wires on the added connector mentioned above.

External wiring:

  • Connect the negative terminals of the coil to the pins specified in the above pinout.

Settings required:

Under Spark Settings:

  • Set Spark Output Inverted: Yes. Setting this wrong will overheat the BIP373.

Enable dwell control and adjust as needed to match the coils you are using. Set the dwell at a very low value to start with (we’ve found Ford EDIS coils have especially short dwell times) and increase it slowly. Back it off if the BIP373s become hot to the touch.

The instructions below work for either MS2 B&G code or MS2/Extra.

BIP373s on a MegaSquirt-II V3.0 or V3.57 – Single Coil

Hardware mods required:

  • Jumper IGBTOUT to IGN to send to IGBT ignition coil driver signal out of pin 36 on the DB37. (not needed on a V3.57)
  • Cut out R57 if fitted on a V3.0 (This won’t be there on my units, though.).
  • Our assembled V3.57 boards, if not fitted for direct coil control, will have a jumper from JS10 to the center hole of Q16. Remove the jumper from the center hole of Q16, and reroute it from JS10 to IGBTIN.
  • Solder a BIP373 into the Q16 slot, using a mica insulator.

External wiring:

  • Connect the negative terminals of the coil to pin 36.

Settings required:

  • Set Spark Output to “Going High (Inverted).” Setting this wrong can overheat the BIP373s or damage the coils.
  • If using MS2/Extra, set Spark A output pin to JS10.

Enable dwell control and adjust as needed to match the coils you are using. Set the dwell at a very low value to start with and increase it slowly. Back it off if the BIP373s become hot to the touch.

This is an MS2/Extra only version, for V2.0.0 or later code.

BIP373s on a MegaSquirt-II V3.0 or V3.57 – multiple coils

Hardware mods required:

  • Jumper IGBTOUT to IGN to send to IGBT ignition coil driver signal out of pin 36 on the DB37. (not needed on a V3.57)
  • Cut out R57 if fitted on a V3.0 (This won’t be there on my units, though.).
  • Our assembled V3.57 boards, if not fitted for direct coil control, will have a jumper from JS10 to the center hole of Q16. Remove the jumper.

Now for constructing the outputs…

  • Get a 330 ohm 1/4w resistor and cut the leads down to about 1/2″ at each end. Maybe a bit less.
  • Tin each end of the resistor with a bit of solder.
  • Cut a 5″ piece of hookup wire (22ga is fine) and strip just a 1/8″ or so. Tin the stripped wire with solder.
  • Melt the tinned wire tip to one end of the tinned 330 ohm resistor tip and let it cool.
  • Heatshrink wrap this wire/resistor assembly.
  • Use this wire/resistor combo to jumper the ‘top’ (top as in when you facing the silkscreen side of the PCB, with the text so that you can read it normally) lead of R26 to IGBTIN on the opposite side of the PCB. (On a V3.57, this is kind of tricky. It’s easier to use pin 7 on the U1 socket instead, on the underside of the board.)
  • Now, you will be constructing duplicates of this BIP373 circuit for each coil output you need. For a 1 cylinder, you’ll use 1 output; for more cylinders, you will use 1 output for every 2 cylinders. You can mount the additional BIP373s on a second heat sink stacked on top of the first, attached on top with long screws. Or you can mount the BIP373s to the case.
  • Each BIP373 will need a resistor-on-a-wire assembly, running to its left leg. You will get the BIP373 input signal from the following locations:
Output Input Location (V3.0) Input Location (V3.57)
Spark A Top of R26 U1 pin 7
Spark B Top of R29 U1 pin 8
Spark C Top of R27 U1 pin 9
Spark D JS11 JS11
Spark E JS5 JS5
Spark F JS4 JS4
  • The center leg of the BIP373 is its spark output. We have found that the IAC traces can carry enough current for normal use, so you can use one IAC trace for each spark output. You may need to add an extra connector with the V3.0 on 12 cylinder applications, or if you are running a stepper IAC.  You can use this pinout if you are not running a stepper IAC, for up to 8 cylinders. Note that if you have anything else connected to the IAC pins, you must remove these wires before connecting the BIP373 outputs.
Output Board connection DB37 pin
Spark A IGN 36
Spark B IAC2B 31
Spark C IAC2A 29
Spark D IAC1B 27
  • Connect the right leg of each BIP373 to a ground, preferably the DB37 ground pins, the right leg of R37 or R38, or the bottom hole of R43. The proto grounds can be used but this creates more noise on the signal ground plane.

External wiring:

  • Connect the negative terminals of the coil to the pins specified in the above pinout.

Settings required:

  • Set Spark Output to “Going High (Inverted).” Setting this wrong can overheat the BIP373s or damage the coils.
  • Set Spark A output pin to D14.

Enable dwell control and adjust as needed to match the coils you are using. Set the dwell at a very low value to start with (we’ve found Ford EDIS coils have especially short dwell times) and increase it slowly. Back it off if the BIP373s become hot to the touch.

For further information please see the Conditions of Use page.