How to Setup RPM Filters in Betaflight: Unlock Smooth FPV Flight Performance

by Oscar

Setting up RPM filters in Betaflight is simple, you just need to make sure your FC (flight controller) and ESC (electronics speed controller) firmware are up to date. If you find the official guide overwhelming, this concise tutorial should prove helpful. RPM filter is designed to reduce motor noise, leading to improved flight performance. Many pilots consider the RPM filter the best filtering option in Betaflight, so it’s definitely worth exploring.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

Looking for new ESCs that support RPM filtering? Check out my product recommendations: https://oscarliang.com/esc/#ESC-Recommendations

What is RPM filter?

Notch filters are highly effective at eliminating noise, resulting in less signal delay compared to low-pass filters with the same level of attenuation. You can learn more about filters in our Betaflight Filter 101 course.

The challenge lies in tracking the peak frequency of the noise. While the dynamic filter does this relatively well, it only tracks one frequency. Since the motors in a drone can spin at different RPMs (rotations per minute), they create noise at varying frequencies.

Betaflight’s RPM filter is a powerful tool that enables your drone’s flight controller to track the rotational speeds (RPM) of your motors through bidirectional DShot, and set a collection of notch filters right on that frequency and their harmonics. This feature helps eliminate vibrations caused by motors and propellers, ultimately enhancing flight performance.


Update ESC Firmware

REMOVE ALL PROPELLERS BEFORE PROCEEDING.

Update your BLHeli_32 ESC to the latest version (version 32.7 or newer), which allows “bidirectional DShot,” a necessary feature for the RPM filter. Here is how update BLHeli_32: https://oscarliang.com/connect-flash-blheli-32-esc/

For BLHeli_S ESCs, flash the Bluejay firmware to use RPM filters: https://oscarliang.com/bluejay-blheli-s/


Update Betaflight

Update your FC to the latest Betaflight version (4.1 or newer), see this tutorial on how to update Betaflight: https://oscarliang.com/flash-update-betaflight/

Betaflight Configuration

In the Configuration Tab, note your PID Loop Frequency. You can choose between 4KHz or 8KHz based on your preference and CPU load (ensure it’s no higher than 75% according to Betaflight Developers’ recommendations). F4 flight controllers typically allow for 4KHz, while F7 and H7 support 8KHz. If your FC uses the BMI270 gyro, you can only set it to 3.2KHz regardless the processor.

Go to the Motors Tab.

For 3.2KHz and 4KHz PID Loop Frequency, select DShot300 ESC Protocol. while for 8KHz, select DShot600.

For BLHeli_S ESC Users, options depend on the ESC processor: Use 4KHz or 3.2K (BMI270) looptime and DShot300 for “H” type ESCs (BB2 processor). Use 2K or 1.6K (BMI270) looptime and DShot150 for “L” type ESCs (BB1 processor).

Enable “Bidirectional DShot” and set the appropriate Motor poles.

To determine Motor Poles, count the magnets in the motor bell. General guidelines:

  • 14 poles in 22XX, 23XX, 24XX motors
  • 12 poles in 08XX, 11XX, 12XX, 13XX, 14XX, 16XX motors

Counting yourself is best to avoid surprises. If you put the wrong number in, filtering is not going to work properly (it won’t report the correct RPM).

In the Motors Tab, DShot Error might read “E:100%”, which is normal.

After connecting the battery, this should drop to 0%. If not, something is wrong—try a slower looptime if running 8K/8K.

If it reads “E: 0.00%”, now test the motors by gently raising the sliders to ensure they work properly.

In the PID Tuning tab, under Filter Settings, “Gyro RPM Filter” should be enabled automatically after enabling “Bi-directional Dshot”, but you should double check.

By default, the RPM filter targets 3 harmonics for each motor on each axis, totaling 36 notch filters. Adjusting the “Harmonics Number” may improve noise filtering performance or minimize latency, but three is typically sufficient.

After your flight controller reboots, enter “tasks” in the CLI.

Check if the “Gyro/PID rate/hz” value is close to your looptime (e.g., around 4000 for 4K/4K). If the difference is greater than 1% (±40), it’s considered unstable and you should lower the looptime and recheck.

