In this tutorial, I’ll show you how to flash and update Betaflight firmware on your FPV drone flight controller. I’ll also cover troubleshooting common issues you might encounter during the process.
For those new to Betaflight, don’t forget to check out my step-by-step setup guide after flashing firmware, where I’ll guide you through configuring your flight controller for its first flight.
Preparation Before Flashing Betaflight
Betaflight Configurator is the software for both flashing Betaflight firmware to the flight controller and configuring it.
Download and install the latest version, compatible with Windows, MacOS, and Linux: https://github.com/betaflight/betaflight-configurator/releases/latest
Before proceeding, connect your flight controller to your computer using a USB data cable. Charging-only cables won’t work for this purpose.
Once you’ve launched the Betaflight Configurator, select the COM port of your flight controller on the top right of the screen. If you’re unsure which COM port to choose, a simple trick is to unplug and replug the USB cable and observe which port disappears and reappears.
It’s advisable to backup your existing configuration before updating or flashing new firmware, as new firmware can potentially erase all settings. Here’s a tutorial on how to backup Betaflight settings.
In the Betaflight Configurator, navigate to the “Firmware Flasher” tab on the left.
Choosing the correct board (aka firmware target) is crucial, you can use one of these methods:
- Auto-Detect: This button should automatically select the correct board for your FC.
- Manual Selection: If Auto-Detect fails, manually select your board from the dropdown list. You can determine the name of your board by typing
versionin the CLI (follow instructions here: https://oscarliang.com/identify-betaflight-firmware-target/)
Choosing the wrong board can lead to failure or even bricking the FC. If this happens, you can recover by following this: https://oscarliang.com/cannot-connect-to-naze32-brick-fix/
Next, select the firmware version you wish to flash.
For those eager to test the waters, Betaflight offers ‘Release Candidate’ versions by enabling the “Show release candidates” option. However, it’s essential to approach with caution as these are still in the testing phase. For regular users, it’s advised to stick with the stable releases.
You’ll see additional options under the firmware version; typically, these can be left disabled unless you know what you are doing. I will talk about what they do in more detail later in this article.
Once you’ve made your selections, click “Load Firmware [Online]” to download the firmware. You also have the option to “Load Firmware [Local]” for custom compiled firmware.
Lastly, click “Flash Firmware” to begin the update, ensuring not to disconnect the USB cable during this process or you could brick the FC. It should only take a minute or two.
If you encounter any issues flashing, they’re likely related to driver problems. Here’s a guide how to fix it: https://oscarliang.com/fc-driver-issues-flash-firmware/
Full Chip Erase
To wipe all existing configurations and start fresh, you can select the “Full Chip Erase” option before flashing. This is useful for eliminating any outdated or potentially wrong configuration.
To do this, hold down the bootloader button (aka Boot button) on the FC, then connect the USB cable, you should see “DFU” appearing in the COM port.
Now flash the FC as described before.
No Reboot Sequence
This is a bit more advanced. Most flight controllers, when flashing, will reboot into ‘DFU mode’. However, some might not reboot correctly. In such cases, the ‘no reboot sequence’ option can be handy. But most of the times this option can be left disabled.
Applying Custom Settings
After flashing, you should be able to re-connect to the configurator by clicking the “Connect” button at the top right corner.
When connecting for the first time after flashing, Betaflight will prompt you to apply custom defaults. Always select ‘Yes’. These defaults configure critical settings like gyro connection and motor pins specific to your FC.
Cloud Build System
The Cloud Build System allows for custom Betaflight compilation to include only the features you need to minimize firmware size. This might not be a big deal right now, but in the future when Betaflight code continues to grow and becomes too big for certain processors, it will become useful. As I mentioned in my FC processor guide, F411 and F722 processors have only 512KB of memory. Cloud Build System can make Betaflight firmware smaller for these processors and prolong their lifespan.
A word of advice: unless you’re entirely sure about your requirements, there’s no need to change anything, just leave everything at default and it should usually work for most people. But you can remove or add features as you see fit if you know what you are doing.
What Does “Legacy” Mean in “Select a Board”?
When selecting a board in Firmware Flasher, you may see duplicated flight controller boards, with one of them having “Legacy” at the end of the name.
It’s usually best to ignore those legacy boards, and choose non-legacy targets, which are newer and have a unified structure. “Legacy” are the old-style compilations for each specific board. The Legacy targets are being phased out and eventually replaced by the non-legacy targets, but are still available for troubleshooting.
- Sep 2018 – guide created
- Oct 2022 – updated for BF4.3
- Jan 2023 – updated for BF4.4
- Nov 2023 – updated instructions