How to Setup Betaflight Firmware on FPV Drones

by Oscar

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.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

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.

Getting Started

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:

The installation files are available for these OS:

Operating System File Name
Windows (8, 10, 11) betaflight-configurator-[version]_win64-installer.exe
Mac OS X betaflight-configurator_[version]_macOS.dmg
Ubuntu, Debian betaflight-configurator_[version]_amd64.deb
Red Hat, Fedora, CentOS betaflight-configurator-[version].x86_64.rpm
Other Linux betaflight-configurator_[version]
Android betaflight-configurator-debug-[version]_android.apk

Go to Options on the left pane, and enable these options:

Betaflight Configurator 10.8.0 Options

Update Firmware

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.

Betaflight 4.4 Configurator 10.9.0 Firmware Flasher Auto Detect Online

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.

Stp Hobby Armor 5 Fpv Drone Rushfpv Fc Usb

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.

Betaflight Configurator Setup 10.8 There are a couple of things you need to do here:

  1. Put your quadcopter/FC on a level surface, then press “Calibrate Accelerometer” – this only needs to be done once every time you flash firmware
  2. 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.

Presets is also a hugely useful feature in Betaflight, you can learn about it here.

Betaflight 4.3 Presets Save Backup Load Cli Diff

Voltage Calibration

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.

Betaflight 4.3 Voltage Calibration Click the Calibration button at the bottom right.

Enter the measured voltage in the popup box, then click Calibrate and it will ask to apply a new voltage scale. That’s it.

Betaflight 4.3 Voltage Calibration Measured Voltage


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.

Betaflight 4.4 Configurator Ports Peripherials Vtx Msp Displayport Smartaudio Tramp Serial Rx

There are only 2 things you need to do:

  1. 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.
  2. 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, DJI O3, Avatar HD” preset (just search for “OSD for DJI”).

Betaflight 4.4 Configurator Presets Osd For, Dji O3, Avatar Hd

The preset is the same as entering this command lines in CLI.

set osd_displayport_device = MSP
set vcd_video_system = HD


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.

Betaflight Configurator Configuration 10.8

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.

Betaflight Configurator Receiver 10.8

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:

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.

What are Stick Low/High Thresholds?

Stick Low Threshold: Throttle must be below this value for the FC to recognize that the throttle stick is completely down. It’s useful for several reasons, for example, when you raise the throttle stick, your quad doesn’t arm. Things like the PID_Min_Throttle setting also uses the Stick Low Threshold value.

Stick Center: This should always be set to 1500.

Stick High Threshold: This value is used to determine whether the throttle stick is fully raised. It’s useful for functions such as activating the OSD menu.

It’s important to note that Stick Low/High Thresholds are not the same as stick endpoints and do not affect the throttle stick’s range.

Avoid setting the Stick Low Threshold all the way down to 1000, as this may prevent your quad from arming. It’s advisable to leave a margin even if your throttle can go below 1000, such as setting it to 1010. However, keeping it at the default value of 1050 is typically fine. For the Stick High Threshold, leaving it at the default 1900 is acceptable, as it has no impact on your flying.


In the “Modes” tab you can assign your switches for different functions. Common modes we use are:

  • Arming
  • 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)
  • Beeper
  • Flip over after crash (Turtle mode)

I explain the different modes in Betaflight in this article.

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.

Betaflight Configurator Motor 10.8

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“.

Betaflight Configurator Motor Order Animate Gif

Now, check motor spin direction, if wrong, you can reverse spin direction by clicking “Motor direction“.

Betaflight Configurator Motor Direction Animate Gif


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).

Betaflight 4.4 Configurator 10.9.0 Hd Osd Video Format Bigger Canvas Support This is what OSD looks like in your goggles.

Fpv Wtf Msp Osd Dji Fpv Goggles

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

PID Tuning

Betaflight 4.3 Pid Tuning Sliders

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.

Video Transmitter

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:

  1. select VTX Table preset in the Presets tab
  2. load a JSON file in the Video Transmitter tab
  3. 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.

Expert Mode

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.

