Hey guys. I've recently installed, got running and currently tuning a Speeduino DIY standalone EFI in place of the Bosch Motronic m3.3 controlling my M60B40
I wanted to go in-depth a bit more then my Supercharged M62 build thread and share a few pics & vids of the install. Speeduino is a fully opensource universal DIY EFI that uses an Arduino Mega 2560 controller. It is an extremely cost effective way to get into the standalone EFI game. That being said, in the world of standalone EFI you get what you pay for. More expensive units will have more options, more features and more R&D.
You can order directly from the creator of the system both bare unpopulated boards and component kits or pre-assembled boards. There are also a handful of third-party guys around the globe offering assembled Speeduino boards.

All of the resources are available online and the online community surrounding speeduino is very active with people willing and wanting to help.
My own Speeduino v0.4 board with the Arduino Mega2560 while I was making a plug'n'play type set up using a gutted 88pin 484 Bosch DME.

Options and outputs you get with Speeduino:
You'll notice the board offers 4 injector outs and 4 ignition control outs. I say "ignition control out" because you can't directly drive an ignition coil from the board. You'll need a series of external drivers/control modules for each coil.
With 4 fuel & ignition outs you can run a 4cyl with sequential injection as long as there is both crank and cam signals. A 6cyl would be in semi-batch fire injection and waste spark using 3 channels of the board. A v8 will be semi-batch fire injection and waste spark using all four channels.
For my personal project I decided to go with a full MSD ignition system, MSD DIS-4, two 4cyl waste spark coils and MSD ignition wires. One could easily wire and adapt in control modules/drivers to maintain the BMW coil on plug and OE wiring.


Taking a look at the M62B44 short block I'm currently building you can see the paired cylinders that are 360 degrees apart from each other. While one cylinder is on it's compression stroke the other is on it's exhaust stroke.
Cyl's 1 & 6:

Cyls 2 & 8:

Cyls 3 & 5:

Cyls 4 & 7:

M60B40 firing order is 1-5-4-8-6-3-7-2, the Speeduino fires it's four channels in order so it's up to the end user to wire it for the firing order of that engine.
In the case of this M60 it'll be Channel 1 = Cyl's 1 & 6, Channel 2 = Cyl's 3 & 5, Channel 3 = Cyl's 4 & 7, Channel 4 = Cyl's 2 & 8.

The injectors get paired up the same way, thus calling it Semi-batch fire as they will fire two cylinders at a time sequentially.
At some point in time I figured I changed enough with the engine side wiring so I gave up with my Plug'n'play idea and hard wired the Speeduino to the vehicle.

Needed to wire the main relay to turn on with ignition switch instead of DME.

Reinstalled stock throttlebody with TPS


Since the system uses Speed Density or Alpha-N (your choice) there will be no more MAF sensor.

Now that we've got the hardware section wrapped up it's time focus on the software side of things.
Download lastest Speeduino firmware from the Speeduino Wiki:
Download the Arduino IDE:
Open up, configure and plug in the Arduino IDE for the Arduino Mega 2560 via USB, open the Speeduino.ino file in the previously downloaded firmware:

Verify Arduino sketch and upload to controller.
Download TunerStudioMS software:
I encourage everyone to register (pay) for the software as you get a lot of neat features with the registered version, however the software will still do what you need as the free version.
When you open studio and create a new project, you'll need to browse for the Speeduino.ini firmware and load it in TunerStudio.
Then open the BaseTune.msq in the Speeduino firmware folder as the base for your tune to modify and set up for your application.

With the registered version you can make your own gauges:

(still need to fix ignition angle description)
Setting up fueling for the M60B40 with stock 19lb injectors

The M60 uses a bosch 60-2 trigger wheel for crank sensor. The leading tooth offset is 60 degrees BTDC.

I was having trouble getting mine running with -60 offset, but it worked on 300 offset. With the latest firmware update I tried -60 again and it worked just fine.

The registered version of TunerStudio has a neat feature that will build a base VE table for your application by inputing engine specs:

There is an online calc that will build a base ignition timing map for your application as well:

With TPS closed, in calibrate TPS window hit Closed throttle ADC count get current. Then go to WOT and do the same for Full throttle ADC count

Calibrate Coolant and Intake Air temp sensors:

Calibrate AFR gauge input voltages for your specific brand of AFR gauge:

Tune the desired AFR ratio table, TunerStudio has a wizard to populate this table for you as well.

In spark settings lock ignition advance to an angle the engine can run at, I chose 10 degrees. Verify the ignition timing at the crank with a timing light matches the programmed locked out ignition advance. I ended up needing to change the crank trigger angle from -60 to -59 for timing light to match Speeduino.


Once Speeduino is all set up, configured, base tuned it should crank, fire up and run. I didn't use an IAC, you can use your Bosch 3-wire IAC and configure to maintain idle RPM.
With the engine running and coolant temp is up to operating temp TunerStudio has a self tuning VE that uses the AFR table and AFR gauge input to make changes to the VE table for you:

Here is my first fire up after install:
Thanks for checking out my Speeduino thread :-)
I wanted to go in-depth a bit more then my Supercharged M62 build thread and share a few pics & vids of the install. Speeduino is a fully opensource universal DIY EFI that uses an Arduino Mega 2560 controller. It is an extremely cost effective way to get into the standalone EFI game. That being said, in the world of standalone EFI you get what you pay for. More expensive units will have more options, more features and more R&D.
You can order directly from the creator of the system both bare unpopulated boards and component kits or pre-assembled boards. There are also a handful of third-party guys around the globe offering assembled Speeduino boards.

