In this tutorial I will demonstrate how to setup Betaflight and configure the flight controller for your first flight after building an FPV drone. There are many options you can enable or change, it will probably take hours to explain what they all do. Therefore in this guide I will only show you the essential settings that you have to know for your first take off.
Betaflight is an excellent open source flight controller software, it’s designed specifically for FPV drones (multirotors in general). Check out my FC Firmware Overview to learn more if you are new to FPV.
Table of Contents
This tutorial is based on Betaflight 4.4. It only applies to you if your drone meets the following criteria:
- It’s a quadcopter (4 motors)
- Your flight controller is compatible with Betaflight
- You are using a serial radio receiver (such as Crossfire, ExpressLRS, Tracer, Ghost and so on)
- Your ESC is either BLHeli_S or BLHeli_32
Before we begin, please remove all the propellers for safety, and make sure you have attach an antenna to the VTX (if you power the VTX without antenna it can overheat and get damaged.
Install Betaflight Configurator
Betaflight Configurator is the software we must use to flash the flight controller and setup Betaflight.
Download and install the latest version of Betaflight Configurator: https://github.com/betaflight/betaflight-configurator/releases/latest
The installation files are available for these OS:
|Windows (8, 10, 11)
|Mac OS X
|Red Hat, Fedora, CentOS
Go to Options on the left pane, and enable these options:
If you purchased your flight controller (FC) following my recommendations, it should already come with Betaflight pre-installed. However it might or might not be an old version, so it’s always a good idea to stay up to date with the latest version of Betaflight for bug fixes and new features, though it’s not mandatory. This tutorial takes you through how to flash Betaflight step by step.
Before flashing firmware to the flight controller, make sure you make a backup of the existing configuration first, this allows you to revert to its original state if something goes wrong (very rarely you will need to, but better be safe than sorry). Here’s a tutorial on How to backup Betaflight settings.
Pro Tip: Before updating FC firmware, you should regularly check and update Betaflight Configurator for new features and bug fixes. Outdated configurator might be incompatible with new firmware.
Configure Betaflight For The First Time
To keep things simple, we will configure only the essential settings, just enough to get you in the air. You can then explore other settings later if you wish.
Important! Make sure all propellers are removed before configuring your quad on the bench to avoid accident.
Connect FC to Computer
By connecting the USB cable to the FC, it will also provide power, there is no need to plug in the LiPo battery.
When the FC is connected to the computer, a new COM Port should appear in the Configurator. Select this new COM Port and click “Connect”. Note that in the example, I have COM11, but it’s most likely to be different in your case. And often the COM port changes on a different flight controller / computer.
If you don’t find the COM port, or have trouble connecting, it could be due to a computer driver issue. Follow this guide to fix flight controller driver issues. Or maybe your FC is “bricked” (extremely rarely), which can be fixed as explained in this article.
Pro Tip: Make sure you use data USB cable. There are two types of USB cables: charging-only cables and data cables. You need to use a data cable to communicate with Betaflight Configurator.
Once you’ve successfully connected to Betaflight, you will be greeted by the Setup tab with a 3D model of a quadcopter. Here you get a basic overview of the flight controller status, and you have access to a few basic functions.
- Put your quadcopter/FC on a level surface, then press “Calibrate Accelerometer” – this only needs to be done once every time you flash firmware
- Now move the quad around with your hands (try to pitch forth and back, roll left and right, yaw etc), the 3D model should follow the movements
If the 3D model isn’t moving the same as your quad, it can mean a few things, maybe your FC is upside down, or it’s installed facing the wrong direction (e.g. arrow on the FC is not pointing forward). Try to rotate the board until it’s right. If you cannot physically rotate the FC, you can try to set YAW offset in the configuration tab, board sensor alignment to fix it (usually 90/180/270 degree).
Before making any changes, it’s always a good idea to back up your current settings first. You can do this in the Presets tab. Learn more about How to Backup & Restore Settings here.
Take a battery, check its voltage using either a battery checker or multimeter.
Then plug it in to the drone (remove propellers first!). If the reported voltage in the configurator (circle in red in the below image) is not the same as your measured voltage, then you should calibrate the voltage sensor in Betaflight.
To do this, go to the “Power & Battery” tab in the left hand pane.
Enter the measured voltage in the popup box, then click Calibrate and it will ask to apply a new voltage scale. That’s it.
In the Ports tab, you can configure all the peripherals (external devices) connected to the flight controller via UART (TX and RX pads) or soft serial. Here we want to configure our receiver and VTX connections.
There are only 2 things you need to do:
- If you are using analog VTX, and you’ve connected the SmartAudio or IRC Tramp wire for VTX control, then you should select “VTX (TBS SmartAudio)” or “VTX (IRC Tramp)” under Peripherals for that UART you have connected the VTX to. If you are using HD VTX such as DJI / Avatar / HDZero, then you should select VTX (MSP + Displayport) it will also enable MSP automatically.
- If you are using a serial receiver such as ExpressLRS and Crossfire, you need to enable “Serial RX” on the UART it’s connected to
If you are using HD FPV system such as DJI / Avatar / HDZero, there’s an extra step. Go back to the preset tab, and apply the “OSD for Fpv.wtf, DJI O3, Avatar HD” preset (just search for “OSD for DJI”).
The preset is the same as entering this command lines in CLI.
set osd_displayport_device = MSP set vcd_video_system = HD save
The Configuration tab contains the basic system settings. Most of the settings can be left at default, there are only a few things you need to change.
1. System Configuration
Gyro Update Frequency Rate – this is how fast gyro samples are taken. The number depends on what gyro you have and it’s normally fixed so don’t worry about it.
PID Loop Frequency – a.k.a. looptime, is how fast PID calculation is run. The maximum value depends on how powerful your FC processor is, generally speaking, F4 can run up to 4KHz while F7/H7 can run up to 8KHz. It also depends on the Gyro update rate, if you have the BMI270 gyro, then the maximum PID Loop Frequency supported would be 3.2KHz even for the faster F7 FC.
As a rule of thumb:
- F4, 4KHz
- F7/H7, 4KHz or 8KHz
- If you have BMI270 gyro, 3.2KHz regardless the processor
When changing looptime and enabling features, pay attention to “CPU load” at the bottom of the window, try to keep it under 75% by using a slower looptime or disabling features you don’t need. High CPU load can cause instability to the flight controller. 75% is the safe limit recommended by Betaflight devs.
I recommend leaving Accelerometer enabled. You can disable it, this will free up some processing power, but you won’t be able to use some features in Betaflight, such as Angle mode and Horizon mode, and the 3D model in the setup tab will also stop moving.
You can also disable Barometer and Magnetometer if you are not using them.
2. DShot Beacon Configuration
I normally enable DShot Beacon, this allows you to turn your motors into a beeper when the drone is unarmed. It’s useful when your drone doesn’t have a buzzer, it can help you locate your drone after you crash. You also need to assign a switch on the radio to beeper in the Modes tab, which I will show you shortly.
3. Arming Angle
By setting arming angle to 180 effectively disables this feature, and so it allows you to arm the quad regardless what position the drone is in (even upside down). This is useful when you get stuck in a tree, you can still arm the quad, run the motors and get it out of the branches. If this is set too low you might not be able to arm it. By disabling the Accelerometer will also turn off this feature.
In the Receiver tab, you can configure and check if your receiver is working correctly.
If you are using a serial RX (most people would be nowadays). The two most popular serial receivers would be Crossfire and ExpressLRS.
In which case, you should pick “Serial (via UART)” in Receiver Mode.
In Serial Receiver Provider, pick the appropriate receiver protocol:
- TBS Crossfire – CRSF
- ExpressLRS – CRSF
- Tracer – CRSF
- Ghost – IRC GHOST
- Spektrum DSM2 – SPEKTRUM1024
- Spektrum DSMX – SPEKTRUM2048
- FrSky RX – SBUS
- Futaba RX – SBUS
- FlySky RX – IBUS
- Turnigy RX – IBUS
If you are connecting the RX to FC via PPM, then use “PPM RX Input” in Receiver Mode.
If you are using Telemetry, make sure to enable Telemetry Output.
Power on your radio controller (TX) and radio receiver (RX), if they are already bound, when you move the sticks the channel values should also change. If the wrong channels are responding, you might need to change “Channel Map”, usually it should either be AETR1234 or TEAR1234.
Further Reading: What’s Channel Map and How to configure it properly?
If the channels are not responding to stick movements, here’s how to troubleshoot it:
- is the RX bound to the TX? (do you see solid green light on the RX?)
- is the RX soldered on the FC correctly?
- have you enabled serial RX for the correct UART?
- have you selected the correct RX protocol?
After making sure the channels are working correctly, now check the mid points and end points of the first 4 channels (Pitch, Roll, Yaw, Throttle). When you take your hands off the sticks, the Pitch, Roll and Yaw channels should be 1500. Some receivers might have small jitters, e.g. around 1498-1502, which is okay and you can fix it by applying a deadband for that axis. You should have end points of 1000 and 2000 (ok to have small error, e.g. 8-12 beyond the limits e.g. 988 and 2012 are fine).
If your mid point and end points are way off, you can follow my tutorial to fix it: https://oscarliang.com/adjust-tx-channel-mid-end-point/.
Before you move on to the next tab, check to make sure your arming and mode switches are working properly by flipping them, you should see AUX1, AUX2 or AUX3 channel values change. If you haven’t setup switches yet in your radio, follow this tutorial.
In the “Modes” tab you can assign your switches for different functions. Common modes we use are:
- Angle mode (when angle mode is not activated, we are in rate mode, aka manual mode. If you don’t see Angle mode, your accelerometer is probably disabled)
- Flip over after crash (Turtle mode)
Here is how to assign a switch to a mode:
- Click “Add Range” on the mode you want to use
- Select the switch you want to use to control this mode in the drop down menu. If you don’t know which AUX is your switch, just go to the Receiver tab and see which AUX channels respond when you flip the switches. AUX1 is channel 5, AUX2 is channel 6 and so on
- Drag the slider to the desired range for activation
- Flip the switch and the little yellow marker should also move around, see if it falls within the activation range of the mode when the switch is turned on
- Click “Save”
The motor tab is used for configuring the ESC and testing the motors. For safety, please make sure you remove all the propellers before using the motor tab.
The only thing you need to change here is ESC/Motor Protocol. If you are using BLHeli_S or BLHeli_32 ESC, DShot is recommended. As a rule of thumb, select:
- DShot600 for 8KHz looptime
- DShot300 for 3.2KHz / 4KHz
- DShot150 for 1.6KHz / 2KHz
Further Reading: ESC Protocols and Firmware Overview
I recommend keeping “MOTOR_STOP” option disabled, otherwise you won’t be able to tell if your quad is armed. The rest you can just leave them at default.
Click Save and Reboot, then go back to the Motor tab again.
There are a few things you want to check:
- Can the motors spin?
- Are the motor in the correct order as shown in the top left diagram?
- Are they spinning in the right direction as shown in the top left diagram?
Here’s the correct motor order and spin rotation:
- motor 1 at rear right
- motor 2 at front right
- motor 3 at rear left
- motor 4 at front left
If the order is wrong, you can fix it by clicking the “Reorder motors“.
Now, check motor spin direction, if wrong, you can reverse spin direction by clicking “Motor direction“.
Now move on to the OSD tab on the left hand pane.
If you are using DJI / Avatar / HDZero FPV systems, make sure to switch to HD video format, this will give correctly size the font and screen, it will look a lot better.
For analog system, just select Auto (or PAL/NTSC if you know which type of camera you have).
By setting up OSD, you can display important flight data on your screen, such as voltage and timer. Please see my tutorial on how to setup Betaflight OSD for more detail, but there’s nothing extra you need to do if you have been following this tutorial.
Instead of placing the same OSD elements for every quad I have, I normally just copy and paste the following code snippet in the CLI, it’s a lot faster. This is what I normally use on my freestyle quad (no GPS):
set osd_vbat_pos = 2467
set osd_link_quality_pos = 2114
set osd_rssi_dbm_pos = 2082
set osd_tim_2_pos = 2486
set osd_throttle_pos = 2104
set osd_current_pos = 2135
set osd_mah_drawn_pos = 2403
set osd_warnings_pos = 14633
set osd_avg_cell_voltage_pos = 2435
The PID Tuning tab offers the ability to tweak your quad’s flight performance and get it to fly the way you want.
It might look daunting, but you don’t really have to change anything here as the default Betaflight settings work pretty well on a wide range of FPV drones. When you become more experienced, take a look at my PID tuning guide.
However, you might want to play around with rates and expo to make the quad easier to control. Rate, Super Rate and Expo affect the sensitivity of the sticks – how much the quad reacts to your stick movement. Take a look at this guide on what rates and expo do and how to set it up.
If you are using analogue video transmitter and intent to change channel and power in the OSD menu, then you should setup VTX table. This is not relevant to digital FPV systems (DJI/HDZero/Avatar).
There are 3 ways to load VTX Tables:
- select VTX Table preset in the Presets tab
- load a JSON file in the Video Transmitter tab
- paste code snippet in CLI (my preferred way)
Usually you should be able to find the VTX table JSON file or CLI snippet for your particular VTX on the respective product page, if not, you can check here or just google it.
By enabling Expert Mode on the top of the window, it gives you access to additional tabs on the left hand panel and extra advanced settings. However you don’t normally need to touch any of those settings for your first flight.
Stop Beeping on the Bench
If your drone keeps beeping when the USB cable is plugged in (while your radio is powered off), an easy fix is to disable the “USB” option under Beeper Configuration in the Configuration tab.
That’s all to the basic setup in Betaflight.
Safety Checks Before Maiden Flight
Before taking our quad for maiden flight, please test failsafe first. When you lose radio connection, by default the motors should just stop and the drone would fall to the ground. You don’t want the propellers spinning uncontrolled which could cause even more damage.
Here’s how to test failsafe.
First of all, remove all propellers for safety. Plug in the battery, turn on the radio and arm the quad, the motors should be spinning at low speed.
To simulate a failsafe, you can simply switch off the radio while the quad is still armed. Ideally, your quad should disarm within a second and the motors should stop. If not, you need to revisit your failsafe settings, reset them to default if in doubt.
Also check CPU Load percentage at the bottom of Betaflight Configurator, relatively low CPU load ensures stability. According to Betaflight 4.3 wiki, you shouldn’t be concerned until CPU load gets around 75%. To lower CPU load, you can try disabling unnecessary features or set a lower PID loop frequency.
Other Betaflight Related Tutorials
Once you have completed this tutorial, come back and check out the following tutorials to learn more about the advanced features in Betaflight:
- CLI Explained
- Setup RGB LED Strip
- Resource Remapping
- Setting up Failsafe
- Betaflight OSD
- VTX Control
- LUA Script
- ESC Telemetry
- Camera Control
- GPS Rescue Mode
- Moron Threshold
- Betaflight Airmode
- How to use Blackbox
- Dec 2017 – Article created
- July 2018 – Updated instructions
- Sep 2018 – Added “how to update”, and links to a few more new tutorials
- Jan 2021 – Updated for BF4.2
- Oct 2022 – Updated for BF4.3
- Jan 2023 – Updated for BF 4.4