The Betaflight CLI tab is where real configuration happens. The GUI tabs are convenient, but they expose maybe 40% of available settings. The CLI gives you everything — every parameter, every filter coefficient, every PID value, and the ability to save a complete snapshot of your tune in five seconds. Here’s how to use it like you’ve been doing this for years.
The Three Essential Commands
diff all — This is your tune’s fingerprint. It outputs every setting that differs from Betaflight defaults. After tuning a new build, you run diff all, save the output to a text file, and you’ve captured your entire configuration in a format that can be pasted back into the CLI to restore it perfectly. This is the single most important command in Betaflight.
dump — Outputs every single setting, including defaults. Much longer than diff all, but useful when debugging — you can see what a specific parameter is set to even if it’s at the default value. If diff all doesn’t show a setting you’re looking for, it means that setting is at its default. Use dump to confirm.
dump all — Same as dump but includes hardware-specific configuration. This is what you’d want if migrating settings between identical flight controllers. Generally, stick with diff all for backups — it’s cleaner and portable across different FC targets.
The get and set Workflow
Every setting in Betaflight has a name and a value. The GUI tabs are just wrappers around CLI get and set commands. Understanding this means you can configure anything without touching the mouse.
get [setting_name] — Shows the current value of any setting. Partial names work with wildcards. Examples:
get gyro_lowpass
Returns every setting containing “gyro_lowpass” in its name, showing current values and allowed ranges. This is how you verify what filter frequencies are actually active.
get small_angle
Shows small_angle = 180 or whatever your current setting is. This is the maximum tilt angle that allows arming — setting it to 180 means you can arm at any angle, which is essential for turtle mode and crash recovery.
set [setting_name] = [value] — Changes a setting immediately. No need to navigate through tabs. Common examples:
set small_angle = 180
set osd_warn_arming_disable = ON
set vbat_min_cell_voltage = 330
set vbat_max_cell_voltage = 430
set gyro_lowpass_hz = 200
set dshot_bidir = ON
After making changes, always run save — this writes the configuration to flash and reboots the flight controller. Without save, your changes are lost when you power cycle.
The Backup Workflow Every Pilot Needs
This takes 30 seconds and can save hours of re-tuning after a firmware flash or FC replacement:
- Connect to Betaflight Configurator
- Open CLI tab
- Type
diff alland press Enter - The output scrolls for 1-2 seconds
- Click “Save to File” at the bottom of the CLI window
- Name it something useful:
2026-05-26_5inch_freestyle_diff.txt - Store it somewhere safe — Google Drive, Dropbox, or a dedicated folder
That’s it. You now have a complete, restorable backup of your tune. If you flash new firmware, factory reset, or replace the FC, paste that entire diff all output into the CLI, type save, and your quad is back exactly as it was.
CLI Parameter Reference Table
| Setting | CLI Command | Default | Recommended Range | What It Controls |
|---|---|---|---|---|
| Small Angle (arming) | set small_angle = |
25 | 180 (unrestricted) | Max tilt angle for arming |
| CPU Overclock | set cpu_overclock = |
OFF | OFF/192MHZ | FC processing speed |
| Motor Idle % | set motor_idle_throttle_percent = |
5.5 | 4.0-8.0 | Minimum motor speed at idle |
| Gyro Lowpass 1 | set gyro_lowpass_hz = |
250 | 150-350 | Primary gyro filter cutoff |
| Gyro Lowpass 2 | set gyro_lowpass2_hz = |
500 | 350-1000 | Secondary gyro filter cutoff |
| DTerm Lowpass 1 | set dterm_lowpass_hz = |
150 | 100-200 | D term filter cutoff |
| DTerm Lowpass 2 | set dterm_lowpass2_hz = |
300 | 200-400 | Secondary D term filter |
| VBAT Min Cell | set vbat_min_cell_voltage = |
330 | 320-350 | Low battery warning (x0.01V) |
| VBAT Max Cell | set vbat_max_cell_voltage = |
430 | 420-440 | Full battery voltage (x0.01V) |
| DShot Bidir | set dshot_bidir = |
OFF | ON (if supported) | RPM filtering prerequisite |
Advanced CLI Techniques
Differential backup after a session: After flying 5-10 packs and refining your tune, run diff all again and compare it to your previous backup. Tools like diff on the command line will highlight exactly what changed. This is how you learn what each parameter actually does — you change one thing, fly, and document the result.
Batch configuration for new builds: I keep a template diff all file for each build type. For a new 5-inch freestyle quad, I paste the template into CLI, then adjust motor directions, UART assignments, and port settings. The filter and PID presets carry over, and I’m flying on a known-good baseline in under two minutes.
The defaults command: Typing defaults in CLI resets EVERYTHING to factory settings. Use this before pasting a diff all from another build — it ensures no leftover settings contaminate the new configuration. Always defaults before restoring from backup, never skip this step.
Common Mistakes and How to Avoid Them
Mistake 1: Forgetting to save after CLI changes
You spend 20 minutes tuning filter settings in CLI, unplug, go fly, and nothing has changed. The CLI changes live in RAM until you type save. The fix: Make save a muscle-memory reflex after every CLI session. If you’re unsure whether you saved, re-run diff all and check if your changes are present.
Mistake 2: Pasting a diff all from a different FC target without running defaults first
Every flight controller target has unique hardware mappings. If you paste a diff all from an STM32F405 target onto an F722 target, resource mappings will be wrong and motors won’t spin. The fix: Always defaults first, then paste. Betaflight maps resources correctly for the target when restoring defaults.
Mistake 3: Saving dump instead of diff all for backups
dump includes every default setting. When firmware updates change defaults, your old dump file overrides the new defaults with old values — potentially breaking features. diff all only saves changes from defaults, so firmware updates apply correctly. Fix: Always use diff all for backups.
Mistake 4: Not understanding that set changes take effect immediately
If you set gyro_lowpass_hz = 50 while the quad is armed (bad idea anyway), the change applies immediately — potentially causing a flyaway. Fix: Only make CLI changes when disarmed. If you’re experimenting with aggressive filter changes, test them with props off on the bench first.
⚠️ Regulatory Notice: The Betaflight configuration procedures described here affect your drone’s flight characteristics and failsafe behavior. Always bench-test configuration changes before flight. Ensure your failsafe and return-to-home behavior complies with 2026 drone regulations in your jurisdiction. Some regions require specific failsafe behaviors — verify your CLI settings against local requirements before flying.
Understanding the CLI builds directly on our Betaflight Configuration Tab walkthrough — the GUI tabs and CLI are two views of the same settings. And when you’re ready to update firmware, our Betaflight firmware upgrade safety guide walks through the process without bricking your FC.
The SpeedyBee F405 V4 flight controller includes 16MB of onboard flash storage — plenty of room to store flight logs and multiple backup configs. Check it out at uavmodel.com.
