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.
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.
Flash Latest BLHeli Firmware
REMOVE ALL PROPELLERS BEFORE WE BEGIN
Update your BLHeli_32 ESC to version 32.7 or newer in order to use “bidirectional DShot”, which is a necessary feature for RPM filter. (Instructions on How to Update BLHeli_32)
You can also do RPM filters on BLHeli_S ESC, you just need to flash Bluejay firmware to the ESC.
How to Setup RPM Filter in Betaflight
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)
Use 4KHz looptime.
With faster looptime (i.e.. 8K) you might 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.
For BLHeli_S Users, use different config based on the ESC processor
- Use 4K looptime and DShot300 if you have “H” type ESCs (BB2)
- Use 2K looptime and DShot150 if you have “L” type ESCs (BB1)
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 (doesn’t report the correct RPM). As a general guideline:
- 14 poles in 22XX, 23XX, 24XX motors
- 12 poles in 08XX, 11XX, 12XX, 13XX, 14XX, 16XX motors
It’s best if you count it yourself to avoid any surprises.
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!
Default “Harmonics Number” is 3, you could use fewer harmonics such as 1 which results in less latency, which is great for minimizing prop wash. A higher number can usually you better filtering performance. I have not seen a noticeable improvement by setting it higher than 3.
After your flight controller reboots, go to the CLI and enter
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 actually the part that makes your quad fly so darn good without propwash :)
Under Dynamic Notch Filter:
- 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 if motors are cool – it makes the filter narrower and more precise
- Set Min frequency to 90, Max Hz to 350 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!
Also try disabling Gyro Low Pass Dynamic Filter and Gyro Low Pass 1 filter, but of course only do this by testing motor temperature first to confirm its safe for your quad.
To get more tuning tips, make sure to read the Betaflight official guide.
Is RPM Filter Active On My Quad?
Go to the motors tab in Betaflight and spin up your motor. Underneath the Throttle number you should see the “R number”, which is the real-time RPM of the motor.
If the R-number is not there, then RPM filter is not active on your quad.
- May 2019 – RPM Introduction published
- Jan 2020 – Setup tutorial added