
How It Works
Firmware flashing happens entirely in the browser, but the transport differs by firmware:- ArduPilot: The board reboots into bootloader mode and the binary is written over WebUSB DFU (the STM32 DFU class). If a DFU device does not appear, the flasher falls back to the STM32 serial bootloader over WebSerial.
- PX4: PX4 does not use DFU. The
.px4binary is written through the PX4 serial bootloader over WebSerial (the GET_SYNC / PROG_MULTI / GET_CRC / REBOOT protocol). - Betaflight: The board enters DFU mode via MSP command or manual boot button, and firmware is flashed via the STM32 DFU bootloader (WebUSB), with a serial-bootloader fallback.
- iNav: Same path as Betaflight. The board enters DFU mode via MSP command or manual boot button, and the iNav binary is flashed through the STM32 bootloader.
Firmware flashing uses the WebUSB API (for DFU) and the WebSerial API (for the serial bootloader paths). Both are available in Chrome 89+, Edge 89+, or another Chromium-based browser. Firefox and Safari support neither, so flashing is not available there.
Flashing ArduPilot
1
Connect your FC
Plug in the flight controller via USB and connect in Mission Control.
2
Open the Firmware panel
Navigate to Configure > Firmware in the sidebar.
3
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.4
Select firmware
Choose the ArduPilot vehicle type (Copter, Plane, Rover, Sub) and version. Stable, beta, and development builds are available.
5
Flash
Click “Flash Firmware.” The board reboots into bootloader mode. The progress bar shows the upload status. Do not disconnect during flashing.
6
Reconnect
After flashing, the board reboots with the new firmware. Reconnect and verify the version in the board info section.
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:
The detected board is matched against a built-in database of board profiles. Each profile maps a board ID to its physical output layout, timer groups, and default settings.
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:1
Export parameters
Go to the Parameters panel and click “Export.” Save the
.param file.2
Flash new firmware
Follow the flashing steps above.
3
Restore parameters
After reconnecting with the new firmware, go to Parameters and click “Import.” Load your saved
.param file. Review the diff and apply.DFU Mode
DFU (Device Firmware Upgrade) mode is a low-level bootloader state used for flashing. Different boards enter DFU differently: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.