How to Setup Betaflight RPM Filter

Setting up RPM filter has become super simple since Betaflight 4.1, the hardest part is probably updating your FC and ESC :) If you find the official guide too much to swallow, you might find this quick tutorial useful.

RPM filter is designed to reduce motor noise and it makes your quad fly better. According to many pilots, RPM filter is by far the best filtering in Betaflight. You should definitely give it a try if you haven’t already.

Table of Content


What is RPM filter?

Notch filter is very effective for killing noise, there is less signal delay than a low pass filter for the same amount of attenuation. You can read more about filters in our Betaflight Filter 101 course.

The challenge comes from tracking the peak frequency of the noise. Dynamic filter does this pretty well, but it only tracks one frequency. Motors in a drone can all spin at different RPM (rotation per minute), hence making noise at different frequencies.

RPM filter is basically a collection of notch filters, precisely targeting the noise frequency and its harmonics from the motors, by getting motor RPM from ESC through bidirectional DShot.


How to Setup RPM Filter?

REMOVE ALL PROPELLERS BEFORE WE BEGIN

Update your FC to Betaflight 4.1 or newer (How to flash Betaflight, after updating Betaflight, don’t forget to setup VTXtables if it uses SmartAudio, otherwise your VTX might not work properly)

Update your BLHeli_32 ESC to version 32.7 or newer in order to use bidirectional DShot (How to Update BLHeli_32)

You can also do RPM filters on BLHeli_S ESC, but you will need a special firmware and I have a separate tutorial on that.

Use 4KHz gyro sampling rate and 4KHz looptime.

With faster looptime (e.g. 8K) you could get jitters, 4K is a safer option and most people probably won’t notice the difference anyway.

For 4K looptime, DShot300 ESC Protocol is fast enough. You only have to use DShot600 if you are using 8K looptime.

Enable “Bidirectional DShot“, and set Motor poles.

Simply count how many magnets you have in the motor bell, that’s the number you have to enter in Motor Poles. If you put the wrong number in, filtering is not going to work properly. As a general guideline:

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

Now go to the motors tab, on top of the sliders, you might see DShot Error at “E:100%”.

As soon as you plug in the battery, they should all go to 0%. If they don’t, something is wrong. You might want to use a slower looptime if you are running 8K/8K.

You can now spin the motors up with the sliders (apply just a little throttle), to make sure they work properly.

Now go to the PID tuning page, under Filter Setting, enable “Gyro RPM Filter“. Just leave the two settings at default.

By default, RPM filter is set to target 3 harmonics for each motor (4 motors), on each axis (pitch, roll, yaw), so it gives you a total of 36 notch filters!

After your flight controller reboots, go to the CLI and enter

tasks

Check if the value of “Gyro/PID rate/hz” is close to your looptime. For example, For 4K/4K it should read around 4000. It doesn’t have to be exactly the same, but the difference should be less than 1%, otherwise you should lower looptime until it is. (as recommended by Betaflight devs)

Now go out and fly your quad, it should feel pretty good. But we are not quite done yet, you can still tweak the filtering settings to get more performance out of it.


Removing Default Filtering

Simply adding RPM filters will certainly make your quad fly smoother and the motors cooler, but we should take advantage of the excellent noise rejection from RPM filter, and try to minimize the default filtering delay.

This is the part that actually makes your quad fly so good without propwash :)

Under Dynamic Notch Filter:

  • Leave Filter Range at Medium, but if motors are cool you can try changing it to LOW
  • Change Width Percent to 0 (setting this to zero will remove one of the two dynamic filters and decrease latency)
  • Q factor to 200 or even 250 – for a narrower filter
  • Set Min frequency to 90 as there is less high frequency noise now thanks to RPM filter, and we want to focus on lower frequency

Test your quad again, I suggest doing this with used propellers as it will give you more objective results.

If the motors are cool, it probably means you can reduce filtering  further. But this time we will use the two sliders on the top of the filter tab – Gyro Filter Multiplier and D term filter multiplier.

You don’t have to change any of the check-boxes or numbers under the sliders. These adjust themselves as you move the sliders left and right.

Try dragging both of the sliders to the right for less filtering, just a tiny bit every time you test fly the quad. Check motor temperature and assess if you can reduce filtering further. Note that even if the motors don’t get hot, without enough filtering, your quad can actually perform worse, so keep that in mind, motor temperature is not the only thing!

To get more tuning tips, make sure to read the Betaflight official guide.

Learn something in this tutorial? Sharing it with your friends is the best way to support me!

Edit History

  • May 2019 – RPM Introduction published
  • Jan 2020 – Setup tutorial added

12 thoughts on “How to Setup Betaflight RPM Filter

  1. Bastian

    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
  2. Steven Potter

    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
  3. Kyle J Minchokovich

    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
  4. Ken

    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
  5. bambam

    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

Leave a Reply

Your email address will not be published. Required fields are marked *

Are you Robot? *

For prompt technical support, please use our forum IntoFPV.com. I check blog comments weekly.