Setup RPM Filter and 48KHz/96KHz for BLHeli_S ESC (Flash BLHeli_M Firmware)

by Oscar

RPM Filter is a great boost to flight performance, it’s recommended to enable it on any FPV drone whenever possible. Originally you had to pay to use RPM filters on BLHeli_S ESC, but now it’s free thanks to BLHeli_M firmware by JazzMaverick.


In this tutorial I will show you how to download and flash your BLHeli_S ESC with BLHeli_M firmware that enables RPM filter / bidirectional DShot and 48KHz/96KHz.

What’s RPM Filter?

RPM filter is a feature in Betaflight that improves the flight performance of your drone but it requires “bi-directional DShot” to be enabled first on your ESC. At first it was only possible on BLHeli32 ESC, I can’t believe we can now also have this great feature on our tiny whoops and micro quads :) Just amazing!

What’s 48KHz/96KHz?

24KHz, 48KHz and 96KHz are the ESC PWM Frequency, in a nutshell, it’s how often the ESC drives the motor. By default, PWM frequency is set to 24KHz, and by flashing BLHeli_M firmware, allows you to choose higher PWM frequency.

Apart from cooler motors, setting PWM Frequency to 48KHz or even 96KHz can also improve efficiency (mainly on micro quads, it’s more noticeable on the tiny whoops and toothpicks). The increase of flight time varies from setup to setup, but from what I’ve gathered so far, it’s between 10% to 30%. Some even claims to have gained 50% longer flight time!

By increasing PWM frequency, it reduces the braking force on the motors. It resolves issues with excessive motor braking that sometimes occurs on tiny motors, such as 06XX and 08XX, and lowers current draw. Bigger motors generally don’t have this problem that’s why we don’t see the same level of efficiency improvement on larger quadcopters. And that’s probably why we might see diminishing improvement on larger micro motors, such as 11XX and 12XX.

Between 48KHz and 96KHz, you have to experiement and see which one works better, your quad might actually perform worse when PWM frequency gets too high, so it’s definitely not “higher is better”. 48KHz is probably a safer option if you are unsure.

There is concern if 48KHz will affect damping effectiveness (active braking), let us know if you notice any difference in performance after enabling 48KHz.

Firmware Options

There are two aftermarket firmware that allow you to run RPM filter and 48KHz/96KHz in BLHeli_S ESC:

  • BLHeli_M (JazzMaverick)
  • JESC
  • Bluejay

With JESC you have to purchase a license for each ESC ($5 for 4), while BLHeli_M is completely free and this is what we are going to use in this tutorial. As far as i know there is little to no performance difference between the two firmware.

For safety, please remove propellers before proceeding.

Update Feb 2022

BLHeli_M firmware seems to have stopped updates since 2020. My go to firmware for BLHeli_S ESC is now Bluejay, and in this tutorial I will show you how to flash it.

You can disregard the rest of this article if you flash Bluejay.

Download and Flash BLHeli_M Firmware

Download BLHeli_M Configurator here:

Unzip and install it on your computer.

The interface might look identical to the original BLHeli Configurator, but it offers additional options like PWM frequency and Commutation Enhancement.

Click the “Flash All” button at the bottom, and select 16.9 BLHeli_M Official firmware in Version. ESC code name should be selected automatically.

After flashing 16.9 to your BLHeli_S ESC, bi-directional DShot is enabled by default so you can enable RPM filter in Betaflight.

There are a few additional settings in BLHeli_M, and here’s my recommendations:

  • Set PWM frequency to either 48KHz or 96KHz. Experiment which works better for your quad
  • Set CE to Async-PWM
  • Set ESC FF to OFF

And that’s it! You can now go flying :)

If somehow flashing fails and bricks your ESC, you can try “reviving” them by flashing old BLHeli-S firmware via C2 interface.

Old JazzMaverick Firmware (Obsolete)

The rest of the guide is the old way of flashing JazzMaverick’s firmware and it’s no longer required thanks to the BLHeli_M configurator.

Firstly find out the code name of your ESC. You can find out by connecting them to the BLHeli Configurator (how to). You can see your ESC code name in the title of each ESC, for example, mine is G-H-30 as shown in the screenshot below.

What does the code name mean?

  • The first letter is the hardware configuration of the ESC
  • The second letter, H for BB2 MCU and L for BB1 MCU
  • The last numbers are the dead-time value

Now go to JazzMaverick’s firmware repository:

