So, you're considering EFI? Opensource, DIY EFI

Rat Rods Rule

Help Support Rat Rods Rule:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.


Well-known member
Aug 1, 2018
Prescott Az
Heya, I wanted to share a bit of knowledge about a subject I've spent a few years researching. Retrofit and aftermarket standalone EFI. I want to express from the get go I love my carburetors, I think they are awesome. This isn't supposed to be a pro's vs cons of EFI vs Carb. But rather give you some food for thought if you were ever curious about adapting an EFI to your project or open up options for EFI controllers on your already late model EFI engine.

There are several EFI controller options. Of course, in this world you get what you pay for. In my quest for an EFI controller to suit my needs I stumbled upon an Opensource DIY system that uses a universal Arduino Mega 2560. The project is called Speeduino. I rather liked the stripped down, no marketing fluff, underdog in the EFI world.

Arduino is a universal programmable processor that is used by hobbyists & enthusiasts for home made robotics, 3D printers, home automation...I've even seen one use one to text his cell phone when the washing machine was done with his laundry. And now we can drive a car with one.

Speeduino is the the middle man between the engines wiring and sensors and the Arduino. This here is the v0.4 board:

Because it's opensource you can order a bare board and populate it yourself if you're so inclined. Or you can order a pre-populated board either directly from the Speeduino project creator or several 3rd party assemblers. As much as I love a good DIY project, I left the tedious task of soldering resistors, capacitors, IC's and transistors up to someone far more experienced at it then I and ordered a pre-populated board for $160.U.S.

A genuine Arduino Mega2560 will run you $40-$50U.S or a chinese copy/impostor will be $10ishU.S.

Speeduino can run any engine from 1cyl thru 8 cyl. 1cyl - 4cyl would be sequential, 6 & 8cyl would be waste spark and semi-batch fire.

The majority of the sensor inputs and control outputs are in the 40pin ide connector on the board. The board also has a built in 0kpa-250kpa MAP sensor (Up to roughly 21psi of boost).

Speeduino has four channels, it can directly drive injectors and uses a 5v logic output for ignition that needs external drivers for the high current load of ignition coils. Speeduino fires it's four channels sequentially so It's up to the installer to wire it to that engines specific firing order.

Of course the next step is wiring the EFI controller to your project:

A V8 will be in waste spark and semi-batch fire, it's up to the installer to figure out which two cylinders are at TDC simultaneously. For example:

The cylinders that are paired at TDC will get wired together for ignition and fuel making the system waste spark and semi-batch fire fuel. While one cylinder is on it's compression stroke the other is on it's exhaust stroke.

Another thing the installer needs to figure out is if the crank and cam sensors are Hall Effect or Variable Reluctance (VR). In the case of VR there is a signal conditioner board that get's used on the Speeduino.

With the systems hardware wrapped up it's time to focus on the software:

Starting with the Arduino and using it's IDE software we upload the Speeduino.ino sketch file from the Speeduino zip available on the wiki.

With a compile and upload of the arduino sketch we move on to the tuning software. Speeduino uses TunerStudioMS, the same as MegaSquirt but it has it's own firmware file (also in the Speeduino zip folder). It uses different control tables then MegaSquirt.

Now we let the software know about all of the sensor specifics, the crank trigger pattern, temp sensor range values, TPS open & close adc count, Wideband O2 sensor output voltage.

The registered version of TunerStudio has a tool that will build a base Volumetric Efficiency table using engine specifics to get the project up and running:

There is even an online calc to give a base ignition timing table:

At first fire up it's important to verify that the programmed ignition timing matches actual ignition timing at the crank by way of timing light.

Once the project is up and running the registered version of TunerStudio even has an auto tune feature that will make changes to the VE table based on wideband AFR input.

How does the system do? I've been really happy with it:

Within the system you also get a series of neat features like; variable valve solenoid controls, electric fans control, Launch Control & flat shift (2Step), knock control (by way of external knock module), Staged injection, Stepper or 3wire IAC controls ...and my personal favorite 2 stage nitrous controls:

You can choose between three tune algorithms. Speed Density (MAP vs RPM), Alpha-N (TPS vs RPM) or Imap/Emap that uses MAP sensor and exhaust pressure sensor to determine engine load by pressure difference.

Thanks for checking out my little write up.
I'm all in here [cl:cool:
What determined your decision to go with the Arduino product apposed to the Megasquirt? The reason I asked is, a local fella went with Megasquirt.

What did you use for the dashboard screen?

I see your set up is drive by cable.

