Betaflight RPM Filtering: Bidirectional DShot Setup and Dynamic Notch Configuration — 2026 Guide

Your quad flies fine in a hover but turns into a wobbling mess on punch-outs. The Blackbox log shows a noise spike at exactly your motor RPM — classic unfiltered motor noise. RPM filtering is the fix, and in Betaflight 4.3+, it is the single biggest upgrade you can make to your tune without touching a single PID slider.

How RPM Filtering Works

Every brushless motor generates electrical noise at a frequency that changes with RPM. A 2400KV motor on 6S spins at roughly 26,000 RPM under load. That is 433 Hz of mechanical noise, and its harmonics (866 Hz, 1300 Hz) land right in the frequency band that your gyro reads as vibration. Traditional static notch filters try to cover these bands with fixed-width cuts — but as RPM changes during flight, the noise frequency moves in and out of those cuts.

RPM filtering solves this by using bidirectional DShot telemetry. The ESC reports the exact motor RPM back to the flight controller on every ESC telemetry frame. Betaflight then places a narrow notch filter at precisely that frequency — and shifts it in real time as the motor spins up or down. The result: you cut motor noise at the source instead of carving wide notches that eat into your PID authority.

What you gain with RPM filtering enabled:
– Cleaner gyro traces with 2-3 fewer notch filters
– Lower filter delay (typically 2-4 ms reduction)
– Sharper propwash handling because the PID loop sees less noise
– No need to guess static notch frequencies per build

Step-by-Step Bidirectional DShot + RPM Filter Setup

Prerequisites

You need BLHeli_32 ESCs (BLHeli_S with JESC/JazzMaverick firmware also works) and Betaflight 4.2 or newer. Nearly all ESCs sold since 2021 support bidirectional DShot out of the box.

Step 1: Enable Bidirectional DShot

  1. Open Betaflight Configurator, go to the Configuration tab.
  2. Under “ESC/Motor Features,” set ESC/Motor Protocol to DSHOT300 or DSHOT600. DShot300 works for most builds; use DShot600 if your FC and ESCs support it.
  3. Toggle Bidirectional DShot to ON.
  4. Click Save and Reboot.

Verification: Go to the Motors tab, spin up motor 1 slowly with the slider. You should see the “RPM” field populate with a value under each motor bar. If it stays at zero, your ESCs do not support bidirectional telemetry, or you need to flash updated ESC firmware.

What goes wrong: If you enable bidirectional DShot on BLHeli_S ESCs without JESC/JazzMaverick firmware, the motors will not arm. Flash the telemetry-capable firmware first. If you see “RPMFILTER” in the arming disabled flags, the FC detected bidirectional telemetry is enabled but no RPM data is arriving.

Step 2: Configure RPM Filters

  1. Go to the PID Tuning tab, scroll down to Filter Settings.
  2. Under “Gyro RPM Filter,” set:
    RPM Filter Harmonics: Start with 3 harmonics. Each harmonic covers one multiple of the base motor frequency. Three harmonics typically cover the dominant noise bands for 5-inch builds.
    RPM Filter Min Hz: Set to 100. This prevents the filter from trying to track below useful frequencies.
  3. Under “Dterm RPM Filter,” set the same values — or one fewer harmonic if your build is mechanically clean.
  4. Click Save.

Verification: In the Sensors tab (or with the motors tab open), spin a motor to 50% and watch the gyro trace. With RPM filtering enabled, the amplitude of the noise band at the motor RPM frequency should be visibly reduced. The real test is in the air — fly a punch-out and check Blackbox for motor noise lines.

What goes wrong: Setting harmonics too high (5+) adds unnecessary filter delay. Each harmonic is a small filter — stacking six of them adds up. Two or three harmonics cover 90% of the noise energy on a well-built quad.

Step 3: Remove Redundant Static Notches

With RPM filtering active, you can strip down your static notch configuration:

  1. In the Filter Settings section, set Gyro Notch Filter 1 frequency to 0 (disabled) if it was targeting motor noise.
  2. Set Gyro Notch Filter 2 frequency to 0.
  3. Keep Dynamic Notch Filter enabled — it handles frame resonance, which RPM filtering does not cover. Set:
    Dynamic Notch Range: MEDIUM for most builds
    Dynamic Notch Width: 0 (auto)
    Dynamic Notch Q: 200 (wider catch) or 250 (narrower, less delay)
  4. Dterm Lowpass Filter 1: Lower from default 150 Hz to 125-135 Hz — with RPM filtering handling motor noise, you can use a slightly more relaxed D-term filter.
  5. Click Save.

Verification: Do a test hover. If the motors sound smooth and there is no high-frequency oscillation visible in the FPV feed, you have successfully transitioned to RPM-filter-dominant noise rejection. Fly a full pack with Blackbox logging enabled and review the spectrogram — motor noise lines should be absent or dramatically reduced.