Betaflight 4.3 Configurator 10.8 Expert Mode Enabled Pid Tuning

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:

Edit History

  • 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

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.


Mic 3rd October 2023 - 5:50 pm

Missing SERVOS-Tab.
For camera tilt i have a servo. Took ‘+servos’ on FW flashing. After that, i choose ‘camera tilt’. Tilting the copter; the servo regulates. Works.
-in BF there is no servo shown, &
-no SERVOS-Tab. &
-I can’t get the cam to tilt to stick inputs.

…i’m going mad(er) with this FC!

Mic 3rd October 2023 - 6:33 pm

Oh. Enable expert mode. (Dk why i was inactiv.) Now with servo-tab everything runs fine.

Joel 3rd May 2023 - 12:26 am

I had no idea there was so much stuff to do before even beginning to fly a drone, but after reading your guide I am not even worried. Normally this sort of thing would freak me out but now I feel totally confident. Thanks so much for such a good writeup!

Francisco G. Lucas 30th January 2022 - 12:35 pm

you resource pages are a wealth of information for us beginners in the hobby. Although there are a lot of videos in utube, reading your tutorial sis much more precise and informative like a textbook and does not require backing the video up.. keep it up and thank you so much…. Sir Oscar

MONIEZ Jean-Loup 28th November 2021 - 1:03 pm

Dear Oscar,
Can you tell me how to reverse the virtual horizon (ah) in betaflight so as the ah bar follow the roll and the Pitch on the right way ?
Thank you for your answer and best regards.

Mike 25th November 2021 - 6:23 am

You should write a book, but then again you wouldn’t be able to update it like you do here. Your information is my new reading material, thank you, we need more I formation from people like yourself to get this sport/hobby going?

terry t zelk 11th December 2020 - 1:54 pm

I keep hearing about different versions of betaflight like 4.1.0 and 4.2.0. The only thing I see anywhere is configurator 10.6.0. Now I hear there is 10.7.0.
How do you determine what betaflight version you have? I’ve looked all over betaflight trying to find which version I have but I don’t see anything anywhere where it says which version I’m running.

Oscar 11th January 2021 - 2:48 pm

4.1.0 or 4.2.0 these are the different version of the firmware.
While 10.6.0 and 10.7.0 are the configurator, the program on your computer to setup the firmware.

Ty 27th February 2022 - 4:39 pm

Hello Oscar,
Does the receiver need to be connected to program esc?

Thnx SO much!

Oscar 27th February 2022 - 11:48 pm


Richard 2nd September 2020 - 1:01 am

Hi . ive tried downloding the latest betaflight app but when i extract it i then cannot open it . what do i open it with ?? .

Oscar 4th September 2020 - 4:47 pm Reply
willy david 17th November 2018 - 9:10 pm

On my babyhawk 2″ with f3 fc. I can turn it on hear the tones. It will arm but doesn’t respond to throttle input. Can you give me any suggestions or advice on how to fix this. Btw it’s using magnum mini that comes with the drone all is stock except frame. Transferred components to a Tomoquads 2″ X Fighter. I did manage one good flight with no issues. Second flight is when it wouldn’t respond to throttle input. Can you please help me? Thank you and Hafa Adai from Guam

Oscar 23rd November 2018 - 4:46 am

Please join forum for discussion and help:

Kellie Stapleton 16th June 2018 - 9:58 pm

I’m a total newbie and just got a Happy Model Mantis, Should I upgrade the firmware for the Flight Controller? It’s a F4 flight controller with Betaflight 3.1.7. I downloaded the most recent Betaflight already.

Thanks in advance,

Robin 30th May 2018 - 3:53 pm

Hi Oscar,
For connecting my Holybro Kakute F4 v2, a normal phone charging usb2.0 cable will be fine, right?

Dan jensen 25th April 2018 - 1:55 am

Hi I have a omnibus f4 v5 from airbot. I have 3 successful buzzer set ups with a matek buzzer using B- on fc and 5v and neg from board . this buzzer wont shut off 2, 3 minuts after powering the quad . as i said my other quads work perfect. fc light indicates that i can switch it on or off with tx. just cant shut it off after it turns on . Quad hovers fine.
thanks Dan