WARNING! Avoid newer BLHeli_S firmware versions from JazzMarerick after 16.73 as they might be unstable with RPM Filtering.

According to Betaflight Developers, the author made undesirable changes that reduce the rate at which RPM telemetry data is supplied. As a result the RPM filtering will not track the motor vibrations well, resulting in poor filtering performance and possibly hotter motors. (source)

At the moment, the 16.73 version is the only recommended version that properly supports RPM filtering.

However if you are using BLHeli_M configurator, it’s safe to flash version 16.9.

There are so many versions, which one? When I see “RC” in the description, I usually avoid as it’s release candidate (still in beta). Choose the newest one without RC. Within the folder, choose 48K one.

Find your firmware file following the name you found in BLHeli Configurator. Look, I found mine! (This file is not for you, this is only an example!)

Click on the link, will bring you to a new page full of numbers and letters. But don’t panic :)

Right click on the “Raw” button on the top right, and select “Save link as” to save the file on your computer. It should be a .hex file.

Now go back to BLHeli Configurator, press the “Flash All” button and press “Select File Manually“.

And choose the hex file you just downloaded, BLHeli Configurator will flash all four of your ESC’s with the new firmware.

Once done, you should notice the firmware number has been updated in the configurator.

Your BLHeli_S ESC should now support bidirectional DShot, and you can move on to Betaflight Configurator to finish the rest of the setup. Good luck!

Edit History

  • Jan 2020 – guide created to show how to flash JazzMaverick’s 16.73 BLHeli_S firmware
  • May 2021 – updated guide to show how to flash BLHeli_M firmware
  • Feb 2022 – added link to Bluejay tutorial as it’s a better option than BLHeli_M right now in my opinion

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.


allain 17th December 2022 - 3:11 pm

ik gebruik op de dag van vandaag in de moblite7 v3.2 betaflight 4.2.10 en blheli_m 16.9 op 96khz enige wat te doen na flashen hem op 96khz zetten en dan met blheli_s even de 1000 1500 en 2000 range in stellen of calibreer en bij betaflight 12 polen ik heb hem op 6 idle staan flightcontroller 8k4k anders werk het niet ik had alles gewist en vloog nog 3 minuten en nu 5+ 1 jaar oude batterij 650mah standaard erbij voor vragen vraag het

Ivan 26th March 2022 - 10:57 pm

Hola he actualizado a blheli_m en 16.9 48khz
Falta probarlo pero he visto una advertencia que dice:CAUTION:ESC ARE NOT IN SYNC, CONFIGURE THIS



VALUE PWM Frequency


VALUE CE (Commutation Enhancement)
Esto es normal?

S 24th November 2021 - 7:01 am

Eachine UZ65, I reflashed to 48kHz.
At the beginning of the flight, the current decreased from 4.7A to 3.7A.
I flew on old 1S 300mah batteries for 2+ minutes, now I fly for 3+ minutes.
Thank you, your article helped me a lot to set up the quadcopter correctly.

Mac 30th September 2021 - 8:49 pm

I have an F4 board, OmnibusF4SD running Betaflight 2.5.7, with BLHeli S. Would I be able to update my ESC’s to BLHeli_M but still fly with BF 2.5.7 or would I have to update to a newer version?

Pablo 6th September 2021 - 11:02 am

Hi Oscar, I followed this guide and flashed 16.9 Blheli_M on my Cinelog 25 with 20A ESCs, enabled bidirectional d-shot and set motor poles to 12 (counted them), but the motors sound bad and the quad is pretty much unflyable: wobbles, bounces, unstable throttle, what is the problem? All other parameters I left stock, o% errors, I see rpms in Betaflight, thanks

Ian 5th September 2021 - 2:11 am

Hi Oscar, another great tutorial on things Drone!
I followed the above for a new Mamba F50_BLS esc with a Mamba F4 Basic Mk3 FC that I built into a 5″.
The first time I tried this it went fine. I then thought to change prop direction (alot of long grass getting everywhere) and after a bit of back and forward to get the direction right, I now it reverts to 24khz and no 48khz when I flash (48khz).
Annoying, obviously and I wonder if you have a knowledgeable instant cure for this?
Otherwise, I hope all is well with you and yours in this new version of life…. :)
best regards

Giovanni 12th August 2021 - 8:17 am

Hi installato la versione 16.9 e ho bf4.9 , però il mio Betafpv85pro non funziona attivando i filtri rpm. qualche soluzione?

