Betaflight RPM Filtering Setup: Complete Guide to Clean Gyro Data with Bidirectional DShot

You have probably seen it in your blackbox logs: a thick band of noise that rises and falls with motor RPM, smearing across the gyro spectrogram like a waterfall. That is motor-speed-correlated noise — vibrations from spinning props, unbalanced bells, and bearing chatter that track exactly with motor frequency. Before RPM filtering, Betaflight had to fight this with static notch filters that wasted CPU cycles and could never quite catch the moving target. RPM filtering changed the game entirely. Here is how to set it up and squeeze every last bit of performance out of it.

What RPM Filtering Actually Does

RPM filtering works by placing a notch filter at the exact frequency that each motor is spinning — in real time, updated on every ESC telemetry frame. The flight controller knows the motor’s RPM from bidirectional DShot telemetry, calculates the fundamental frequency (RPM ÷ 60 = Hz), and applies a notch filter centered on that frequency and its harmonics. The result: motor noise is filtered out with almost zero impact on flight controller latency, because the notch is only narrow enough to catch the noise peak — the gyro signal you actually need for PID control passes through untouched.

Prerequisites

You need three things for RPM filtering to work:

  • ESC firmware that supports bidirectional DShot: BLHeli_32 (version 32.7 or later) or AM32 (any modern release). Bluejay (for BLHeli_S) also supports it as a budget option.
  • Betaflight 4.2 or newer: RPM filtering was introduced in Betaflight 4.2. Current versions (4.5+) have matured the implementation significantly.
  • Bidirectional DShot enabled: This is not just a Betaflight setting — you must enable it on the ESC side via the ESC configurator, and in Betaflight on the Configuration tab.

Enabling Bidirectional DShot

Step one: open your ESC configurator (AM32 Configurator or BLHeliSuite32 if you still have it), connect, and confirm that “Bidirectional DShot” is set to On for every ESC. This is not always the default — AM32 ships with it off, and earlier BLHeli_32 versions required a manual toggle. Save settings to all ESCs.

Step two: in Betaflight Configurator, go to the Configuration tab. Under “ESC/Motor Features,” select your DShot protocol (DShot300 or DShot600 — either supports bidirection). Check the box for “Bidirectional DShot”. Betaflight will confirm that the feature is active. If it shows a warning or error, your ESC firmware does not support it or the ESC configurator setting is off.

Step three: under the Motors tab, look at the “Motor Poles” setting. This tells Betaflight how many electrical rotations correspond to one mechanical rotation. For 99% of FPV motors:

Stator SizeTypical Magnet PolesMotor Poles Setting
0802–1103 (tiny whoop)12N14P14
1204–1404 (toothpick/cinewhoop)12N14P or 9N12P14 or 12
1505–2207 (3–5 inch)12N14P14
2306–2810 (5–10 inch)12N14P14

The wrong magnet count makes Betaflight calculate the wrong RPM, placing notch filters at the wrong frequencies. Most modern 5-inch motors are 14-pole. If your RPM reading is roughly double or half of expected, your pole count is wrong.

RPM Filter Settings

On the PID Tuning tab, scroll down to “RPM Filter.” The key parameters:

SettingDefaultWhat It DoesRecommendation
Harmonics3Number of motor frequency multiples to notch3 for 5-inch, 2 for whoops
Min Frequency100 HzLowest RPM notch (below motor idle)100 Hz (default)
Q Factor400–800Notch width — lower = narrower, higher = wider500 (good starting point)
Dynamic Notch CountPer harmonicFilters each motor independently or combinedPer-motor (default)

The Q factor is the most important tuning parameter. Lower Q (200–400) creates a very narrow notch that removes less gyro signal but may miss noise if RPM telemetry has jitter. Higher Q (600–900) catches more noise but starts eating into the usable gyro bandwidth. Start at 500 and adjust after reviewing blackbox logs.

Before/After: What RPM Filtering Does to Your Gyro

Take a blackbox log with RPM filtering off and you will see a clear diagonal band in the spectrogram — the motor noise tracking RPM from idle to full throttle. With 4 motors at different speeds in a turn, you get 4 separate noise tracks. Static notch filters can suppress maybe 2 of these at once.

Enable RPM filtering and take another log. The diagonal bands disappear. The spectrogram goes clean. Your gyro trace still has broadband noise — frame resonance and prop wash are not motor-frequency-correlated, so RPM filtering does not touch them — but the dominant noise source is gone. This is why RPM-filtered quads can run higher P and D gains without oscillation: the control loop is no longer fighting motor noise it cannot separate from real gyro data.

Troubleshooting RPM Filter Errors

Betaflight can display rpm filter error flags in the OSD. Here is what they mean:

OSD WarningMeaningFix
RPMFILTEROne or more ESCs not sending valid telemetryCheck bidirectional DShot enabled on all ESCs; check wiring
NO RPM DATAComplete loss of RPM telemetry from all ESCsReverify bidirectional DShot in ESC configurator and Betaflight
RPM LIMITMotor RPM exceeds maximum filterable frequencyRaise harmonics or check motor poles setting

The most common cause of RPMFILTER warnings is a single ESC that has bidirectional DShot turned off while the other three are on. Open the ESC configurator and verify all four ESCs have identical settings.

Motor Timing and RPM Filtering

Motor timing in your ESC settings affects commutation timing — how early the next phase fires relative to the rotor position. Higher timing produces slightly more top-end power at the cost of efficiency and heat. It does not change the RPM that the ESC reports, so RPM filtering accuracy is unaffected. However, very aggressive timing (25°+) can increase electrical noise on the power rails, which may couple into the gyro as broadband noise that RPM filtering cannot remove. Stick to auto timing or 15–20° on most setups.

Dynamic Idle and RPM Filtering

Dynamic idle, introduced in Betaflight 4.3, works hand-in-hand with RPM filtering. Dynamic idle adjusts motor idle speed based on gyro activity — lower idle in steady flight, higher idle during aggressive maneuvers to prevent desyncs. Because RPM filtering tracks the actual motor speed, it automatically adjusts the notch position as dynamic idle varies the RPM. There is no conflict between these features; they complement each other. Enable both for the cleanest possible gyro data and the lowest idle RPM your setup can handle without desyncs.

Static Notch: Keep It or Remove It?

With RPM filtering active, the static notch filters in Betaflight’s filter settings become optional. Many pilots disable them entirely and rely solely on RPM filtering plus the lowpass filters. This is valid if your frame has no strong fixed-frequency resonance (e.g., a 5-inch quad with a stiff carbon frame typically has frame resonances above 300 Hz, which the gyro lowpass already attenuates). If you see a persistent non-motor-related peak in blackbox spectrograms — often around 200–350 Hz for 5-inch — keep one static notch centered on that frequency.

The real win: with RPM filtering handling motor noise, you can raise the gyro lowpass cutoff (from the old default of 200 Hz to 250–300 Hz), which reduces filter delay by roughly 1–2 ms. That is free stick responsiveness.

Leave a Comment

Scroll to Top