James 26th February 2018 - 3:03 am

I very much like the step by step process above. I haven’t tried it yet, but it looks straight-forward enough. One question which I believe will be silly once I get the answer: My controller has an SUB jack on it. I’m guessing you connect this to your computer? Is there mention of this in your step-by-step above? Again, seems obvious, but a critical step. Also, is controller power up or not during the configuration?

Filippo 11th November 2017 - 3:22 pm

Hi Oscar! I got a problem with my naze 32 on tarot 130, I need the 3.0.1 configurator version to flash it, now i’ve the latest version (because the system upgraded it automatically) and i don’t found anymore the old one… where can i download it?

Jason Lavender 22nd October 2017 - 10:01 pm

I am setting up betaflight for my quad. However, when I click on the receiver tab, the bars for the inputs do not move when I use the sticks. Under configuration, I made sure that I put in a serial based receiver and SBUS. I am using the R-XSR. I have bound the receiver with the transmitter (X9D) and the tx shows that it is connected with the receiver. Do you have any ideas on how to fix this?
Thank you,

Oscar 24th October 2017 - 2:45 pm

did you setup the port for serial RX?
is it bind correctly? Does the same RX work on a different FC? Check signal connection/soldering.

Sean 22nd November 2017 - 5:03 am

I am having this exact issue. We’re you able to solve it?

Patrick 19th February 2018 - 7:42 pm

Same problem here, except I am using FlySky IBUS. I have some problem on two FCs.

John 6th June 2017 - 11:02 pm

Hi Oscar
I just flashed 3.1.7 to Naze32 Rev6 and now I can’t connect to BLHeli config. When I try to calibrate ESCs, upon pulling down the motor slider (after connecting battery) the orange motor bars stay at 100% and the ESCs beep twice. Then they spool up on zero throttle. Looks like they’re busted?

Oscar 12th June 2017 - 4:23 pm

try a older version of Betaflight?
BF and CF are giving up support to F1 flight controllers, so it’s normal you are picking up bugs.
Time to get a F3/F4 FC.

Andy 15th June 2017 - 11:41 pm

I also want to use a Naze32 R6b, can you tell me what is the latest CF/BF Version that is working fine with this “old” FC? Or which settings have to be changed to save cpu load and get the Naze32 working.
Thanks :-)
*great articles on your site!

Oscar 25th June 2017 - 3:45 pm

CF and BF are still supporting Naze32. Just get the most recent stabe release.
To save CPU load, turn off features that you don’t use, and disable accelerometer if you don’t use self level.

yuri 21st October 2016 - 4:26 am

Graph smoothness is highly dependent on sampling rate and graphing algorithm (which in most cases is spline based and have significant smoothing effect). There are also no x and y scales, so it is hard to verify if the different is real.

kreit 19th July 2016 - 2:47 am

can I flash betaflight on my vortex 250 and if yes then how?

Masta_fpv 1st July 2016 - 3:07 am

Oscar, I’m running a rev 5 naze with rotorgeeks rg20. After flashing 14.6 to the esc my quad will not arm or respond. Rc inuts are present in betaflight and oneshot125 will not enable even in cli. Any advice would be awe some

Chris 24th February 2016 - 12:59 am

Hi Oscar,

The time scale is missing from your graphs. its at 100%? So a screen full represents about a second? you were getting ~100hz oscillations before roughly?

I seem to see 20hz on my quad.

Oscar 7th March 2016 - 2:28 pm

both graph should be same time scale.. 20Hz indicate vibrations from motor and props… which means you want to balance those first… and check for loose bolts in the frame… and make sure frame arms are stiff enough.

Joe Stubbs 15th April 2016 - 11:11 pm

Hi Oscar
I have a Naze32 Rev5 + Betaflight + ppm Rx + DX9 Tx … For 3 days now been trying to config all of them too operate on a Fixed Wing Aircraft, using the Passthru Mode to prevent FC interaction.

