Skip to content

Releases: mazduino/mazduino-fw

Nightly 2026-09-30

Nightly 2026-09-30 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 08:13

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • mazduino-mini6ch: secondary TunerStudio channel on USART3 (PB10 = TXD3, PB11 = RXD3), for a Bluetooth module such as an HC-05. The firmware previously had no secondary channel at all — the whole thing is behind #ifdef TS_SECONDARY_UxART_PORT and no Mazduino board defined it, so the binarySerial pins in TunerStudio did nothing and the ECU never sent a byte to the module. Uses the ChibiOS Serial driver (SD3), the same way the reference f407-discovery board does; the UART driver would need HAL_USE_UART, which halconf.h only enables when TS_PRIMARY_UxART_PORT is defined. Pin defaults are PB10/PB11 because rusEFI's own defaults, PC10/PC11, are the SD card's SPI3 pins on every Mazduino board. Baud follows tunerStudioSerialSpeed (38400 by default), and the channel is started once at boot, so changing that value needs an ECU restart, not just a burn. Applies to mazduino-mini6ch-bigfuel too
  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injec...
Read more

Nightly 2026-09-29

Nightly 2026-09-29 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Sep 08:06

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • mazduino-mini6ch: secondary TunerStudio channel on USART3 (PB10 = TXD3, PB11 = RXD3), for a Bluetooth module such as an HC-05. The firmware previously had no secondary channel at all — the whole thing is behind #ifdef TS_SECONDARY_UxART_PORT and no Mazduino board defined it, so the binarySerial pins in TunerStudio did nothing and the ECU never sent a byte to the module. Uses the ChibiOS Serial driver (SD3), the same way the reference f407-discovery board does; the UART driver would need HAL_USE_UART, which halconf.h only enables when TS_PRIMARY_UxART_PORT is defined. Pin defaults are PB10/PB11 because rusEFI's own defaults, PC10/PC11, are the SD card's SPI3 pins on every Mazduino board. Baud follows tunerStudioSerialSpeed (38400 by default), and the channel is started once at boot, so changing that value needs an ECU restart, not just a burn. Applies to mazduino-mini6ch-bigfuel too
  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injec...
Read more

Nightly 2026-09-28

Nightly 2026-09-28 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Sep 08:26

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • mazduino-mini6ch: secondary TunerStudio channel on USART3 (PB10 = TXD3, PB11 = RXD3), for a Bluetooth module such as an HC-05. The firmware previously had no secondary channel at all — the whole thing is behind #ifdef TS_SECONDARY_UxART_PORT and no Mazduino board defined it, so the binarySerial pins in TunerStudio did nothing and the ECU never sent a byte to the module. Uses the ChibiOS Serial driver (SD3), the same way the reference f407-discovery board does; the UART driver would need HAL_USE_UART, which halconf.h only enables when TS_PRIMARY_UxART_PORT is defined. Pin defaults are PB10/PB11 because rusEFI's own defaults, PC10/PC11, are the SD card's SPI3 pins on every Mazduino board. Baud follows tunerStudioSerialSpeed (38400 by default), and the channel is started once at boot, so changing that value needs an ECU restart, not just a burn. Applies to mazduino-mini6ch-bigfuel too
  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injec...
Read more

Nightly 2026-09-27

Nightly 2026-09-27 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Sep 07:48

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • mazduino-mini6ch: secondary TunerStudio channel on USART3 (PB10 = TXD3, PB11 = RXD3), for a Bluetooth module such as an HC-05. The firmware previously had no secondary channel at all — the whole thing is behind #ifdef TS_SECONDARY_UxART_PORT and no Mazduino board defined it, so the binarySerial pins in TunerStudio did nothing and the ECU never sent a byte to the module. Uses the ChibiOS Serial driver (SD3), the same way the reference f407-discovery board does; the UART driver would need HAL_USE_UART, which halconf.h only enables when TS_PRIMARY_UxART_PORT is defined. Pin defaults are PB10/PB11 because rusEFI's own defaults, PC10/PC11, are the SD card's SPI3 pins on every Mazduino board. Baud follows tunerStudioSerialSpeed (38400 by default), and the channel is started once at boot, so changing that value needs an ECU restart, not just a burn. Applies to mazduino-mini6ch-bigfuel too
  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injec...
