1. Safety first
Betaflight can spin your motors from a laptop, but only when a battery is plugged in. USB powers the flight controller and receiver, not the motors. That's why you do all your setup over USB with no battery, every single time, with your coach or another adult in the room.
Team rule: no battery in the drone for Betaflight work
You connect the drone with a USB cable only. Batteries stay with your coach, and you never plug in or unplug a drone battery.
- With USB only, the motors have no power, so the props can stay on while you work.
- Everything in this course works over USB. Nothing here needs a battery.
- If you see a battery plugged into a drone at the laptop, stop and tell your coach.
- This applies to quick fixes at tournaments too.
Motors and props
A 20 cm drone's props spin fast enough to cut skin. With USB only and no battery, the motors have no power and can't spin, which is why the props can stay on while you work.
Batteries
Batteries stay with your coach. You never plug in or unplug a drone battery, and none goes in while the drone is connected to Betaflight.
Arm switch
Keep the arm switch off unless a step asks you to flip it. Know which switch arms your drone before you touch the radio.
Flight tests
Props go back on only at the cage, with the cage closed and everyone outside it. First hover after any setting change is low and short.
Before every bench session
- Coach is in the room.
- No battery in the drone or on the bench. Your coach has them.
- Arm switch off on the radio.
- Backup saved before you change anything (module 2).
2. Connect and back up
Betaflight's setup tool is the Betaflight App at app.betaflight.com. It runs in Chrome or Edge and can be installed for offline use. Starting with firmware 2025.12, app and firmware versions match, so use the online app with current firmware.
- Check there's no battery plugged in. Then plug the USB cable into the flight controller and the laptop.
- Pick the port and click Connect. If the drone isn't listed, use the option to add a new device and pick it in the browser's prompt.
- Note the firmware version and board name on the drone's tag.
- Turn on Expert Mode so no settings are hidden.
- Back up. Open the CLI tab, type
diff all, press Enter, then click Save to File. Name it with your name, drone and date.
save. To restore a backup on the same firmware version, paste the file into the CLI and type save.| Problem | Try this |
|---|---|
| No port appears | Use a cable you know carries data (many are charge-only), try another USB port, allow the device in the browser prompt. |
| Windows still can't see it | Install the STM32 VCP driver, or run ImpulseRC Driver Fixer. |
| Linux can't open the port | Add your user to the dialout group, then log out and back in. |
| Connects, then drops | Close other Betaflight windows; reseat the cable at the flight controller. |
3. Calibrate and align
The 3D model on the Setup tab must copy every move your drone makes. If it doesn't, Angle mode levels to the wrong horizon and the drone may flip on takeoff.
Calibrate the accelerometer: set the drone on a flat, level surface, don't touch it or the table, and click Calibrate Accelerometer. Roll and pitch should read within about 1° of zero. A soccer cage can rock, so prop it until the frame plate is level, not the cage. Recalibrate after a crash that bends the frame or after moving the flight controller.
Check the model: tip the nose down, roll the right side down, and turn the drone clockwise. The model should do the same each time. If it moves the wrong way, the flight controller is mounted turned. Fix it in the Configuration tab under Board and Sensor Alignment by setting Yaw to match the way the board's arrow points (usually 90, 180 or 270), then save, reboot and recalibrate.
Alignment trainer
Choose how the flight controller is mounted and what alignment Betaflight is set to, then tilt the drone. Find the setting that makes the model match.
4. Receiver and radio
When this module is done, every stick and switch on your radio moves the right bar in the Receiver tab, in the right direction, across about 1000 to 2000. Most "won't arm" problems in a new team come from this step.
| Your receiver | Ports tab | Receiver mode | Provider |
|---|---|---|---|
| ExpressLRS built into the flight controller | Nothing to change | SPI Rx (built-in) | ExpressLRS |
| ExpressLRS or Crossfire wired to a UART | Serial Rx on that UART | Serial (via UART) | CRSF |
| SBUS receiver | Serial Rx on that UART | Serial (via UART) | SBUS |
| FlySky IBUS receiver | Serial Rx on that UART | Serial (via UART) | IBUS |
- Bind. On ExpressLRS, give the radio and the receiver the same binding phrase. A solid receiver light usually means linked.
- Check each stick. Roll, pitch, yaw and throttle each move their own bar. If two are swapped, set the Channel Map;
AETR1234is the default and matches most radios. - Check directions. Stick right, stick forward and throttle up should all raise the value above 1500. Reverse a channel in the radio if it goes the other way.
- Check the ends. Centered reads about 1500; full travel about 1000 and 2000. Fix endpoints in the radio.
- Throttle bottom below 1050. Otherwise Betaflight refuses to arm.
- Write down your switches. Flip each one and note which AUX bar moves. On ExpressLRS, the arm switch goes on channel 5 (AUX1).
5. Arming, angles and Angle mode
Three different "angle" settings matter to a new pilot. Beginners and most drone soccer play use Angle mode.
| Setting | Where | What it does | For class |
|---|---|---|---|
| Maximum arm angle | Configuration tab, Arming | Won't arm if the drone is tilted more than this. Shows as the ANGLE flag. | Keep the default, 25° |
| Angle mode | Modes tab | Drone levels itself when the sticks are centered | On for every beginner flight |
| Angle limit | PID Tuning tab or CLI angle_limit | How far the drone leans at full stick in Angle mode | Lower for first flights; raise in steps of 5 |
Set up the Modes tab with the radio on: add a range for ARM on your arm switch (AUX1) so the yellow marker sits inside it only when the switch is on. Add ANGLE on a second switch, or stretch its range across the whole bar so it's always on for first sessions. Add BEEPER on a switch to find a lost drone. Save, then flip each switch and watch its mode light up.
With no flight mode on, the drone flies in Acro mode and won't level itself. That's why always-on Angle mode is safer for beginners. Type get angle_limit in the CLI to see your current limit, because defaults differ between versions.
Arming simulator
Set up the drone the way it sits on your bench and see which arming flags Betaflight would show. Clear every flag to arm.
6. Motor and failsafe settings
Motor protocol: in the Configuration tab, pick DShot300 or DShot600. DShot lets the motor direction be changed in software and makes turtle mode possible. If the drone's motors are meant to spin the opposite way from the table below, turn on Motor direction is reversed there too. Save and reboot.
Know your motor map. Betaflight numbers the motors like this. You need it to put the right props on the right motors.
| Motor | Position (nose forward, seen from above) | Default spin |
|---|---|---|
| 1 | Rear right | Clockwise |
| 2 | Front right | Counter-clockwise |
| 3 | Rear left | Counter-clockwise |
| 4 | Front left | Clockwise |
Failsafe: for caged flying, set the Failsafe tab's Stage 2 procedure to Drop, so the motors stop if the radio link is lost. Save.
Check the link loss over USB: with the radio on and the Receiver tab bars moving, turn the radio off. Within about a second the bars should stop and the Setup tab should show RXLOSS or FAILSAFE. Turn the radio back on and the flag should clear. If the flag never appears, fix the receiver setup (module 4) before the drone flies.
7. Rates and feel
Leave PID values at the drone maker's or Betaflight's defaults. Beginners change rates and throttle feel, not PIDs. Most "bad tune" complaints are really bent props, loose screws or a cracked frame.
| PID Tuning sub-tab | What it changes | Touch it? |
|---|---|---|
| PID Profile Settings | How hard the drone fights to do what you asked | No, unless your coach asks |
| Rateprofile Settings | How fast it turns at each stick position, and throttle feel | Yes |
| Filter Settings | Noise filtering | No |
- Lower max rate on roll, pitch and yaw so full stick turns slower. The preview shows degrees per second.
- Throttle limit in Rateprofile Settings caps top speed, for example at 80%, in a crowded cage.
- Throttle mid and expo: set mid near the stick position where the drone hovers and add a little expo to make hovering easier.
- Keep a second rate profile for stronger pilots.
Never paste PID values from the internet onto a different drone. If a change makes things worse, restore your module 2 backup.
8. Bench drills
Do these on your own drone with your coach. Check each one off as you pass it; the module completes when all eight are done.
9. Troubleshooting
When a drone won't arm, Betaflight already knows why. Read the flags in the Setup tab, or type status in the CLI and read the last line. With no computer, count the beeps when you flip the arm switch: the flag number is 5 × long beeps + short beeps.
| Flag | Means | Fix |
|---|---|---|
MSP | Connected to the app | Normal on USB |
CLI | CLI tab is open | Leave the CLI tab |
RXLOSS | No radio signal | Radio on, bound, right port and provider (module 4) |
FAILSAFE | Failsafe active | Restore the link, flip the arm switch off and on |
THROTTLE | Throttle not at the bottom | Stick down; must read below 1050 |
ANGLE | Tilted past the max arm angle | Set it level |
ARMSWITCH | Arm switch was on at power-up | Switch off, then on |
CALIB | Gyro still calibrating | Keep it still a few seconds after power-up |
ACC_CALIB | Accelerometer needs calibrating | Calibrate on a level surface (module 3) |
BADRX | Receiver data looks wrong | Check provider and wiring; rebind |
NOPREARM | A prearm switch is set up and off | Flip prearm first, or remove it in Modes |
RPMFILTER | No RPM data from the ESC | Use bidirectional DShot only with supporting ESC firmware |
MOTOR_PROTO | No motor protocol | Pick DShot in Configuration |
REBOOT_REQD | Change needs a reboot | Save and reboot |
RUNAWAY | Runaway takeoff detected | Coach unplugs the battery; then check motor order, direction, props |
| Symptom | Most likely cause | Fix |
|---|---|---|
| Flips or shoots sideways on takeoff | Motor order, direction, props on wrong motors, or board alignment | Module 3 check; tell your coach so motor order, direction and props get checked |
| Drifts in Angle mode | Radio trims, accelerometer not calibrated, bent prop | Center trims, recalibrate level, check props; accelerometer trims last |
| Receiver bars don't move | Wrong port or provider, not bound, TX/RX swapped | Module 4 |
| Stick moves the wrong bar | Channel map | AETR1234 in radio and Betaflight |
| Settings gone after reboot | Not saved | Press Save, or type save |
| Shakes in a hover, motors hot | Damaged props, loose screws, cracked frame | Mechanical checks before any tuning |
Final check
Answer all of these correctly to finish the course. Wrong answers can be retried.