Zack Lothamer 25th May 2021 - 12:39 am

Hey Oscar has flashing this firmware seemed to help with peoe accidentally frying the 5A esc’s in the TH2?

Ingo Fengler 14th May 2021 - 6:09 am

Hi Oscar, actually I am following your previous advice not to use versions above 16.73. Is it save now to uprade to 16.9 with the BLHeli_M Firmware? I did not find any information about compatibility of BLHeli_M 16.9 with RPM-Filters on the Betaflight page. Thanks for you help!

Oscar 14th May 2021 - 11:17 am

I believe so. I saw a ton of people recommending BLHeli_M on Youtube, so I tried it on one of my 1S toothpick it seems to work fine.
Treat it as experimental anyway when you first try it.

Michal 8th April 2021 - 9:11 am

Where do i find the recommended 48kHz version when it is also not recommended to go above 16.73? I see only 1.77 folder for 48k….

Oscar 8th April 2021 - 8:39 pm

You could give 16.77 a try though if you want, it might or might not work. But it’s probably best to pay for JESC just on the safe side.

Copypastor 9th March 2021 - 3:45 pm

Yes I saw this :) In bold. You are great Oscar :) But then I looked at the date of the article (15 jan 2020) and thought: more then a year have passed, how can it bee that this old bugs are not fixed yet? how naive yeah.
“Lets try the latest 16.8/9 it has so many features and it SHOULD have these bugs fixed”

I did not knew about s…t storm in RCG between Maverick and BF dev (forgot his name), and that Maverick’s decision about RPM update rate is not a bug.

In short: I think it better be written explicitly in this article: “DO NOT USE 16.77/8/9, it does not work”. For “smart” people like me (facepalm).

Oscar 9th March 2021 - 4:08 pm

I am constantly updating my articles, I renew the publish date if the change is massive, but for small correction or update i just leave it :)
I think the new version works for some ESC, but it’s a hit and miss, and unreliably.
But thank you for emphasizing it! It might help other people to notice it.

Copypastor 9th March 2021 - 2:42 pm

Hello again. TESTED personally: 16.8/16.9/16.77 DOES NOT work with RPM filters. Could not get to fly, at least stable not even good, two quads: 5″ with bf 4.2.5 and 7″ bf 4.2.2. Tryed 16.77, 16.8, 16.9. All fly like a s…t. Lost a tonns of time fighting filters and pids.

After flashing 16.73 now both fly solid. Even in windy conditions. RPM filters ARE cool. When the work)))))

I think you should update this article: use only .73, not .77 .8 .9

Oscar 9th March 2021 - 2:46 pm

I did make it clearly in the article to only use 16.73 (in bold), maybe you missed it.

M Zul 6th March 2021 - 6:32 pm

Seems like only version 16.77 have PWM frequency of 48k. Others like 16.73 or 16.8 dont have it. Am I understand this correctly?

Copypastor 4th March 2021 - 8:49 am

Hello from Y2021! )
Oscar big thanx for your work writing these articles!

Can somebody tell may I use rev 16.8 / 16.9 of JazzMav BLHeli? Is them alright? Or do I still have to use 16.73 ?

I flashed 16.9 on my Sussex-E 4in1 board, it seems to work, BUT RPM readings are very unstable. They jitter about say 2100…2300 when the motor spins constantly (by hearing). Is that OK ?

Oscar 4th March 2021 - 10:24 am

I haven’t not personally tested the latest 16.9 so cannot confirm, but 16.73 is totally fine for bi-directional. Let’s just play safe for now until more people try it and say it’s safe to use :)

Silvester Menguito 4th December 2020 - 2:03 pm

always use the one with 48K

Nils 9th November 2020 - 4:37 pm

Tried this and my Mobula 6 is still flying :)
RPM filter seems to be working (no motor errors).

Thing is, I don’t know whether I am running 48kHz or not.
I picked the 16.73 version for my ESCs (O-H-5) and there is only one file.
I found no PWM frequency info. Is there any way to find out?

Yoan 1st November 2020 - 9:12 pm

Hi Oscar,
Thank you for all your work, i’ve read many of your articles and it helps a LOT !!
In this article you say that we shouldn’t use a version of JazzMaverick after 16.73 because it won’t support RPM filter.

BUT in the Git Hub archive the only 48 K HEX files are 16.77 …is it still not recommended to use them ?
If i use the 16.73 version would it enable, 48 KhZ, RPM filtering and Bi Directional D Shot ?
(For a TinyHawk 2)
Thanks again !!