Now, test-fly your quadcopter. It should perform well, but further tweaking of filtering settings can enhance its performance. I have a guide that goes into detail how to tune RPM filter: https://oscarliang.com/pid-filter-tuning-blackbox/#Filters-Tuning


Reducing Filtering

By simply enabling RPM filter without doing anything else might make your quad fly smoother and keep motors cooler. But you should take advantage of the noise rejection from the RPM filter, to reduce the need for low-pass filters. This should result in better flight performance with less propwash.

Upon enabling the RPM filter, Betaflight automatically reduces the Dynamic Notch Filter (Notch count reduced from 3 to 1, Q factor narrowed from 300 to 500). Test your quad to see how it responds to this change.

If the motors remain cool, consider reducing Gyro and D Term filtering.

We will be using the two sliders on top of the filter tab (Gyro Filter Multiplier and D term Filter Multiplier). These sliders automatically adjust the filter values beneath them as you move them left or right.

First, try disabling the Gyro Lowpass 1 filter (but never disable Gyro Lowpass 2 for anti-aliasing purposes). If motors run cool, proceed. If not, re-enable Gyro Lowpass 1.

Next, gradually move both sliders to the right for less filtering, testing your quad after each adjustment. Check motor temperature and determine if you can reduce filtering further. Keep in mind that even with cool motors, insufficient filtering can negatively impact your quad’s performance—motor temperature is not the only factor!

This is just scratching the surface; for a deeper dive, check out my tutorial on how to properly tune filters using Blackbox: https://oscarliang.com/pid-filter-tuning-blackbox/#Filters-Tuning

Verifying RPM Filter is Running on Your Quad

To check if RPM Filter is active on your quad, go to the Motors tab in Betaflight and spin up your motor. Beneath the Throttle number, you should see an “R number,” which represents the real-time RPM of the motor.

If the R number is not present, then the RPM Filter is not active on your quad.

Conclusion

In conclusion, setting up RPM filter in Betaflight significantly improves your quad’s flight performance by reducing motor noise and vibrations. By following this tutorial, you can confidently enable and optimize RPM filters, allowing you to enjoy smoother flights and better overall drone performance. Happy flying!

Edit History

  • May 2019 – RPM Introduction published
  • Jan 2020 – Setup tutorial added
  • Sep 2022 – Updated “Remove Filtering” based on changes in Betaflight 4.3
  • Apr 2023 – Updated Guide for BF4.4

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.

42 comments

Neil 22nd August 2023 - 12:01 pm

Hi Oscar,

Great right up as always. Quick question I see that many factory cli dumps that use BMI270 gyros are configured with dshot600, is this ok ? I can’t see the benefit but most seem to do it despite max PID loop of 3.2khz.

Thanks

Reply
Oscar 22nd August 2023 - 4:41 pm

It’s okay, if you want to reduce CPU load you can use DShot300.

Reply
D'Jazz.FPV 31st January 2023 - 11:13 pm

What very good topic 👍
What do you think about the presets in betaflight.
If you have an RPM Filter on your machine, does the new preset disable correctly the rpm filter mode, or you have to remove it manually correctly ?
Best regards

Reply
Bill Pahl 11th December 2022 - 8:11 pm

My beeper starts and continues on after I turn on bi directional dshot in the motors tab. As soon as it connects after restarting BF. Tried changing the looptime from 8k to 4k. Same problem! Any suggestions? Thanks!

Reply
Bill Pahl 11th December 2022 - 8:23 pm

My FC is a STM32F405..GH – 15 esc with BluJay firmware…

Reply
Jack 15th August 2022 - 2:22 am

Great explanation, cleared so many things up for me, thanks!!

Reply
Brian 22nd April 2022 - 6:04 pm

My favorite FPV site

Reply
Phil Barker 1st February 2022 - 1:47 am

Do these filter settings apply to Betaflight 4.3

Reply
Mariusz 5th November 2021 - 10:12 am

Hi Oscar, would the above be also applicable for smaller quads? Like 4″ or 3″?

Reply
mike mason 27th October 2021 - 6:46 pm

I have the bardwell xilo 5 edition with the xilo4 in it.

I have other quads and BI-D works fine. For this quad every time I enable it, it wont arm. I have all the settings as he has them in the video and I have gone through your checklist.

I have 4.2.1 betaflight, 32.8 blheli, latest xilo4 firmware.

