Your motors come down hot and your blackbox logs look like an earthquake. Before you touch a single PID value, fix your filters. Bad filtering is the #1 cause of “unexplained” oscillations, hot motors, and tunes that never feel locked in. Here’s the filter stack that produces a clean gyro signal without adding 15ms of delay.
The Filter Pipeline: What Happens to Gyro Data
When your gyro samples rotation at 8kHz, the raw data includes motor vibration, frame resonance, prop wash, and electrical noise from the ESC switching. Betaflight runs this through four filter stages in sequence:
- RPM Filter Bank — targets motor-specific frequencies (determined by RPM × number of poles)
- Dynamic Notch Filter(s) — tracks and cancels the dominant frame resonance peak
- Static Notch Filter(s) — fixed-frequency notches for known mechanical resonances
- Lowpass Filter(s) — removes remaining high-frequency noise above the PID loop’s usable range
Each filter removes noise but adds group delay — the time between the gyro measuring a movement and Betaflight acting on it. Stack too many filters and your quad feels sluggish. Too few and your motors burn up fighting noise. The art is in balancing rejection depth against delay.
Dynamic Notch: The Adaptive Filter
Dynamic notch analyzes the gyro signal in real time, finds the loudest frequency peak (the frame resonance), and places a notch filter exactly on it. As RPMs change, the peak shifts, and the dynamic notch follows it.
Key parameters:
| Parameter | Default | Recommended Range | Effect |
|---|---|---|---|
| dyn_notch_count | 3 | 1-3 | Number of dynamic notches. More = better rejection, more delay |
| dyn_notch_q | 250 | 200-400 | Q factor: lower = wider notch, more delay. Higher = narrower, less delay |
| dyn_notch_min_hz | 100 | 80-130 | Minimum frequency the dynamic notch will track |
| dyn_notch_max_hz | 600 | 400-800 | Maximum frequency — set above highest frame resonance |
Three dynamic notches at Q=250 was the Betaflight 4.3+ default for a reason — it catches up to three resonance peaks simultaneously. On a well-built quad, one dynamic notch at Q=300-400 is often enough and saves 1-2ms of delay. On a rattly frame with bent arms, you might need all three.
How to check: Arm the quad on the bench (props off), open the Sensors tab, and watch the gyro spectrograph. Any peaks above the noise floor are resonances. The tallest peak should be below the dynamic notch max. If it’s above 600Hz, your frame has a stiffness problem that filtering can’t fully fix.
Static Notch: Fixed-Frequency Filter for Known Problems
Static notches target frequencies that don’t change with RPM — usually the frame’s natural resonant mode and its harmonics. Unlike dynamic notches, these don’t track.
The standard setup: one static notch at D-term LPF1 frequency (typically 200-300Hz), centered on the frame’s primary bending mode.
To find your frame’s resonance:
1. Do a hover test with all filters off (DANGEROUS — props on, land immediately if oscillations start)
2. Record a blackbox log
3. Open in Betaflight Blackbox Explorer
4. Look at the gyro spectrograph — the tallest non-motor peak is your frame resonance
5. Set a static notch centered on that frequency
Alternatively, tap the frame with the quad powered and watch the gyro graph. The ringing frequency is your frame resonance. Set a static notch there with Q=200 (wide enough to catch the harmonic too).
This testing should only be done by experienced pilots who can land on command — an unfiltered quad can oscillate itself apart. The safer method is to fly with default filters, log a flight, and check the blackbox spectrograph for peaks the dynamic notch isn’t catching.
RPM Filtering: Don’t Skip This
RPM filters are the most important filter in the stack. They’re narrow, fast, and target individual motor harmonics. Without them, your dynamic notch has to cover the full RPM range of four motors, which means wider notches and more delay.
RPM filtering requires:
– BLHeli_32 or Bluejay firmware with bidirectional DShot
– Motors tab → enable bidirectional DShot
– Set motor poles correctly (most 22xx/23xx motors are 12N14P = 14 poles, but verify for your specific motor)
With RPM filters active, you can reduce dynamic notches from 3 to 1 or 2 and raise the dynamic notch Q, netting 2-3ms less filter delay. As covered in our RPM filtering guide, the combination of RPM + dynamic notch produces 60-80% less gyro noise than either alone.
Filter Delay and Flight Feel
Every notch adds group delay. Every lowpass adds phase delay. Here’s the real-world impact at 8kHz PID loop:
| Filter Stack | Total Delay | Flight Feel |
|---|---|---|
| RPM + 1 dyn notch Q400 + D-term LPF1 250Hz | ~4ms | Crisp, immediate response |
| RPM + 2 dyn notch Q250 + D-term LPF1 200Hz | ~7ms | Slightly soft, good for freestyle |
| RPM + 3 dyn notch Q200 + D-term LPF1 150Hz | ~11ms | Mushy, feels like 50Hz packet rate |
| No RPM, 3 dyn notch + deep LPFs | ~18ms | Unflyable — chasing oscillations you caused |
At 8kHz loop, each millisecond of filter delay is 8 PID cycles of stale data. At 4ms delay, the PID controller is working with 32-cycle-old gyro data. At 11ms, it’s 88 cycles behind. The quad feels disconnected from your fingers.
The goal: minimize filter delay to under 5ms while keeping motor temperatures below 65°C after a hard flight. If motors are cool but the quad feels mushy, you have room to reduce filtering.
Common Gyro Filtering Mistakes
Mistake 1: Turning off all filters because “they add delay.” An unfiltered 5-inch quad sends 40-60% noise amplitude into the PID controller with each gyro sample. The motors react to that noise, creating more vibration, creating more noise — a feedback loop that burns motors in under 30 seconds. Filters exist because the alternative is worse than the delay.
Mistake 2: Copying someone else’s filter settings. Filter settings are hardware-specific. My 2207 5-inch quad on a stiff frame needs different filters than your 2306 build on a different frame material and arm thickness. Start from defaults, log a flight, and adjust based on your spectrograph.
Mistake 3: Setting dynamic notch max too low. If your frame resonates at 550Hz and dyn_notch_max_hz is 400, the dynamic notch can’t reach it. The static notch might catch it, but since static notches don’t track RPM changes, some portions of the throttle range will have unfiltered resonance. Set max at least 100Hz above your highest resonance.
Mistake 4: Running RPM filters with the wrong motor pole count. If your motor is 14 poles and you enter 12 in Betaflight, the RPM filter targets the wrong frequencies. Every harmonic notch is offset by 14/12 = 16.7%. Instead of filtering noise, you’re filtering signal and passing noise.
⚠️ Regulatory Notice: The flight recommendations in this article should be followed in accordance with the latest 2026 drone regulations in your country or region. Always verify local laws regarding flight altitude, no-fly zones, remote ID requirements, and registration before flying. Regulations vary significantly between the FAA (US), EASA (EU), CAA (UK), CAAC (China), and other authorities.
Filter tuning is where the difference between a “well-tuned quad” and a “hot mess” gets made. The blackbox doesn’t lie — if your gyro spectrograph has peaks above the noise floor, your PIDs are fighting something you haven’t filtered. When combined with our Betaflight PID tuning guide, proper filtering gives you a clean signal that PIDs can actually work with. For a deep dive into motor-specific noise, our BLHeli_32 timing and demag guide covers how ESC settings affect the electrical noise that shows up in gyro traces.
The T-Motor Velox V3 2306 1950KV motors produce exceptionally smooth RPM data with their balanced bell design, reducing the filtering load on your flight controller and allowing tighter notch filters with less delay — available at uavmodel.com.