Sushmit 18th June 2020 - 4:50 pm

there are lots of version please also tell us how to choose which version should i choose ?

Oscar 22nd June 2020 - 1:35 pm

When I see “RC” in the description, I usually avoid as it’s release candidate (still in beta). Choose the newest one without RC. Within the folder, choose 48K one.

Geza Horvath 4th June 2020 - 11:14 pm

Hi there.
I have an iflight succex f4 aio board with a 12A 4in1 blheli s esc.(G-H-30)
I followed all instructions and firmware update done (I tried 3 different version) and if I set bidirectional in bf then doesn’t works. Bidirectional off and works well.
What I missed? Do you have any idea please?

Oscar 6th June 2020 - 1:11 am

maybe those ESC’s are not supported? I am not sure as I don’t own that board to confirm. maybe check with iFlight customer support.

Bill 26th May 2020 - 11:54 pm


To be clear, a person has to use the Blheli_S configurator, and NOT the Blheli_32 configurator, correct?

In your link above, where it says “how to”: Connect to BLHeli Configurator (how to).

That “how to” link leads to a page that has a DOWNLOAD SOFTWARE section, with two links:

BLHeli Configurator:
BLHeliSuite for BLHeli_S: (download link in the bottom “Read Me” section).

But that READ ME section seems to point ONLY to the Blheli_32 configurator.

I’m sure I’m missing something, but I can’t figure out what it is.


Oscar 3rd June 2020 - 1:29 am

you use BLHeliSuite for BLHeli_S ESC, NOT BLHELI_32

Hajkis 29th April 2020 - 1:03 pm

I have problem, I can’t see firmware of my esc. I have G-L-30 but in JazzMaverick folder is not this firmvare. Can I flash G-H-30? Im not sure, please help me. I want it with 48k.

Blaze 10th April 2020 - 12:05 am

hey @Understroyable
Are You sure it was J_H_30 on your REV35?
My rev35 has J_H_15 firmware …

Undestroyable 31st March 2020 - 7:28 am

Thanks to Oscar for that short and precise tutorial!
Overall, I am very grateful for both projects, giving us RPM Filtering on our old and cheap ESCs. I only tried JazzMaverick’s on my famous budget 4in1 ESCs with 5 inch setups and had mixed results:

Racerstar REV35 35A with J_H_30_48_REV16_77.HEX:
– Very smooth motors
– Very silent
– Easy to tune with RPM Filters

Mamba F40HV ESC (MAMBA F405 MK2 Stack) with A_H_40_48_REV16_8_RC3.HEX:
– Crazy Oscillation during hovering
– Random Death Rolls
– Unflyable

Is there a thread for the different versions and what to flash on which ESC?

aaron anderson 29th March 2020 - 2:30 am

Yeh, Namelessrc have a fake P-H-15 hex on their boards, its really P-H-90. Joe Lucid had to call them out basically. Ridiculous. Also the pyro board is the same as nameless down to the firmware.

Beau 24th March 2020 - 3:06 pm

Now I’m hearing P-H-120 for Nameless

NitrousStone 13th February 2020 - 7:21 am

I also fried one of my 4 in 1 using jazz mav and bardwells settings. ive gotten the jesc firmware and have also disabled dshot burst and changed scheduler timing. will report back. hoefully i dont fall out of the air quarter of a mile away again :/

Supafpv 31st January 2020 - 5:19 am

Use JESC to avoid frying your escs. It auto-detects issues such as the NamelessRC.

Linus Wolter 24th January 2020 - 6:57 am

16.73 is the recommended for the time being. 16.77 has bad dshot timing

James M 23rd January 2020 - 4:50 pm

I noticed there were several direcotries, which is the best one?
Hex files 16.7
Hex files 16.71
Hex files 16.73
Hex files 16.77 24k
Hex files 16.77 48k

And in the other branch
They have support for 96khz?

Michael Hulas 17th December 2021 - 7:03 pm

Hi Oscar, thanks for the great article, could you please tell me if these directions are basically the same if I use JESC? I had already purchased the 4 pack before I saw this article. Thanks.

Chunder FPV 19th January 2020 - 1:33 am

I fried 2 FCs doing this, a NamelessRC and Pyrodrone 12a AIO. Some people say to use P-H-90 instead of P-H-15 in this case.