Using Dynamic Filter in Betaflight to Automatically Adapt Gyro Noise Rejection
You need bidirectional DShot300 or DShot600 enabled in Betaflight’s config tab to get RPM data from BLHeli_32 v32.7+ or Bluejay-flashed ESCs, and your F4/F7/H7 flight controller must support it. Set the correct motor pole count-usually 14 for 22XX–24XX motors-so RPM filtering hits dead-on. Once live, the dynamic notch uses real-time motor frequencies, cuts phase lag, and nails harmonics up to the 3rd with rpm_filter_harmonics = 3. You’ll see cleaner gyros, so drop static notches, lower gyro low-passes to 200–250Hz, and bump dyn_notch_q to 500 for tighter suppression. Outdated firmware, wrong poles, or analog RPM setups break the chain-only bidirectional DShot delivers the precision needed. A few tweaks here activate noticeably sharper flight performance, especially under variable loads. There’s a sweet spot in tuning that takes it even further.
We are supported by our audience. When you purchase through links on our site, we may earn an affiliate commission, at no extra cost for you. Learn more. Last update on 28th May 2026 / Images from Amazon Product Advertising API.
Notable Insights
- Enable bidirectional DShot in Betaflight to receive real-time motor RPM data for dynamic filtering.
- Use DShot300 or DShot600 with BLHeli_32 v32.7+ or Bluejay-flashed ESCs for RPM telemetry.
- Set correct motor pole count in Betaflight to ensure accurate RPM-to-frequency conversion.
- Disable static notches and reduce dynamic notch count-RPM-driven filtering handles harmonics effectively.
- Configure gyro low-pass filters conservatively (e00–250 Hz) to minimize lag while reducing noise.
Enable RPM Filter Via Bidirectional DShot
When setting up RPM filtering on your quad, the first step is enabling bidirectional DShot in Betaflight’s Configuration tab-without it, you won’t get any RPM data from your ESCs. You need bidirectional DShot because it allows ESC telemetry, like motor RPM, to travel back to the flight controller for precise noise filtering. Make sure your BLHeli_32 ESC runs firmware v32.7+ and your protocol is set to DShot300 or DShot600. In the Motors tab, confirm your motor pole count-usually 14 poles for 22XX–24XX motors-so Betaflight calculates the fundamental frequency accurately from back-EMF. Spin a motor and watch for an “R number” to verify RPM detection. This real-time feedback is key for the RPM filter to adapt dynamically. Avoid UART or analog setups; only bidirectional DShot over signal wire delivers reliable data. Testers report smoother flights and cleaner logs with proper setup.
Verify ESC and FC Compatibility First
Before diving into tuning, you’ll want to make sure your hardware’s actually up to the task-no point enabling dynamic filtering if your flight controller can’t run Betaflight 3.4 or later, since that’s where bidirectional DShot and RPM filter support first landed. You need a modern F4/F7/H7 flight controller with enough power to handle the load, and your ESCs must support bidirectional DShot. Make sure you’re using BLHeli_S ESCs flashed with Bluejay firmware, or BLHeli_32 v32.7+, so they properly report RPM data. In Betaflight, select DShot300 or DShot600 under the DShot protocol-it won’t work with PWM or OneShot. Also, check motor poles in Betaflight config; most motors use 12–14 poles.
| Component | Requirement | Why It Matters |
|---|---|---|
| Flight Controller | F4/F7/H7, Betaflight 3.4+ | Enables bidirectional DShot |
| ESCs | BLHeli_S (Bluejay) or BLHeli_32 | ESC supports RPM telemetry |
| DShot Protocol | DShot300 or DShot600 | Required for bidirectional communication |
How RPM Data Powers Auto Notch Filtering
What if your quad could listen to each motor’s spin and adapt in real time? With bidirectional DShot, your flight controller gets live RPM data, letting the RPM filter calculate the fundamental motor frequency for precise noise rejection. Instead of guessing with static notch filters, Betaflight applies Dynamic Notch Filter updates every PID loop, targeting 1x, 2x, and 3x harmonics automatically. You set rpm_filter_harmonics = 3, and it locks onto real motor frequency, placing notch filters exactly where needed. Each motor’s RPM is tracked individually-perfect for uneven loads on hexacopters. Filtering stays sharp because it’s based on actual telemetry, not delayed FFT estimates, reducing phase lag. This real time feedback improves gyro noise rejection dramatically. With rpm_filter_min_hz set to 100, you avoid low-frequency wobbles. Testers report smoother logs and cleaner control, especially in aggressive flights where motor speed changes fast.
Reduce Gyro Filtering After RPM Is Active
Since the RPM filter’s already handling motor harmonics with precision, you can scale back the rest of your gyro filtering to minimize delay without sacrificing stability. Reduce dynamic notch count to 1-multiple notches aren’t needed since the RPM filter actively cancels motor harmonics. Disable aggressive static notch filters; they add phase delay and overlap with the RPM filter’s dynamic noise rejection. Lower gyro_lowpass_hz to 200 Hz and gyro_lowpass2_hz to 250 Hz, keeping signal clean without over-filtering. Increase dyn_notch_q to 500 for sharper, more effective suppression. Avoid stacking heavy low-pass filters-they introduce lag that dulls responsiveness.
| Filter Type | Before RPM Filter | After RPM Filter |
|---|---|---|
| Notch Count | 3–4 | 1 |
| Static Notch Filters | Enabled | Disabled |
| gyro_lowpass_hz | 300+ Hz | 200 Hz |
Trimming gyro filtering lets the RPM filter shine with minimal phase delay.
On a final note
You’ll see cleaner flight performance by enabling dynamic filtering in Betaflight with RPM data from bidirectional DShot, assuming your ESCs and flight controller support it. Real-world tests show up to 30% reduction in gyro noise once the RPM filter activates, letting you reduce notch filtering aggressively-some pilots cut notch values by half without stability loss. It’s a smart, responsive setup, especially on 4S+ builds spinning high-kv motors. Just confirm hardware compatibility first, flash the right ESC firmware, then tune in Betaflight.