I’ve been stumble-bumming around trying to config the PWM outputs at the servo pins using the Servo Tab Matrix ( is that the terminology !? ) – methinks the servo outputs sequence to be – chan 1 to 6 – Ail Elv; Thr; Rud; Gea;r Aux 1; and I monitor these outputs via the Servo Tab graphics.

The other strange thing is the DX9 mapping is TAER123 but the BetaFlight Receiver Tab Mapping is required to be AETR123 for the receiver input gaphics to sync

I just cannot get the correct servo outputs to agree with stick input….please help…Joe

Oscar 18th April 2016 - 12:51 pm

I believe you can either change RX mapping in cleanflight, or on your TX..
in Cleanflight, under Receiver tab, you should be able to change to TAER123 from the drop down menu?

I haven’t used the DX9 TX, but i know on the Taranis you can change input channels order as well in the settings… maybe give that a google as well..

Steve_C 6th May 2016 - 7:18 am

look here:
that’s how i made it work. took days of programming and reprogramming to get it
this may get you close:
# mixer
mmix reset
mmix 0 1.000 0.000 0.000 0.000
smix reset
smix 0 6 5 100 0 0 100 0
smix 1 6 1 100 0 0 100 0
smix 2 3 0 100 0 0 100 0
smix 3 4 0 100 0 0 100 0
smix 4 3 4 100 0 0 100 0
smix 5 4 4 100 0 0 100 0
smix 6 2 10 100 0 0 100 0
smix 7 5 11 100 0 0 100 0
(that’s a CLI dump off my big plane, I’m programming the small one today and tomorrow)
Here’s an example:
mmix 0 1.000 0.000 0.000 0.000 ( this sets pin 0 to motor, 1.000 is thrust authority and the next 3 zeros are roll pitch and yaw authority.

smix 0 6 5 100 0 0 100 0 ( this sets smix rule 0 for servo 6 ( with source 5 which is RC PITCH , off the website at the top,) rate 100 min 0 and max 100 box is 0
# Rule Servo Source Rate Speed Min Max Box
smix 1 6 1 100 0 0 100 0
this is rule 1, servo 6 input rule 1 (Stabilised PITCH) then rate 100, 0 min 100 max and box 0

So on my plane this makes the elevator servo work both with RC input (source 5) and stabilized, FC controlled, Rule 1.

if the servo goes the wrong way use smix reverse
this is the example off the above web page:
smix reverse 5 2 r
i.e. when mixing rudder servo slot (5) using Stabilised YAW input source (2) reverse the direction (r)
so if you reverse the stabilized yaw, you also would have to reverse the RC Yaw as well
which would be smix reverse 5 6 r

use the above web page and you will get there. it took me weeks to get my big plane up in the air. not a lot of people flying Quad Chips on planes, but it works and is fun when it does.
just make sure you test your RTH and stabilized modes with plenty of elevation. the first time I flipped on the Horizon mode the plane was almost uncontrollable. That was a white knuckle landing. had my goggles on and kept hitting the wrong switch to try to turn it off…
best of luck to you, Steve

Robert 15th February 2016 - 11:42 pm

Hi Oscar,

I recently built a quad with the motolab fc and littlebees which were ordered across the pond in Australia. The build resulted in 3 motors spinning. I have the signal wire (white) connected to the board and I removed the ground. I have the latest clean flight and the latest beta flight installed. Presuming the esc have at least 14.0 installed. I moved arms around with motors and esc attached to make sure the board was working on that leg and it was. So I’m thinking I likely have a bad esc. I had a spare kiss esc and motor that I connected but it wouldn’t spin either. Is this due to the fc firmware or something software related. Also, should I be able to program the esc’s though the fc because I tried and I can get connected, but I get an error 31 and it doesn’t recognize any of the esc’s. I’ve read somewhere that I need a serial cable connected to UART 1, but I don’t have a serial cable. Furthermore, I removed the black ground wire and cut the white signal to solder to the fc thinking I should be able to perform upgrades through the fc, but I can’t. Any wisdom you can part with would be gladly apprciated! Thanks for your time.

Oscar 22nd February 2016 - 10:48 am

Hi Robert, I assume when you move arms, you did change the motor pin as well?
if by changing motor pins, and same ESC/motor still doesn’t work, try swapping the motor…. just to rule out motor or ESC.
but it’s more likely to be the ESC I think…

by the way, I recommend joining this forum, it’s very useful and there are lots of helpful people there. I am a daily user too :)

Johnny-Robot 10th February 2016 - 3:34 pm

Hi Oscar,

Are there any known issues with flashing on the CC3D? I’m having a heck of a time trying to figure out why one of my motors goes crazy as soon as I arm.

Dominik 4th February 2016 - 12:08 am

I Might flashed the wrong hex file to my Vortex 250. used naze.hex for the Fusion v2 Board. Is there a Chance to rescue the fc? Can not Flash again. Bootloader has no answer.
Thank you,

CityZen 27th February 2016 - 2:17 am

Hi Dominik,
You probably need to short the bootloader pins on the board. I’m guessing they’re the ones labeled “BL”.
They need to be jumpered while you apply power. You should be able to flash at that point.

drew smith 17th January 2016 - 7:38 pm

Hello Oscar, You mind posting up a cli dump of a average 250 size quad of yours? Im just wondering what cli commands you use with betaflight. The thread on RCG is SO massive its hard to pick through it and find the relevant info. Thanks

Mark Rankin 16th January 2016 - 5:28 pm

Hi Oscar can you PLEASE HELP Hi im having a problem with boris hex on cleanflight when i flash the naze32 i cant calibrate the esc or start the motors even with the master tab.
But when I roll back to cleanflight stable version everything works fine. I have been working on this for 5 weeks now.
PS Im new to naze and cleanflight but ive learnt loads like how to map and rxrange in cli. I was using cc3d before

Oscar 20th January 2016 - 11:05 am

What ESC are you using? do they support oneshot?
did you enable oneshot in Cleanflight?

willem 1st March 2016 - 9:54 pm

hi mark rankin
your escs doesnt support the 1000 looptime
like the emax speedcontrollers will not work with this firmware

flying baboon 5th March 2016 - 3:03 am

Do you know if the luminere 20a mini with simonk is supported? When I push the throttler it goes wild. I’ve been flying fine with cleanflight.

Andrew 4th December 2015 - 1:15 am

Hi Oscar,
I have just flashed my QAV210 clone (naxe32) with the latest version of Boris B, when i arm the quad i only get motors 3 and 4 arming? any ideas why?
I have set up identical programming on a 180 and it works fine.
I have tried rolling back to Naze fw. and it all works correctly.. weird.

Oscar 7th December 2015 - 10:35 am

Check your BLHeli ESC settings? make sure PWM input is disabled?

Andrew Scott 2nd December 2015 - 1:36 am

Cc3d users…..luxfloat or rewrite which one is better for the cc3d?

orlando 25th November 2015 - 4:48 am

Hi oscar
i am running a cc3d on my zmr ,looking to flash from open pilot to beta fligh can you tell me the requirements and step to do so ? Thanks

huseyin yildiz 16th November 2015 - 6:30 am

Hi Oscar

i have flashed flip32 10dof, betaflight 2.1.3 latest,

before i can figure out gps settings and can be enable it,

but now ican not to be able to activate gps , gps mope or, gps type, clı commands doesnt work.

Oscar 16th November 2015 - 10:04 am

i think GPS features are disabled in Betaflight to free up resources.

huseyin yildiz 16th November 2015 - 12:21 pm

thank you,
i think so

nik 7th November 2015 - 11:10 pm

Hi Oscar
Just flashed Boris B.’s Betaflight to my ZMR. I was able to configurate everything as I wanted it, restored settings from a backup. The board seems to work, but the moment I arm it when everything is plugged in, it kind of freezes. The buzzer sound freezes aswell and just stays constantly on. It just feels like it feels when a computer freezes.
I am afraid it must be some old setup coming with the restored settings, such as looptime essentially.
If so, how do I reset that setting? Or is a complete reset/restart of all settings required? (I guess it is recommended though).

I hope you can help me. I already reconfigured everything without restoring a backup, but still, it freezes. Betaflight says “Packet Error: 2” down left, is that a hint?


frame: ZMR250, carbon composite
pdb: Overcraft PDB
Flight controller: Seriously Pro Racing F3
Receiver: FrSky D4R-II
ESCs: KISS 18A v1.1
Motors: DYS 1806 2300 KV
Props: Gemfan 5×4 Carbon Nylon
Battery: nanotech 3S 1500mAh 35-70C
Cleanflight version: Boris B.’s Betaflight 2.1.2a

Oscar 10th November 2015 - 10:49 am

maybe flash it again , with the option, erase all settings checked?

nik 27th November 2015 - 1:04 pm

Hi Oscar
Thanks for your replay and sorry for my very late answer:
I tried to find the mistake and started deactivating features and then I was pretty sure the problem was my frsky telemetry. It did not freeze when not using telemetry. Then I reflashed CF1.10.0, worked fine, even with Telemetry. Flashed Betaflight again, everything working, tried oud telemetry and it worked suddenly. There were definetly NO hardware changes, and definetly NO software changes. I compared both CLI dumps and there were no differences. So I cannot explain this issue at all. I used full chip erase all the time. At least it works now and I love Betaflight! It is really feeling better when flying fpv. I think I will stick to it. Thank you Oscar!
Best greetings from Brunswick,


Scott Lauer 2nd November 2015 - 5:56 pm

“Hi Oscar” I wanted to make sure that I can flash boris B with open pilot I currently have cleanflight on my cc3d now Thanks for all of your hard work!!! Scott

Stephen 28th October 2015 - 10:32 am

Hi Oscar

Just upgraded my naze32 to Betaflight – perfect , what can I say , even with the default PID
its much more locked in then ever before. Keep the updated rolling , its greatly appreciated ;-))

