Skip to content

Building the Firmware

WingFlight firmware is built with the same ARM GCC toolchain and Makefile structure as Rotorflight/Betaflight.

Prerequisites

  • A Linux, macOS, or WSL environment (native Windows builds of board firmware are not supported directly; the SITL simulator target is the exception, see below)
  • make

Installing the toolchain

make arm_sdk_install

Building a unified target

make unified

This is the same build path used by the project's CI (see the release/snapshot GitHub Actions workflows), producing .hex files under obj/.

Flashing a locally-built firmware

Locally-built .hex files can be flashed the same way as an official build -- via the Configurator's Firmware Flasher, using Load Firmware [Local] instead of the online build list.

Targets

Boards are built as unified targets only. The old per-board targets (the Matek F405/F411/F722/H743 and Nucleo F722/H743 builds) have been removed in favor of the unified target configurations, so build guides and examples use unified targets throughout. The one other supported target is SITL, below.

Simulator (SITL)

TARGET=SITL builds WingFlight as a native executable that talks to an external flight-dynamics model (JSBSim, optionally with FlightGear visuals) over UDP, so the firmware can be flown without a board. Unlike the ARM builds, it can be built natively on Windows:

make mingw_sdk_install    # Windows only, once: installs MinGW-w64 GCC
make TARGET=SITL          # produces obj/main/wingflight_SITL.elf

On Linux/macOS the system gcc is used. RC input arrives over MSP, so a joystick or the Configurator can connect to it over TCP; a few features that need real hardware (LED strip, OSD, soft serial and similar) are not built. The bridge, launcher, aircraft models, joystick tool and automated checks live in the wingflight-sitl-hitl repository. See the SITL README in the firmware repository (src/main/target/SITL/README.md) for ports and eeprom.bin handling.