RPM filter and bi-directional DShot
TUNING // FIELD_REPORT

RPM filter and bi-directional DShot

Published
Read time6 min read

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

RequirementWhy it matters
ESC firmware with bidir DShotBLHeli_32, AM32 on many targets — see ESC firmware
Matching protocol in Betaflight and ESC suiteDShot300 vs 600, bidir on both sides
Motor pole count correct in configuratorWrong poles = wrong notch frequency
Clean motor wires and solder jointsBad phase data = lying RPM
Adequate capacitor on ESC / stackWeak 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.

SourceHow to verify
Motor product pagePole count in specs
Manufacturer datasheetUse magnet count on the bell — Betaflight motor_poles
Count magnets on bellVisual 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 tune

Save a profile before bidir. Revert in one click when something goes wrong.

Failure signs

SymptomCheck
Desync on armBidir off temporarily; ESC protocol; capacitor health; motor direction
Worse oscillation after RPM onMotor pole count wrong; bad telemetry; try without RPM filter
One motor hotter than othersPhase wire, bullet connector, or ESC channel — not PID on one axis
RPM trace missing or jumping in logsESC does not support bidir properly; wire fault; wrong DShot rate
Good hover, desync only on punchESC timing / demag; amp limit; weak battery
Telemetry works on 3 motors onlySwap 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:

  1. Mechanical sanity
  2. Base filters (static notches, low-pass) per Betaflight tuning basics
  3. Bidir DShot verified
  4. RPM filter on
  5. 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 seeLikely causeAction
Instant desync when enabling bidirProtocol mismatchMatch DShot rate; reflash ESC
RPM filter on, motors screamWrong polesCount poles or read motor docs
Intermittent desyncsCaps, solder, battery sagPower path; shorter battery leads
Tune worse only in turnsUnrelated propwashDo not disable bidir — tune propwash separately
Worked until ESC reflashSettings resetReapply 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:

TraceBefore RPM filterAfter (healthy)
Gyro filteredMore high-freq fuzz at mid-throttleCleaner cruise band
D-term activitySpiky on punchCalmer without mushy feel
Motor heatHot with "needed" DCooler at same aggressiveness
RPM traceN/A or flatTracks 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.

See also

Discussion

Comments aren't open on this post yet. Share it with your build group, or start a thread on X.