Read more

Nightly 2026-09-26

Nightly 2026-09-26 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Sep 07:15

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • mazduino-mini6ch: secondary TunerStudio channel on USART3 (PB10 = TXD3, PB11 = RXD3), for a Bluetooth module such as an HC-05. The firmware previously had no secondary channel at all — the whole thing is behind #ifdef TS_SECONDARY_UxART_PORT and no Mazduino board defined it, so the binarySerial pins in TunerStudio did nothing and the ECU never sent a byte to the module. Uses the ChibiOS Serial driver (SD3), the same way the reference f407-discovery board does; the UART driver would need HAL_USE_UART, which halconf.h only enables when TS_PRIMARY_UxART_PORT is defined. Pin defaults are PB10/PB11 because rusEFI's own defaults, PC10/PC11, are the SD card's SPI3 pins on every Mazduino board. Baud follows tunerStudioSerialSpeed (38400 by default), and the channel is started once at boot, so changing that value needs an ECU restart, not just a burn. Applies to mazduino-mini6ch-bigfuel too
  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injec...
Read more

Nightly 2026-09-25

Nightly 2026-09-25 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Sep 07:19

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • mazduino-mini6ch: secondary TunerStudio channel on USART3 (PB10 = TXD3, PB11 = RXD3), for a Bluetooth module such as an HC-05. The firmware previously had no secondary channel at all — the whole thing is behind #ifdef TS_SECONDARY_UxART_PORT and no Mazduino board defined it, so the binarySerial pins in TunerStudio did nothing and the ECU never sent a byte to the module. Uses the ChibiOS Serial driver (SD3), the same way the reference f407-discovery board does; the UART driver would need HAL_USE_UART, which halconf.h only enables when TS_PRIMARY_UxART_PORT is defined. Pin defaults are PB10/PB11 because rusEFI's own defaults, PC10/PC11, are the SD card's SPI3 pins on every Mazduino board. Baud follows tunerStudioSerialSpeed (38400 by default), and the channel is started once at boot, so changing that value needs an ECU restart, not just a burn. Applies to mazduino-mini6ch-bigfuel too
  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injec...
Read more

Nightly 2026-09-24

Nightly 2026-09-24 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Sep 07:26

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • mazduino-mini6ch: secondary TunerStudio channel on USART3 (PB10 = TXD3, PB11 = RXD3), for a Bluetooth module such as an HC-05. The firmware previously had no secondary channel at all — the whole thing is behind #ifdef TS_SECONDARY_UxART_PORT and no Mazduino board defined it, so the binarySerial pins in TunerStudio did nothing and the ECU never sent a byte to the module. Uses the ChibiOS Serial driver (SD3), the same way the reference f407-discovery board does; the UART driver would need HAL_USE_UART, which halconf.h only enables when TS_PRIMARY_UxART_PORT is defined. Pin defaults are PB10/PB11 because rusEFI's own defaults, PC10/PC11, are the SD card's SPI3 pins on every Mazduino board. Baud follows tunerStudioSerialSpeed (38400 by default), and the channel is started once at boot, so changing that value needs an ECU restart, not just a burn. Applies to mazduino-mini6ch-bigfuel too
  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injec...
Read more

Nightly 2026-09-23

Nightly 2026-09-23 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Sep 07:39

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injection hardware; disabling it removes unused code
  • board_unit_tests.mk: added BOARDINC pointing to generated/controllers/generated/ so the unit test build can find rusefi_generated_mazduino.h (previously the compiler could not find this file because the unit test Makefile does not include rusefi.mk which is what adds that path for firmware builds)

Boards included

  • mazduino-compact (STM32F407VGT6, knock enabled)
  • mazduino-lite (STM32F407VGT6, no knock)
  • mazduino-mini6ch (STM32F427VGT6, ETB + traction control)
  • mazduino-core (STM32F427ZGT6, Proteus F4 pinout, dual ETB + traction control)
  • mazduino-mega100 (STM32F407VGT6, 1MB, full features, USB + CAN)
  • mazduino-mega100-512 (STM32F407VET6, 512KB, reduced feature set)