All of the resources are available online and the online community surrounding speeduino is very active with people willing and wanting to help.
My own Speeduino v0.4 board with the Arduino Mega2560 while I was making a plug'n'play type set up using a gutted 88pin 484 Bosch DME.

Options and outputs you get with Speeduino:
- 4 injector channels
- 4 Ignition outputs
- Fully protected input channels for CLT, IAT, TPS and O2
- Optional VR conditioner mount on crank and cam inputs (Which you'll need for BMW vr crank & cam sensors)
- MAP sensor mount location
- DRV8825 stepper module mount location (not needed for BMW 3 wire IAC)
- 4 medium-current spare outputs (e.g., fuel pump, thermo fan, boost control, VVT, etc)
- 5 unpopulated/configured optional low-current spare outputs in "proto" section, including tachometer and clutch/launch control
- A single 40-pin IDC connector includes all pins required for the board with the exception of the 12v inputs
- Built in 0kpa-250kpa MAP sensor
- Works with TunerStudio software, same as MegaSquirt
You'll notice the board offers 4 injector outs and 4 ignition control outs. I say "ignition control out" because you can't directly drive an ignition coil from the board. You'll need a series of external drivers/control modules for each coil.
With 4 fuel & ignition outs you can run a 4cyl with sequential injection as long as there is both crank and cam signals. A 6cyl would be in semi-batch fire injection and waste spark using 3 channels of the board. A v8 will be semi-batch fire injection and waste spark using all four channels.
For my personal project I decided to go with a full MSD ignition system, MSD DIS-4, two 4cyl waste spark coils and MSD ignition wires. One could easily wire and adapt in control modules/drivers to maintain the BMW coil on plug and OE wiring.


Taking a look at the M62B44 short block I'm currently building you can see the paired cylinders that are 360 degrees apart from each other. While one cylinder is on it's compression stroke the other is on it's exhaust stroke.
Cyl's 1 & 6:

Cyls 2 & 8:

Cyls 3 & 5:

Cyls 4 & 7:

M60B40 firing order is 1-5-4-8-6-3-7-2, the Speeduino fires it's four channels in order so it's up to the end user to wire it for the firing order of that engine.
In the case of this M60 it'll be Channel 1 = Cyl's 1 & 6, Channel 2 = Cyl's 3 & 5, Channel 3 = Cyl's 4 & 7, Channel 4 = Cyl's 2 & 8.

The injectors get paired up the same way, thus calling it Semi-batch fire as they will fire two cylinders at a time sequentially.
At some point in time I figured I changed enough with the engine side wiring so I gave up with my Plug'n'play idea and hard wired the Speeduino to the vehicle.

Needed to wire the main relay to turn on with ignition switch instead of DME.

Reinstalled stock throttlebody with TPS


Since the system uses Speed Density or Alpha-N (your choice) there will be no more MAF sensor.

Now that we've got the hardware section wrapped up it's time focus on the software side of things.
Download lastest Speeduino firmware from the Speeduino Wiki:
Download the Arduino IDE:
Open up, configure and plug in the Arduino IDE for the Arduino Mega 2560 via USB, open the Speeduino.ino file in the previously downloaded firmware:

Verify Arduino sketch and upload to controller.
Download TunerStudioMS software:
I encourage everyone to register (pay) for the software as you get a lot of neat features with the registered version, however the software will still do what you need as the free version.
When you open studio and create a new project, you'll need to browse for the Speeduino.ini firmware and load it in TunerStudio.
Then open the BaseTune.msq in the Speeduino firmware folder as the base for your tune to modify and set up for your application.

With the registered version you can make your own gauges:

(still need to fix ignition angle description)
Setting up fueling for the M60B40 with stock 19lb injectors

The M60 uses a bosch 60-2 trigger wheel for crank sensor. The leading tooth offset is 60 degrees BTDC.

I was having trouble getting mine running with -60 offset, but it worked on 300 offset. With the latest firmware update I tried -60 again and it worked just fine.

The registered version of TunerStudio has a neat feature that will build a base VE table for your application by inputing engine specs:

There is an online calc that will build a base ignition timing map for your application as well:

With TPS closed, in calibrate TPS window hit Closed throttle ADC count get current. Then go to WOT and do the same for Full throttle ADC count

Calibrate Coolant and Intake Air temp sensors:

Calibrate AFR gauge input voltages for your specific brand of AFR gauge:

Tune the desired AFR ratio table, TunerStudio has a wizard to populate this table for you as well.

In spark settings lock ignition advance to an angle the engine can run at, I chose 10 degrees. Verify the ignition timing at the crank with a timing light matches the programmed locked out ignition advance. I ended up needing to change the crank trigger angle from -60 to -59 for timing light to match Speeduino.


Once Speeduino is all set up, configured, base tuned it should crank, fire up and run. I didn't use an IAC, you can use your Bosch 3-wire IAC and configure to maintain idle RPM.
With the engine running and coolant temp is up to operating temp TunerStudio has a self tuning VE that uses the AFR table and AFR gauge input to make changes to the VE table for you:

Here is my first fire up after install:
Thanks for checking out my Speeduino thread :-)
Comment