I have gone backwards and forward. I can follow your breakdown, and get the motors to spin up after saving but as soon as I unplug the quad, I cant get it to arm again. It looks like two ultra fast flashes (no beeps) when I arm, which suggests an immediate failsafe? Or does it?

The specs show dshot1200, but i know that was removed from betaflight. I don’t see where the esc supports 300, but I am assuming the step down is normal and the 1200 is just max speed.

I could have sworn this was working before. But apparently I didnt.

Reply
Otto 5th January 2022 - 7:40 pm

I have the same exact quad I just built for Xmas and am having the same exact problem. Everything checks out until I unplug from the pc and try to arm it. Keep getting rpmfilter fault. Have tried re installing everything multiple times and re flashing the esc. Any luck figuring it out?

Reply
Lenard 11th January 2022 - 2:54 pm

In Configuration Tab you should see the ESC Protocol, try choosing DShot600 or 300. Do you see the RPM and Error when spinning the motors in Motors Tab?

Reply
Pratik Mohite 3rd November 2020 - 8:15 am

If the esc supports ESC telemetry, is it nessary to use bi-directional DShot?

Reply
Nick 29th August 2020 - 5:33 pm

Thank you Oscar, this helped me a lot

Reply
Thomas 13th August 2020 - 7:32 pm

Hey, I just switched to the Maverick 16.73 ESC FW, now I could Setup my RPM filter, all is working well and first flight will be tomorrow!

Thx Oscar for your awesome work with your blog!

Reply
Thomas 13th August 2020 - 1:24 am

Hi,
what could be the reason that Betaflight 4.2 shows the E:100 in red at Motor tab?
I have a BB2 ESC (Aikon SEFM 30A 2-4S)
My FC is a Furious FPV Fortini F4 OSD Rev3,
I used 8k/4K and Dshot300.
I followed all the instructions, but something seems to be wrong.

What could be the reason?

Greets Thomas

Reply
Oscar 17th August 2020 - 7:21 pm

Try slower looptime, e.g. 2K with DShot 150.

Reply
Tim Howitz 25th July 2020 - 11:47 pm

Hi Oscar,

I’m running betaflight 4.2 and I don’t seem to have the dynamic notch filter range option,, does this matter? Do I have to change any other filter settings? I do now have a dynamic notch max hz, the default is 600, should I change this?

Many thanks,

TIm

Reply
Luis Leston 20th July 2020 - 7:40 pm

Thanks for this wonderful material. After following it I was able to fine tune my quad. No prop-wash at all!

Reply
Sebastien 18th July 2020 - 10:20 pm

Oscar i have recently come across a strange problem that I cant seem to solve, my drone can take off and move around at a reasonable pace but the second i try to do a flip or go anywhere near a 90 degree angle the quad freaks out and goes full throttle in random directions, i have swapped out a flight controller as i had a spare one and that isn’t the problem, I am not really sure what to do!! I had also flown this quad 3-4 times properly (with flips and tricks) before this happened and i haven’t changed any betaflight settings since then.
Would appreciate advice from anyone.

Reply
Carlos 7th May 2020 - 6:49 pm

My props all of a sudden are breaking and im getting vibrations.. i upgraded from 1105 to 1204 motors on a beta85x and this began to happen.. im suspecting is the filtering.. any ideas?

Reply
WWJD-FPV 29th August 2021 - 11:54 pm

You had no issues until you switched motors. So I think it’s safe to say, it’s the motors bud?! Like why would you think anything else? Stock motors=no prob New Motors=immediate problem…..it’s your motors. Now you sure you don’t want to rephrase your question to say “are there settings I can change to try and fix issues causes by my new motors?”

*I know OP question is a year old, still couldn’t help myself. ?

Reply
benoit 22nd March 2020 - 5:16 pm

hi, thank you very much for this tutorial.
is esc telemetry essential?

Reply
Oscar 30th April 2020 - 4:58 pm

No it’s not.

Reply
Frank 5th March 2020 - 10:00 am

Hi Oscar,
My quad is HGLRC Parrot132 4s version. Yesterday I update my flight ctrl from 4.11 to 4.1.3, and I follow instructions to update ESCs to support bidirectional Dshot and use free JazzMaverick’s P_H_10_48_REV16_79 firmware. Everything was good to moment when I want to turn on bi-directional Dshot protocols and plug my battery I noticed E – 100% on motors tab. But when I turn off bi-directional Dshot, motors tab back to normal again. I don’t know what should I do to fix this problem.
I set 4K4K looptime, DShot300 ESC Protocol. Help me PLZ,