Bundle contents

Each .zip contains:

  • rusefi_console.jar - rusEFI desktop application (requires Java 11+)
  • rusefi_<board>.ini - TunerStudio definition fi...
Read more

Nightly 2026-09-22

Nightly 2026-09-22 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Sep 07:32

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-mini6ch: firmware now runs on both STM32F407 (earlier boards) and STM32F427 (current boards). It was built as F427 only, which links RAM as 192KB and places the heap and thread stacks in SRAM3 — memory the F407 does not have — so an F407 board hard-faulted at boot and USB never enumerated. Built for the F407 again; on an F427 the chip is detected at runtime and its extra 64KB SRAM3 goes to the Lua heap. Applies to mazduino-mini6ch-bigfuel too
  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injection hardware; disabling it removes unused code
  • board_unit_tests.mk: added BOARDINC pointing to generated/controllers/generated/ so the unit test build can find rusefi_generated_mazduino.h (previously the compiler could not find this file because the unit test Makefile does not include rusefi.mk which is what adds that path for firmware builds)

Boards included

  • mazduino-compact (STM32F407VGT6, knock enabled)
  • mazduino-lite (STM32F407VGT6, no knock)
  • mazduino-mini6ch (STM32F427VGT6, ETB + traction control)
  • mazduino-core (STM32F427ZGT6, Proteus F4 pinout, dual ETB + traction control)
  • mazduino-mega100 (STM32F407VGT6, 1MB, full features, USB + CAN)
  • mazduino-mega100-512 (STM32F407VET6, 512KB, reduced feature set)

Bundle contents

Each .zip contains:

  • rusefi_console.jar - rusEFI desktop application (requires Java 11+)
  • rusefi_<board>.ini - TunerStudio definition fi...
Read more

Nightly 2026-09-21

Nightly 2026-09-21 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 07:50

Automated nightly firmware build for Mazduino boards.

Breaking Changes

  • VVT target tables enlarged from 8x8 to 16x16 on mazduino-compact, mazduino-core, mazduino-lite and mazduino-mini6ch, giving finer RPM and load resolution for cam targeting. This changes the tune layout, so existing tunes are not compatible — re-flash and re-enter the VVT tables after updating. mazduino-mega100 and mazduino-mega100-512 keep the 8x8 tables
  • LTFT trim map now has its own axes (ltftLoadBins / ltftRpmBins) instead of borrowing the VE table axes. Every board gains these two fields, so all boards need a matching firmware and INI; table dimensions are unchanged on existing boards, so tune values still carry over