headskull 27th October 2015 - 4:33 pm

The Dropbox-link to betaflight .hex-files does not work. Hex from github does not work with cleanflight – says “HEX file appears to be corrupted”. Any alternative link for download?

headskull 27th October 2015 - 5:11 pm

Hi Oscar! Found an answer to my previous question. I’m a n00b and didn’t know I had to click the HEX-file in github and then right click on “RAW” to be able to download te file in correct format. I now have betaflight installed on my Naze32 :D
Many thanks for your awsome blog! Keep up the good work! Cheers

Kevin Yang 17th October 2015 - 5:53 am

Thank you for the awesome posting.
Is it okay in betaflight with disable ACC? or just use Acc hardware?
I don’t use ACC anymore one month ago after mention of some your tweak(dead band, disable hardware ACC, etc)
Which is better you think?
Thank you very much.

Oscar 19th October 2015 - 9:34 am

yes it’s okay to disable ACC (i have it disabled on mine)
It doesn’t make any difference now with Betaflight, so it’s entirely up to you. :)

Kevin Yang 20th October 2015 - 7:06 am

It works great!!
Yes, I have it disabled.
Thanks a lot Oscar.

Ari 16th October 2015 - 8:13 am

Hi Oscar

Thanks for the post. With regards to BLHeli 14.1, will BLHeli 14.0 be sufficient? I haven’t got an ESC programmer yet and I believe my ZTW 18A esc’s came with BLHeli 14.0. Is it safe to use with beta flight or should I rather wait until I can update them?