Reply
Sushmit Mishra 28th February 2020 - 3:01 pm

In case of f7 flight controller can i use 8k

Reply
Joel 25th February 2020 - 2:51 am

What if my motor is a bit hot? Due i tune it to have more filter more toward the left of the default?

Reply
Arnold De Groot 23rd February 2020 - 1:36 pm

Help?
Now go to the PID tuning page, under Filter Setting, enable “Gyro RPM Filter“. Just leave the two settings at default.
There is no “Gyro RPM Filter” setting under Filter setting.
Perhaps this was the case in BF4.1.0 and now in BF4.1.1 separated into 3 other filters ?

Reply
Fabrice 19th February 2020 - 8:22 pm

Hello Oscar,
always on top the documentation that can be read on your site.

About the 4KHz gyroscopic sampling rate and 4KHz loop time,
is it not reliable to put 8K / 8K even in Dshot 600 if my FC allows me.

It’s an F7

Reply
Oscar 11th March 2020 - 8:33 pm

BF documentation seems to suggest 4K is more reliable than 8K mostly. But check CLI status anyway as suggested in this post.

Reply
Asizon 18th January 2020 - 4:24 pm

Umm… Not sure if these Dynamic notch settings are correct, these not Betaflight wiki recomended settings

Reply
insensible_fpv 17th January 2020 - 1:38 pm

What about Dshot1200? any change over these settings?
Thanks for your help, Oscar.
Regards from Zaragoza

Reply
Oscar 24th January 2020 - 5:09 pm

DShot1200 is no longer available in the latest version of Betaflight.

Reply
Bastian 14th January 2020 - 2:19 pm

Does anyone know how the bidirectional DShot protocol works on a communication level? I’m trying to run a motor/ESC from an ESP32 and I got DShot to work. Now I have to get the motor RPM. I don’t necessarily need bidirectional DShot (if I can get the RPM over Serial that would be ok too), but it would be nice.
What I mean is in which form is it communicated? Is there a way to get to that information? I’ve been browsing on the spec all day long and it seems like I have to send some number within the 32-35 range via DShot to get the RPM back. But there’s very little other information. Sadly, I don’t have an oscilloscope or logic analyzer so everything I could do is write some Arduino code to read the pin and so on.

Reply
Steven Potter 19th November 2019 - 7:46 pm

Hello Oscar,

Any new news about Bidirectional RPM filtering on the CLracing F7 Dual gyro? M4 solder to what? LED? or what’s the what?

HobbyWing ESC which has BAT next to 5v and then GRND on the io jack battery voltage? Where does this go??
THE F7 has a telemetry wire on the io jack where does this go??

Thank you for your time,

Steven

Reply
Kyle J Minchokovich 11th October 2019 - 3:39 am

Could RPM filter work on a hexacopter (6 motors)? I have an older rotorx raiju that I would like to update with new motors and esc’s. Its using a omnibus f4 FC. Thanks for all the great insight you give.

Reply
Ken 4th July 2019 - 5:34 pm

Will the new bi-directional protocol enable betaflight OSD to report “Mah consumed” without a current sensor on the 4in1? For example, with the Bardwell blHeli-32 4in1?

Reply
Oscar 15th July 2019 - 4:42 pm

No, you will still need ESC telemetry for that.

Reply
Paweł Pawlikowski 23rd October 2019 - 6:53 pm

Unfortunately not, only the ESC Sensor is the right option

Reply
PatHightree 20th June 2019 - 11:29 am

I have ESC telemetry over uart, can I enable RPM filtering based on that communication line ?

Reply
Oscar 27th June 2019 - 6:29 pm

No RPM filtering has to be done via the ESC signal line.

Reply
bambam 11th June 2019 - 11:38 pm

Hey Oscar, I love love love your stuff. I used your rates for ages, until eventually changing them to suit my liking. Is there any way you could add dates to your articles? Or else tell me where they are if they’re there already because I can’t find one and it makes it hard to reason about what I should and shouldn’t do.

Thank you for all your help!

Reply