gitwtfhub

wtf is adrc-betaflight?

danusha2345/adrc-betaflight — explained in plain English

Analysis updated 2026-05-18

5CAudience · developerComplexity · 4/5Setup · hard

TL;DR

An experimental Betaflight firmware fork that replaces the standard PID flight controller with ADRC, a method that automatically compensates for wind, weight, and propeller changes.

Mindmap

mindmap
  root((ADRC Betaflight))
    What it does
      Replaces PID with ADRC
      Cancels disturbances live
      Handles payload changes
    Tech stack
      C
      Betaflight firmware
    Use cases
      Drone flight tuning
      Stability testing
      Unbalanced payload flight
    Audience
      Drone pilots
      Firmware developers
    Setup
      Flash prebuilt firmware
      Tune repurposed PID fields
      Report flight test results

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Flash prebuilt firmware onto a drone's flight controller to try ADRC control instead of standard PID.

REASON 2

Tune a drone using the repurposed P, I, and D fields that now represent ADRC parameters.

REASON 3

Test ADRC on real flights and report results to help validate the fork's stability fixes.

REASON 4

Fly a drone with an unbalanced or swinging payload more smoothly than standard PID tuning allows.

What's in the stack?

CBetaflight

How it stacks up

danusha2345/adrc-betaflightblackcoffee2/promesnatchev/luadbi
Stars555
LanguageCCC
Last pushed2015-12-16
MaintenanceDormant
Setup difficultyhardmoderatemoderate
Complexity4/54/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · hard Time to first run · 1h+

Requires flashing custom firmware to a flight controller and careful PID field tuning specific to ADRC.

Wtf does this do

This project modifies Betaflight, the flight control firmware used on many small racing and freestyle drones, by swapping out its standard PID control loop for a different method called Active Disturbance Rejection Control, or ADRC. The traditional PID approach needs careful manual tuning to fly well, and it can struggle when a drone's weight, propellers, or wind conditions change unexpectedly. ADRC instead constantly estimates outside disturbances, like wind or an unbalanced payload, and cancels them out in real time, which the author says lets a drone fly smoothly even with rough, uncalibrated settings, mismatched propeller sizes, or an unbalanced load hanging off one motor arm. Rather than adding a new settings screen, ADRC repurposes the existing P, I, and D fields in the Betaflight Configurator's PID Tuning tab. The P field becomes Control Bandwidth, controlling how quickly the drone reacts to errors. The I field becomes Observer Bandwidth, controlling how fast the system estimates and reacts to outside forces. The D field becomes System Gain, describing how powerful the motors are. The README walks through example values for different axes and drone sizes, along with warnings about settings that can interact in confusing ways, such as the Configurator's simplified tuning sliders silently overwriting ADRC values if left on. This is explicitly labeled an experimental fork, built on top of another developer's original ADRC implementation, with a number of small fixes aimed at making it more reliable, some of which have been tested on real flights of small and medium sized drones. The project maintainer is actively looking for more people to test it on different drone builds and report results. Separately, a version of ADRC based on this work is being proposed for inclusion in the official Betaflight project as an optional feature, so pilots could choose it per flight profile while keeping standard PID control available as well. Prebuilt firmware files for many common flight controller boards are provided so pilots do not need to compile the code themselves.

Yoink these prompts

Prompt 1
Explain what the P, I, and D fields now control under ADRC compared to standard PID tuning.
Prompt 2
Walk me through flashing one of the prebuilt firmware hex files onto my flight controller.
Prompt 3
Help me understand what adrc_hover_throttle and adrc_b0_scale settings do and when to adjust them.
Prompt 4
Explain the tradeoffs of turning pid_at_min_throttle off versus leaving it on for this fork.

Frequently asked questions

wtf is adrc-betaflight?

An experimental Betaflight firmware fork that replaces the standard PID flight controller with ADRC, a method that automatically compensates for wind, weight, and propeller changes.

What language is adrc-betaflight written in?

Mainly C. The stack also includes C, Betaflight.

How hard is adrc-betaflight to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is adrc-betaflight for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.