Oscar 16th October 2015 - 9:52 am

Hi Ari,
14.0 should be fine.
Do you know you can now flash ESC via the flight controller? no programmer needed anymore! i might make a post how to do this just in case it’s not well known yet.

Ari 16th October 2015 - 5:47 pm

Thanks Oscar! And while I’m on the subject of thanks, thank you for all the articles which you put into layman terms. Really helpful for newcomers to the hobby such as me.

That article would be great thanks! I didn’t know that was possible.

Many thanks

Johnny 17th October 2015 - 9:54 am

I still wait for my arduino to flash my ZTW 20a simonk to BLheli… Bunt can’t wait.. can I use betaflight with simonk?

Best Johnny

Oscar 19th October 2015 - 9:36 am

I haven’t tried it myself, nor seen anyone who tried… It does suggest to use the latest BLHeli firmware though from what I have been told.

John Seldon 8th November 2015 - 7:12 pm

Hi Oscar. Did you ever make this article? It would be useful to know how to flash ESCs via the FC. Thanks.

Great site BTW. You’ve helped me loads with my builds.

Oscar 10th November 2015 - 11:17 am

Yes I did, flash esc via fc

marwan 13th December 2015 - 1:37 pm

hi Ari,
no problem you can download betafligth and it will work awesome but you have to remove oneshot cause else the motors wont arm, ive got the 13.1 blheli and its awsommmmmee !