Added

  • BIGFUEL board variants: mazduino-compact-bigfuel, mazduino-core-bigfuel, mazduino-lite-bigfuel and mazduino-mini6ch-bigfuel. Identical hardware and pinout to the board they are named after, with a 32x32 VE table and 32x32 ignition table (stock boards stay 16x16) for finer resolution on high-output builds. Tunes are not interchangeable between a board and its BIGFUEL variant
  • BIGFUEL variants trade the engine sniffer for the bigger tables: the persistent config lives in the 64KB CCM RAM and its leftovers feed the Lua heap, so 32x32 tables overflowed CCM by ~1.4KB. Disabling the engine sniffer frees its 5000-byte WAVE_LOGGING_BUFFER from CCM. All other features are unchanged from the base board — the real-time trigger oscilloscope in TunerStudio is the only thing missing
  • Separate LTFT_LOAD_COUNT / LTFT_RPM_COUNT sizing for the long-term fuel trim map, independent of the VE table. The learned trim map stays 16x16 even on BIGFUEL boards, saving 6KB of RAM versus following a 32x32 VE table, with no loss of tuning resolution. LTFT trims are now interpolated onto the VE table when applied, so the two grids no longer have to match
  • DFCO enable switch input (coastingFuelCutSwitchPin): assign a pin to control DFCO via a physical switch; switch ON allows fuel cut per RPM/TPS/CLT parameters, switch OFF disables fuel cut entirely; leave unassigned for parameter-only control
  • Rotational Idle manual enable switch input (rotationalIdleController.switchPin): when switch is ON, rotational idle is forced active regardless of automatic CLT/TPS conditions
  • Rotational Idle RPM window (minRpm, maxRpm): configurable RPM range for rotational idle engagement; 0 = no limit; displayed in live data as rotIdleEngineTooSlow / rotIdleEngineTooFast
  • Fuel consumption output channels: trip-average L/100km and instantaneous L/hr, user-configurable via TunerStudio (Engine > Fuel Consumption); requires VSS, injection enabled, and injector flow set
  • Predefined TunerStudio gauges for fuel consumption (fuelConsumptionL100kmGauge, fuelConsumptionLitersPerHourGauge) under the Fueling category, so L/100km and L/hr are selectable from the right-click gauge picker (rusefi-core gauge_declarations.ini)
  • fuelConsumptionEnabled bit and fuelDensity (g/L, default 750 petrol) added to engine configuration; calculation runs in TripOdometer::onSlowCallback()
  • OUTCH_FuelConsumptionL100km and OUTCH_FuelConsumptionLitersPerHour added to output_channel_e enum for Lua access
  • common.mk: added $(PROJECT_DIR)/$(META_OUTPUT_ROOT_FOLDER)controllers/generated to ALLINC so the unit test build finds board-specific generated headers when META_OUTPUT_ROOT_FOLDER points outside the firmware tree
  • Nightly release workflow publishing per-board .bin, .srec, and .hex artifacts as GitHub Releases
  • Docker-based build system (build_boards.sh) using --platform linux/amd64 for consistent builds on Apple Silicon and x86-64
  • TunerStudio UI flags in prepend.txt to hide ETB, traction control, boost, rotary, Harley-Davidson, torque model, and other features not applicable to each board variant
  • mazduino-mega100: STM32F407VGT6 (1MB) board with full feature set, dual pinout support (board04 and UA4C) selectable via TunerStudio board action
  • mazduino-mega100-512: STM32F407VET6 (512KB) board with reduced feature set; firmware constrained to 384KB to keep tune storage sector (sector 7, 0x08060000) free

Changed

  • CI (build-matrix): config push-back disabled on master (push=false). Every board job in the matrix runs in parallel and each would git push regenerated configs to master, so all but the first failed with "fetch first"/non-fast-forward. mazduino commits generated files manually, so the CI push-back is unnecessary
  • CI (build-matrix): simulator build disabled on master (sim=false). mazduino ships custom boards only — bundle.mk already excludes the simulator from custom-board bundles — and the shared f407-discovery generated headers the simulator compiles against lack mazduino's added config fields (fuelDensity, DFCO switch, analog multi-switch), so the simulator cannot compile. This was previously masked because the old mazduino branch never triggered the simulator build
  • TunerStudio menu: Fuel Consumption moved from Advanced to Fuel menu (after DFCO entry)
  • TunerStudio menu: Rotational Idle moved from Advanced to Idle menu
  • TunerStudio dialog: Fuel Consumption dialog removes duplicate VSS input pin and Injector Flow fields (already configurable in their own dedicated menus)
  • _compile_unit_tests.sh updated to use boards/mazduino-lite/meta-info.env as the reference board (replacing deleted root meta-info.env)
  • generated/controllers/generated/ pre-generated headers regenerated to include CAN input/output feature structs and new enum values from the mazduino rusefi fork
  • mazduino-mega100 and mega100-512: status LED at PB7 enabled (getCommsLedPin() and LED_CRITICAL_ERROR_BRAIN_PIN both assigned to PB7)
  • mazduino-compact: second idle solenoid field corrected to secondSolenoidPin
  • mazduino-lite: knock disabled by leaving EFI_SOFTWARE_KNOCK undefined (not set to FALSE) so #ifdef guards evaluate correctly
  • mazduino-mini6ch: ts_show_traction_control true enabled as ETB-capable board is the only variant that supports traction control
  • mazduino-mini6ch and mazduino-core: stepper idle valve exposed in TunerStudio — added panel = idleStepper to the idleHwType (Idle Valve Hardware) dialog and the Use Stepper enable toggle (useStepperIdle) to the idlehw dialog in the generated INI, matching the official rusEFI layout; the Stepper option now appears alongside Solenoid with a working enable/disable control. No firmware rebuild required since the stepper config fields already exist at fixed offsets. Intentionally left hidden on mazduino-lite and mazduino-compact (hardware does not support stepper idle)
  • Dockerfile updated to handle both ports.ubuntu.com (ARM64) and archive.ubuntu.com (x86-64) Ubuntu mirror replacements for EOL Mantic release

