RPM filter and bi-directional DShot
Bi-directional DShot lets the flight controller receive ESC telemetry on the same signal line — motor RPM, eRPM, and sometimes other data depending on firmware. RPM filter uses that telemetry to place dynamic notches on motor harmonics before PID sees the noise. Together they are one of the biggest quality-of-life upgrades on modern 5" builds — when configured correctly. Misconfigured, they add desyncs, lying notches, and afternoons spent blaming Betaflight.
What problem this solves
Motor noise is not one frequency — it shifts with throttle and RPM. Static notches help but cannot follow the motor across the whole throttle range. RPM filter tracks motor speed and moves notches accordingly, reducing gyro garbage that D-term would otherwise amplify.
That matters more in hot climates where noise floor rises through a session — see filter tuning for hot climates. It also helps mid-throttle cruise where classic tunes used to feel "fine until you punch."
Requirements
| Requirement | Why it matters |
|---|---|
| ESC firmware with bidir DShot | BLHeli_32, AM32 on many targets — see ESC firmware |
| Matching protocol in Betaflight and ESC suite | DShot300 vs 600, bidir on both sides |
| Motor pole count correct in configurator | Wrong poles = wrong notch frequency |
| Clean motor wires and solder joints | Bad phase data = lying RPM |
| Adequate capacitor on ESC / stack | Weak power = telemetry dropouts |
Flash and verify ESC firmware before enabling bidir in Betaflight. Mixed firmware on one quad is a troubleshooting trap.
Motor pole count: get it right
RPM filter places notches at harmonics derived from motor speed. Wrong pole count in Betaflight moves notches off the real noise — gyro stays dirty and D-term still fights ghosts.
| Source | How to verify |
|---|---|
| Motor product page | Pole count in specs |
| Manufacturer datasheet | Use magnet count on the bell — Betaflight motor_poles |
| Count magnets on bell | Visual count when unsure |
| Guess from forum | ❌ Last resort |
When swapping motor brand after a crash, re-verify poles even if KV and size match. Same size motor, different magnet layout is common.
When to enable
Good candidates:
- Noisy motors on mid-throttle after mechanical fix (props, bolts, mounts)
- Hot ESCs or motors with otherwise sane tune — noise, not amp overload
- 4K logging setups chasing clean gyro for Blackbox work
- Builds where D-term felt necessary but caused heat — RPM filter may let you run cleaner D
Skip or fix first:
- Random ESC desyncs on arm or punch — fix protocol, timing, caps first
- Mixed ESC firmware on one quad — match versions or replace
- Motors with damaged bearings or bent shafts — telemetry cannot fix mechanics
- Unknown pole count or mismatched motor — verify motor spec sheet
- Clone ESCs with flaky telemetry — bench test before field
When NOT to enable both at once: if the quad currently flies well without bidir, enable bidirectional DShot first, hover test, log one pack, then enable RPM filter. One feature per checkpoint.
Enable workflow
1. Flash / verify ESC firmware (all four channels matching)
2. Betaflight: enable bi-directional DShot for your DShot rate
3. Bench: props on, smoke stopper or careful arming — see smoke stopper guide
4. Hover 30 seconds — listen for desyncs, check motor temps
5. Blackbox: confirm RPM trace stable vs throttle
6. Enable RPM filter — verify pole count
7. Log same hover — compare gyro raw before/after
8. Field: one freestyle pack before committing to meet tuneSave a profile before bidir. Revert in one click when something goes wrong.
Failure signs
| Symptom | Check |
|---|---|
| Desync on arm | Bidir off temporarily; ESC protocol; capacitor health; motor direction |
| Worse oscillation after RPM on | Motor pole count wrong; bad telemetry; try without RPM filter |
| One motor hotter than others | Phase wire, bullet connector, or ESC channel — not PID on one axis |
| RPM trace missing or jumping in logs | ESC does not support bidir properly; wire fault; wrong DShot rate |
| Good hover, desync only on punch | ESC timing / demag; amp limit; weak battery |
| Telemetry works on 3 motors only | Swap motor to isolate ESC channel vs motor |
Enable one feature at a time; log a pack between changes — same discipline as Blackbox workflow.
Tuning interaction
RPM filter is not a substitute for base gyro filtering. Typical order:
- Mechanical sanity
- Base filters (static notches, low-pass) per Betaflight tuning basics
- Bidir DShot verified
- RPM filter on
- Re-evaluate D — you may run less D than before with cleaner gyro
Common mistake: enabling RPM filter on a noisy mechanical quad and adding D because it still buzzes. Fix props first.
Common mistake: copying "RPM filter on" from a preset while still on OneShot or non-bidir ESC protocol. The checkbox means nothing without telemetry.
BLHeli_32 vs AM32 (telemetry angle)
Both can support bidir on appropriate hardware. BLHeli_32 is widespread on hobby 32-bit ESCs; AM32 is open-source with active targets. Telemetry quality depends on ESC design and flash, not brand religion. See ESC firmware comparison for flash tools and brick avoidance.
India note: replacement 4-in-1 ESCs often arrive faster than debugging a half-flashed board. If bidir fails after honest setup, bench with a known-good ESC channel before re-flashing in a rush.
Symptom → fix map
| You see | Likely cause | Action |
|---|---|---|
| Instant desync when enabling bidir | Protocol mismatch | Match DShot rate; reflash ESC |
| RPM filter on, motors scream | Wrong poles | Count poles or read motor docs |
| Intermittent desyncs | Caps, solder, battery sag | Power path; shorter battery leads |
| Tune worse only in turns | Unrelated propwash | Do not disable bidir — tune propwash separately |
| Worked until ESC reflash | Settings reset | Reapply timing, demag, protocol in suite |
India field notes
Summer heat increases ESC and motor resistance — telemetry dropouts from marginal ESCs show up more in afternoon sessions. If bidir worked in winter and flutters in May, check battery condition and connector resistance (XT30 wear) before blaming filters.
Log the hottest pack when validating RPM filter. Morning hovers lie.
Before/after log comparison
When RPM filter works, you should see:
| Trace | Before RPM filter | After (healthy) |
|---|---|---|
| Gyro filtered | More high-freq fuzz at mid-throttle | Cleaner cruise band |
| D-term activity | Spiky on punch | Calmer without mushy feel |
| Motor heat | Hot with "needed" D | Cooler at same aggressiveness |
| RPM trace | N/A or flat | Tracks throttle smoothly |
If gyro cleans but desyncs appear, back off — telemetry or timing issue, not "more filter." Compare logs at the same throttle points, not whole-pack averages.
Bidirectional DShot and RPM filter are force multipliers on a clean quad. They do not rescue bent props, wrong KV, or mixed ESC firmware. Enable slowly, log once, fly twice — then enjoy motors that stay cooler when D-term stops fighting ghost harmonics.
Discussion
Comments aren't open on this post yet. Share it with your build group, or start a thread on X.