lee 14th October 2015 - 2:16 pm

“Hi Oscar”

Since trying beta found my p setting are at 3.1 pitch 2.4 role.Tbh i feel its not enough but wont let me go higher or i get the shakes.flys great but now awsome.Also found it needs loads of d term to rid the bounce.Im running 75c 4cell,littlebees esc 1900kv emax motors hq 6×4.5 props.cheers lee

Sam Pankratz 13th October 2015 - 3:33 pm

Oscar, I think you should also include that there is a dropbox link that allows you to directly download al the .hex files. I had to do this after not being able to successfully download the .hex using your instructions. Im not saying you are wrong or incorrect, as others have had success this way, but I did not. I suspect this might help others like me who know little about computer magic be able to use Betaflight.

Oscar 14th October 2015 - 9:44 am

good point, i think it’s mainly Mac users that have problems. i will add a dropbox link now.

Michael 11th October 2015 - 6:03 am

Hi Oscar! Great review, love your work. I wanted to know if beta flight works with the new naza32 rev6 board? I’m about to make the swith from multiwii to naza32 on one of my racing quads and I’m looking for a marked improvement.

Blaise 12th October 2015 - 8:59 am

Sadly it doesn’t. They are looking at end of the month or so before it’s supported, as it has to be done by the Cleanflight team and then merged into the Betaflight code. Boris doesn’t have a Naze32 (actually doesn’t use them anymore, uses F3 based boards)

Oscar 12th October 2015 - 11:45 am

I think betaflight works on the Rev6, but Gyro sync isn’t, the last time i checked, someone mentioned looptime cannot go below 1100?
As for Cleanflight, it’s still in beta, 1.11 i think..

Rubi 10th October 2015 - 1:14 pm

Hi Oscar,
Just to note, CC3D can be flashed via OpenPilot GCS firmware page,
it’s easy and gives new life to my old board with this amazing version.

Oscar 12th October 2015 - 11:22 am

Thanks Rubi, I heard CC3D actually performs very well with betaflight (better than Naze) due to the built-in SBUS inverter, and SPI protocol Gyro :)

ThomasS 12th October 2015 - 4:13 pm

Hi Oscar

This is true, CC3D is the better hardware and also open source, I am an EE and design of CC3D is elegant and skillful, Naze is only factor of price and many revisions to stop clones and make more money. Of course some poor clones of CC3D as it is open, this is problem but good clones that are like original version, best acro board.

CC3D flies better with Cleanflight also, always has and honest people know this for long time. So much hype for Naze makes issue cloudy this is sad as people by wrong hardware for more money. Betaflight shows this more as it takes advantage of better CC3D more than Cleanflight can.

Betaflight shows what many skilled people said for long time, Cleanflight is not so great and has many issues with control routines and timings but when bringing up such issues I got shouted down despite being turthful, now everyone can see what programmers knew for long time, Cleanflight has some big issues.

Betaflight is nice step in good direction but only temporary solution still architecture is poor from cleanflight which took from baseflight, very old fashioned development and maybe never fixed as large rewrite required.

Akosv 17th October 2015 - 9:19 am

SBUS inverter is also added to NAZE32 rev.6 boards…