Does the controller have the ability to do drive by wire like an 03 up GM?
Thanks for starting this thread, SUBSCRIBED [P[P[P
Last edited:
I think the immediate attraction is the pricing point. You can get a new populated v0.4 Speeduino board, VR conditioner, Arduino and ignition drivers for about 1/2 the price of a used MS2. MegaSquirt gives more tuning features. Although not an entirely accurate analogy, imagine Speeduino as the base holley carb with the fixed secondaries plate and MegaSquirt is the super expensive Holley Dominator HP Ultra carb with four corner idle screws, jet blocks with tuneable emulsion jets primary & secondary, tuneable air bleeds and interchangeable venturies. Do you need the super expensive racing carburetor on your project? Probably not. Are some of the racing carb features useful on street projects, sure. But with the base holley you can still dial in jet's, accelerator pump & vacuum secondaries spring and have a screamer.

It's a budding platform that is ever evolving and is always in development. Speeduino isn't meant for the guy who wants to order a product from a company and then expect a tech support hotline if there was ever a problem. Rather you get an entire community of DIY electronics engineers and tuners who want to help.

Speeduino also has a bounty program for coders to add features you'd like to see. For example; The nitrous controls are because I had requested them and was willing to put a couple of bucks on it. Within a day two guys were working on nitrous controls and in two days they were implemented in the firmware and Speeduino then had 2 stage nitrous control.

If someone were a coder themselves they could even write their own firmware and have any tables and controls they desire.

Speeduino adapts to whatever sensors you are using on your engine. You just need to know the values and ranges of the sensors you are working with.

There is an tachometer output, and integration into an existing instrument cluster is highly specific to the vehicle being worked on. With the Arduino there isn't canbus, but Speeduino is currently developing an adapter board that uses the Teensy controller. Teensy will be able to support canbus, but that is all still in development. Writing canbus code to control modern clusters from an aftermarket efi system is way, way out of my league.

I personally have been experimenting with a digital dash using a RaspberryPi and a universal ebay screen:

I was even considering on my own project of running just the touch screen with a digital dash mounted in the middle of the vehicles dash. But I got to thinking if a component failed, software issues, sunlight & glare. I'd completely lose all of the gauges so I think I'll run a few mechanical gauges of the engine vitals.

As cool as the gauge face type dials look, having a numeric dash is far more practical and easier to read quickly on the road.

DBW isn't currently supported. But might be one day in the future as the project develops and there is demand. In a world of electronics and tech where the driver has no direct connection to the engine, I personally like having the cable throttle just cause I know I have a direct connection to the engine...weird reason to justify I know.
Last edited:
I like to follow someones lead and not try to reinvent the wheel.
Is there specific population requirements when ordering an Arduino from Speeduino, that I need to know?
I like your setup very much and think I'd like to start at that point.

Is there a list of parts I need to consider other than the following?

Throttle body & size
Knock sensor
Injectors & size (I know the size is determined by the engine displacement)
Trigger (MSD?)
Coils (multiple, one for each cylinder ?)
Temp sensor
o2 sensor how many do I need 1 or 2 non-heated or preheated?

Thanks Jim
Spend sometime on the Speeduino wiki and feel out if you'd think this is a good platform for your project:

...Is there a list of parts I need to consider other than the following?

Throttle body & size
Knock sensor
Injectors & size (I know the size is determined by the engine displacement)
Trigger (MSD?)
Coils (multiple, one for each cylinder ?)
Temp sensor
o2 sensor how many do I need 1 or 2 non-heated or preheated?

Throttlebody size, alot like carbs are dictated by engine displacement, rpm range and horsepower levels. Same with injector sizing.

Speeduino is able to use narrowband O2 or Wideband O2 0v-5v voltage signal from a wideband gauge out. I believe there is only one O2 sensor input.

The wideband is the most useful and the tuning software uses wideband for auto tuning. I think these guys feel that if you're at a stage playing with standalone EFI controllers you've already familiarized yourself with and are using wideband gauges.

The platform is meant for coil on plug or individual coil per cylinder systems. The most popular are LS coils as they have a built in ignitor on each coil and use the 5v logic output directly.

The crank trigger is fully customizable, you just need to know tooth count, missing teeth and offset. Or in the case of the aftermarket triggers at what angle does the magnet pass the sensor.

For example; my project uses what's called the Bosch 60-2 crank trigger. If the tooth count went a full 360° if would have 60 complete teeth, however two teeth are missing. And that two missing tooth gap is at 60° BTDC cyl#1

The knock sensor integration is a brand new feature and I haven't had a chance to play with that yet, but from my understanding it utilizes an external knock control module.

Temp sensors are a thermistor, you just need to know at what temps the sensor has what resistance.

TPS is a potentiometer, the software is able to automatically able to find the sweep range of your existing TPS sensor. You just need to let it know when the throttle is closed, hit the Get current ADC count for closed throttle and the same for WOT.


Latest posts