Removed

  • Root meta-info.env (SHORT_BOARD_NAME=mazduino): generic board identifier removed; all builds now reference a named board variant

Fixed

  • mazduino-lite: onboard LPS25 barometric sensor was never configured, so initBaro() had no pins to talk to and barometric correction silently fell back to a fixed value. Set lps25BaroSensorScl/Sda to PB10/PB11, matching the schematic (BARO_SCL/BARO_SDA) and mazduino-core. Existing tunes keep their stored values, so this takes effect on a config reset or a fresh tune
  • mazduino-mini6ch: PD14 pin conflict between the stepper driver enable (stepperEnablePin, MCU-ENBL → DRV8825 EN via JP6 manual-enable jumper) and the critical-error LED. mini6ch never overrode LED_CRITICAL_ERROR_BRAIN_PIN, so it inherited the rusEFI default of PD14 and claimed the pin before the stepper could use it. Moved the critical-error LED to the dedicated onboard PB4 LED (mini6ch has 3 LEDs — PB4, PB6, PB7 — with PB7 reserved for comms), freeing PD14 for stepper enable. Requires a firmware rebuild
  • Root board_configuration.cpp: removed forward declaration of customBoardTsAction which caused undefined reference linker error in CI unit test build
  • EFI_EMBED_INI_MSD=FALSE on mega100-512: the embedded TunerStudio INI file was contributing approximately 155KB to the firmware binary; disabling it reduced firmware from 488KB to 271KB
  • EFI_EMBED_INI_MSD=FALSE on all boards (mazduino-lite, mazduino-compact, mazduino-mini6ch, mazduino-mega100): CAN feature additions grew firmware beyond the 768KB linker budget; disabling INI embedding removes the 160KB ramdisk from flash. The TunerStudio INI is published as a GitHub Releases artifact instead
  • EFI_HPFP=FALSE on all boards: high-pressure fuel pump (GDI) control is not applicable to Mazda port-injection hardware; disabling it removes unused code
  • board_unit_tests.mk: added BOARDINC pointing to generated/controllers/generated/ so the unit test build can find rusefi_generated_mazduino.h (previously the compiler could not find this file because the unit test Makefile does not include rusefi.mk which is what adds that path for firmware builds)

Boards included

  • mazduino-compact (STM32F407VGT6, knock enabled)
  • mazduino-lite (STM32F407VGT6, no knock)
  • mazduino-mini6ch (STM32F427VGT6, ETB + traction control)
  • mazduino-core (STM32F427ZGT6, Proteus F4 pinout, dual ETB + traction control)
  • mazduino-mega100 (STM32F407VGT6, 1MB, full features, USB + CAN)
  • mazduino-mega100-512 (STM32F407VET6, 512KB, reduced feature set)

Bundle contents

Each .zip contains:

  • rusefi_console.jar - rusEFI desktop application (requires Java 11+)
  • rusefi_<board>.ini - TunerStudio definition file
  • rusefi.bin - firmware binary (flash via ST-Link or DFU)
  • Flash scripts (flash_dfu.sh, flash_stlink.sh)

Flashing

  • ST-Link / SWD: run flash_stlink.sh or use STM32CubeProgrammer with rusefi.bin
  • USB DFU: hold BOOT0, then run flash_dfu.sh

TunerStudio

Launch rusefi_console.jar or open TunerStudio and point it to the .ini file for your board.