Eligiusz 17th October 2015 - 12:54 pm

Hi Rubi,

Could you please tell me step by step how to flash CC3D with Betaflight?
I was doing this with Cleanflight via OpenPilot GCS many times but with Betalight it doesn’t work :(
I am dowloading betaflight_CC3D.bin from
and usind option Rescue in OpenPilot but this way don’t work…

Thank you in advance.

Manuel 28th October 2015 - 12:18 pm

Hi Eligiusz : I installed betaflight on my cc3d with OpenPilot GCS also (without the FTDI+shorting pins thing mentionned). It didn’t work until I reaffected the ports correctly (UART and this kind of stuff) : it should match how you intend to use the ports of your CC3D.

ken 3rd November 2015 - 7:41 am

Eligiusz after flash betaflight, disconnect usb. plug in a 5v power source for Cc3d. load cleanflight app. then connect the USB
ps everytime u rebooting the CC3D FC do the same thing.1st. 5V power source, 2nd USB, Then connect cleanflight App. works on Mac and PC.
if you want to fix it issue forever. load cleanflight bootloader on CC3D.

orlando 27th November 2015 - 11:54 am

Hi rubi
Can you send the link on the ftdi adapter you use to flash the cc3d board

FyreSG 10th October 2015 - 3:43 am

Hi Oscar, I’m not sure about the part on PWM but I have a PWM receiver and a set of normal (non-Oneshot) ESCS; will my setup work with Betaflight? :)

Oscar 12th October 2015 - 11:19 am

Yes that should work :) the PWM part, i was referring to the signal from FC to ESC, not the RX :)

Chad Percival 8th October 2015 - 7:49 pm

Hi Oscar,
Quick question – when you flashed from Cleanflight, did you opt to do the full chip erase?

Oscar 9th October 2015 - 11:10 am

Hi Chad
If you want to erase all the settings on the board you should check the Full Chip Erase button. I think it’s a good idea to check it since Betaflight is a different firmware.

Alfonso 7th October 2015 - 1:37 am

Hi Oscar,

You are a God sent! Last July 2014, I traded a brand new 50cc Yak 54 airplane rtf, a .40 size extra rtf , and a brand new .40 size electric Cessna rtf for 1 mint condition Dji Phantom 2. Then I acquired quadcopters with Kk2 fc. When I stumbled into your blog about naze32 calibration because I kept breaking props on a mini tricopter build. I ended up retiring 6 KK2 boards and got hooked tothe naze32s. You are a “Quadcopter Newbies Guro”. Keep up the good work Sir. It is very well appreciated from a guy like me.

Oscar 7th October 2015 - 4:58 pm

Thank you Alfonso :D I am happy that i can help!

phill 6th October 2015 - 7:26 pm

Hi Oscar,
Just wanted to say how much your work is appreciated, if i have a question that I cannot solve you usually have the answer and in nice simple terms to understand, I can tackle most stuff but the programming/flashing, understanding Hex files etc etc is not my strong point but with your help its becoming much easier
Thanks again and happy flying, i’m now gonna flash Boris’s new betaflight on my naze and hopefully reap the benifits :)

Oscar 7th October 2015 - 4:49 pm

Thanks for the kind words Phill! Happy flying :)

Matt McNiece 5th October 2015 - 1:20 pm

Hi Oscar,
Love your work. I just updated to Betaflight and had a few challenges along the way>happy to say I got there in the end and documented them here –

Thoemse 4th October 2015 - 5:19 pm

It stopped raining. :) I cannot compare to cleanflight because i switched from a kk 2.1.5 straight to an afro naze32 with this firmware but boy is this good. I changed no PIDs at all just yet and i flies so nice and responsive. I did not know my quad (250 4S 2206 1950kv) could do such sharp yet smooth turns. It’s a whole new flying experience!

Oscar 6th October 2015 - 4:49 pm

very good news Thoemse! Glad you enjoy it! :)

Thoemse 4th October 2015 - 8:50 am

Hi Oscar

Thanks for this guide. Just flashed this firmware. Now if itwould only stop