
How It Works
Firmware flashing uses the WebSerial API to communicate with the flight controller’s bootloader. The process varies by firmware:- ArduPilot and PX4: The board enters DFU (Device Firmware Upgrade) mode, and the firmware binary is written over the serial connection.
- Betaflight: The board enters DFU mode via MSP command or manual boot button, and firmware is flashed via the STM32 bootloader protocol.
WebSerial is required for firmware flashing. This means Chrome 89+, Edge 89+, or another Chromium-based browser. Firefox and Safari do not support WebSerial.
Flashing ArduPilot
View board info
The panel shows the detected board name, current firmware version, and board ID. This information comes from the
AUTOPILOT_VERSION MAVLink message.Select firmware
Choose the ArduPilot vehicle type (Copter, Plane, Rover, Sub) and version. Stable, beta, and development builds are available.
Flash
Click “Flash Firmware.” The board reboots into bootloader mode. The progress bar shows the upload status. Do not disconnect during flashing.
Flashing PX4
The PX4 section follows a similar flow:- Connect the FC and open the Firmware panel.
- The PX4 section auto-detects PX4-compatible boards.
- Select the PX4 version (stable or development).
- Flash and wait for the progress bar to complete.
- Reconnect after reboot.
Flashing Betaflight
Betaflight flashing has a few extra considerations:- Enter DFU mode: Some boards require holding the boot button while plugging in USB. Others can enter DFU via an MSP command from the CLI panel.
- Select the Betaflight target that matches your board.
- Choose the firmware version.
- Flash the firmware binary.
- Reconnect after reboot.
Board Detection
Mission Control auto-detects the connected board using multiple methods:| Method | Description |
|---|---|
MAVLink AUTOPILOT_VERSION | Board ID, firmware version, capabilities |
MSP BOARD_INFO | Betaflight board identifier string |
| USB VID/PID | Vendor and product IDs from the WebSerial device info |
Board Profiles
Mission Control includes profiles for popular flight controllers. A board profile contains:- Board name and ID for auto-detection
- Output mapping: Which physical pins map to which motor/servo outputs
- Timer groups: STM32 timer assignments that determine which outputs share timers (affects DShot vs PWM mixing)
- Protocol support: Which output protocols each timer group supports (PWM, DShot, or both)
- Notes: Special outputs like solder pads, LED pads, or dedicated servo headers
Backup and Restore
Before flashing, back up your current parameters:Export parameters
Go to the Parameters panel and click “Export.” Save the
.param file.DFU Mode
DFU (Device Firmware Upgrade) mode is a low-level bootloader state used for flashing. Different boards enter DFU differently:| Method | When to use |
|---|---|
| Software reboot to bootloader | Most boards support this via MAVLink or MSP command. The firmware panel triggers it automatically. |
| Boot button | Hold the boot/DFU button on the FC while plugging in USB. Useful when firmware is corrupted and cannot respond to commands. |
| Boot pads | Some boards have boot pads that must be shorted while powering on. Check your board’s documentation. |
Troubleshooting
Board not detected
Board not detected
Make sure the FC is powered and connected via USB. Try a different USB cable (data-capable, not charge-only). On Linux, check serial port permissions (
dialout group).Flash fails midway
Flash fails midway
Do not unplug the board. Try again. If the firmware is corrupted, enter DFU mode manually (boot button method) and reflash. The bootloader is separate from the main firmware and is not overwritten.
Wrong board detected
Wrong board detected
The auto-detection relies on board ID from the firmware. If you previously flashed the wrong target, the board ID may be incorrect. Use the manual board selection override to pick the correct target.
Parameters lost after flashing
Parameters lost after flashing
A major version upgrade (e.g., ArduPilot 4.4 to 4.5) may reset parameters. Always export your parameters before flashing. After flashing, import the backup and review the diff.