What goes wrong: If you disable too many static filters at once and the quad oscillates, re-enable D-term Lowpass 1 at 100 Hz and work upward. Some frames have structural resonances below 200 Hz that RPM filters do not address — the dynamic notch handles those.

Parameter Comparison: Filter Configurations

Configuration Notch Count Filter Delay Motor Noise Rejection Propwash Handling Best For
Static notches only (no RPM) 2-3 gyro notches 4-7 ms Moderate (narrow cut) Slower recovery Legacy ESCs, no telemetry
RPM filters + 1 static notch 3 RPM harmonics + 1 dynamic 2-4 ms Excellent (tracks RPM) Fast recovery Standard 5-inch build
RPM filters only (no static) 3 RPM harmonics + dynamic notch 1.5-3 ms Excellent Fastest recovery Mechanically clean build
RPM filters + all static notches 3 RPM + 2 static + dynamic 6-9 ms Over-filtered Sluggish Overkill — avoid

Dynamic Notch Tuning with RPM Filters

The dynamic notch is the one static-style filter you keep. It hunts for frame resonance — the frequency where your carbon fiber arms and body vibrate as a structure — which RPM filtering does not cover.

On the PID Tuning tab, after a flight with Blackbox logging:
1. Open the log in Betaflight Blackbox Explorer or Plasmatree.
2. Look at the gyro spectrogram (FFT view). Find the lowest-frequency persistent band — usually between 80-200 Hz on a 5-inch frame.
3. Set Dynamic Notch Min Hz to 20 Hz below that band, and Dynamic Notch Max Hz to 20 Hz above it.
4. Reduce Dynamic Notch Q Factor to 200 if the resonance is broad, or 300 if it is a sharp spike.

This is where the difference between an “okay” tune and a locked-in tune lives. As we covered in our Betaflight Blackbox Log Analysis guide, reading the spectrogram is the fastest way to identify exactly which frequencies need cutting.

Common Mistakes & What Most Pilots Get Wrong

1. Enabling RPM filtering without updating ESC firmware
Some pilots flip the bidirectional DShot switch on BLHeli_S ESCs running stock 16.7 firmware and wonder why the quad won’t arm. Stock BLHeli_S does not send RPM telemetry packets. You need JESC (paid license per ESC) or JazzMaverick (free, open-source) firmware. Flash it through the JESC Configurator or ESC Configurator web tool. If the arming disabled flag says RPMFILTER, your ESCs are not sending data.

2. Running RPM filters at 8K PID loop with DShot300
DShot300 sends a telemetry frame every 32 µs. At an 8 kHz PID loop, the FC expects new RPM data every 125 µs — DShot300 at lower throttle positions can miss frames, causing the RPM filter to briefly open up. Use DShot600 if your ESCs support it, or drop to a 4 kHz PID loop if you are on DShot300. The missed-frame behavior appears as intermittent noise spikes in the spectrogram at exactly the RPM frequency.

3. Disabling the dynamic notch entirely
RPM filtering handles motor noise, not frame resonance. A quad with a structural resonance at 150 Hz will still oscillate at that frequency regardless of how clean your motor RPM data is. Keep the dynamic notch enabled with a Q of 200-250 and let it hunt for frame modes. I have seen pilots chase their tails on PID gains for weeks before realizing the frame itself had a resonance that the RPM filter cannot reach.

4. Setting RPM filter min Hz too high
The default minimum of 100 Hz is fine for 5-inch builds spinning above 20,000 RPM. But on a 7-inch long-range cruiser running low-KV motors, the cruising RPM can dip to 8,000-10,000 RPM (133-166 Hz). If your min Hz is set to 200, the RPM filter disengages right in your cruise band. Drop the min to 70-80 Hz for 7-inch and larger builds. Our 5-Inch vs 7-Inch comparison covers the mechanical differences that drive these tuning decisions.

5. Copy-pasting filter settings from a different build
RPM filter settings are frame-specific. The harmonics that work on a stiff 5-inch racing frame (Apex, Source One) will not match a flexible 3-inch toothpick or a heavy 7-inch cruiser. Each frame has different motor-to-gyro vibration transfer paths. Always tune from a Blackbox log taken on the actual build, not from a YouTube preset.

⚠️ Regulatory Notice: The configuration recommendations in this guide should be tested 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 conducting test flights. Regulations vary significantly between the FAA (US), EASA (EU), CAA (UK), CAAC (China), and other authorities.

Bringing It Together

RPM filtering is not optional in 2026 — it is the baseline. With bidirectional DShot and three harmonics on both gyro and D-term, you can drop two static notches and pick up 3-4 ms of filter delay. That translates to sharper stick response and tighter propwash recovery. The SpeedyBee F405 V4 flight controller handles bidirectional DShot natively with its onboard BLHeli_32 passthrough, making RPM filter setup a plug-and-play affair — just enable the toggle and you are done.


Leave a Comment

Scroll to Top