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.
Looking for new ESC’s that support RPM filter?
Table of Contents
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)
In the Configuration Tab, Use 4KHz PID Loop Frequency.
With faster looptime (i.e.. 8K) you might get jitters, 4K is a safer option and you probably won’t notice the difference anyway in flight performance. You can leave Gyro update frequency at 8KHz (you can’t change it really in since Betaflight 4.3 anyway).
For BMI270 Gyro, set your PID loop frequency to 3.2KHz.
Go to the Motors Tab.
For 3.2KHz or 4K PID loop frequency, select DShot300 ESC Protocol. You only have to use DShot600 if you are using 8K looptime.
For BLHeli_S ESC Users, your options depend on the ESC processor:
- Use 4K or 3.2K (BMI270) looptime and DShot300 if you have “H” type ESCs (BB2 processor)
- Use 2K or 1.6K (BMI270) looptime and DShot150 if you have “L” type ESCs (BB1 processor)
Enable “Bidirectional DShot“, and set the suitable Motor poles.
To determine Motor Poles, simply count how many magnets you have in the motor bell. If you put the wrong number in, filtering is not going to work properly (it won’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 tab, under Filter Settings, 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, i.e. 2 or even 1 which results in less latency and better for minimizing prop wash, but perhaps not enough for noise filtering. More than 3 might offer better noise filtering performance, but I rarely see noticeable improvement by setting it higher than 3.
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% (that means around +/- 40), otherwise you should lower looptime and check again. (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 run 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 :)
Once you enable RPM filter, Betaflight will automatically reduce Dynamic Notch Filter (Notch count reduced from 3 to 1, Q factor narrowed down from 300 to 500).
Test your quad and see how the quad respond to the reduced Dynamic Notch filtering.
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 disabling Gyro Lowpass 1 filter (but never disable Gyro Lowpass 2 for anti-aliasing purposes), see if the motors run cool. If not enable it again.
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!
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.
Edit History
- May 2019 – RPM Introduction published
- Jan 2020 – Setup tutorial added
- Sep 2022 – Updated “Remove Filtering” based on changes in Betaflight 4.3
40 comments
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
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!
My FC is a STM32F405..GH – 15 esc with BluJay firmware…
Great explanation, cleared so many things up for me, thanks!!
My favorite FPV site
Do these filter settings apply to Betaflight 4.3
Hi Oscar, would the above be also applicable for smaller quads? Like 4″ or 3″?
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.
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?
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?
If the esc supports ESC telemetry, is it nessary to use bi-directional DShot?
Thank you Oscar, this helped me a lot
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!
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
Try slower looptime, e.g. 2K with DShot 150.
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
Thanks for this wonderful material. After following it I was able to fine tune my quad. No prop-wash at all!
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.
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?
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. ?
hi, thank you very much for this tutorial.
is esc telemetry essential?
No it’s not.
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,
In case of f7 flight controller can i use 8k
What if my motor is a bit hot? Due i tune it to have more filter more toward the left of the default?
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 ?
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
BF documentation seems to suggest 4K is more reliable than 8K mostly. But check CLI status anyway as suggested in this post.
Umm… Not sure if these Dynamic notch settings are correct, these not Betaflight wiki recomended settings
What about Dshot1200? any change over these settings?
Thanks for your help, Oscar.
Regards from Zaragoza
DShot1200 is no longer available in the latest version of Betaflight.
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.
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
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.
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?
No, you will still need ESC telemetry for that.
Unfortunately not, only the ESC Sensor is the right option
I have ESC telemetry over uart, can I enable RPM filtering based on that communication line ?
No RPM filtering has to be done via the ESC signal line.
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!