The Standalone Motorsports Open Source ECM is a fully open-source engine control module platform designed for high-performance racing engines. Derived from the FOME project, it provides OEM-level control and customization.
- Fuel Injection: Supports sequential and batch injection (up to 12 injectors), 3D VE tables, enrichment, decel fuel cut, and closed-loop AFR using wideband O₂ sensors.
- Ignition Control: Wasted spark and fully sequential up to 12 cylinders. Includes base, cranking, and idle timing maps, multi-spark, boost retard, dwell settings, and launch control.
- Sensors: Interfaces for crank/cam (VR/Hall), MAP, TPS, CLT, IAT, oil/fuel pressure, flex-fuel, knock sensors, and more. ~10 analog inputs plus thermistor channels.
- Outputs: Controls injectors, ignition coils, ETB, fans, pumps, and relays via low/high-side drivers and PWM outputs.
- Communication: CAN (1 Mbit/s), USB (virtual COM), UART, SPI/I²C. Data logging via SD card, live telemetry, and integration with TunerStudio and FOME Console.
- Configuration: Real-time tuning, sensor calibration, multi-dimensional maps, closed-loop strategies, and Lua scripting engine for custom algorithms.
- Safety: Includes rev/boost limiters, fuel/oil pressure shutdown, fault handling with LEDs and limp modes, and debug streaming.
- Firmware: Runs on STM32F4/F7 ARM Cortex-M with a deterministic main loop. Sensor acquisition, fuel/spark calculations, and actuator commands occur every control cycle.
- Timing: Precise injector/spark timing via hardware timers synchronized to crank position. Lower-priority tasks like logging run asynchronously.
- Extensibility: Lua scripts can manipulate sensor/actuator values in each onTick cycle.
- MCU: STM32F4/F7 with CAN, USB/UART, high-speed ADCs, timers, and sufficient I/O.
- Inputs: VR/Hall crank & cam, analog sensors (MAP, TPS, IAT, CLT), digital switches (clutch, AC, neutral), flex-fuel, wheel speed, O₂ sensors.
- Outputs: Injector drivers, ignition coils, ETB PWM, fan/pump relays, logic outputs, CAN stream.
- Expansion: SPI/I²C for additional sensors or modules.
- Build: Uses gcc-arm-none-eabi. Build via Make or STM32CubeIDE. Flash with FOME Console, STM32CubeProgrammer, or dfu-util.
- Tuning: Configure fuel and ignition maps, calibrate sensors, tune PID for idle and ETB, set limiters and enable closed-loop AFR. Use TunerStudio/FOME Console.
- Start-Up: Bench test → install → crank → tune. Monitor AFR, temp, RPM, and knock.
- Live Tuning: On-the-fly edits to tables. Real-time data via CAN or USB. Logs to SD or external logger.
- Diagnostics: LEDs indicate faults. Debug Mode exposes internal states. Fault codes shown in software.
- Safety: CRITICAL LED lights on major faults. ECU cuts fuel/spark on sync loss, overboost, etc.
- Toolchain: gcc-arm-none-eabi, Java JDK, Make, CMake. Use GitHub for contributions.
- Standards: Modular code, real-time safe. Write unit tests and documentation. All code under GPLv3+.
- Based On: FOME and rusEFI
- Maintainer: MykeHaunt
- License: GPLv3+
+----------------------------+
| Engine Sensors |
| (MAP, TPS, CLT, Crank, Cam)|
+-------------+--------------+
|
v
+------------------+
| ECM Firmware |
| (STM32F4/F7 MCU) |
+--------+---------+
|
+--------+---------+
| Fuel & Ignition |
| Controllers |
+--------+---------+
|
+----------+-----------+
| Injector | Coil Ctrl |
| Drivers | (Spark) |
+----------+-----------+
|
+-------------+-------------+
| Engine Actuators |
| (Injectors, Coils, ETB) |
+----------------------------+
+------------------+
| Flash Firmware |
+--------+---------+
|
v
+--------+---------+
| Connect ECU via |
| FOME Console/TS |
+--------+---------+
|
v
+--------+---------+
| Calibrate Sensors |
+--------+---------+
|
v
+--------+---------+
| Set Fuel/Ign Maps |
+--------+---------+
|
v
+--------+---------+
| Tune on Dyno/Road |
+------------------+
See the changelog, or by release.