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

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.


Download and Flash BLHeli_M Firmware

Download BLHeli_M Configurator here: https://github.com/Asizon/blheli-configurator/releases

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: https://github.com/JazzMaverick/BLHeli/tree/JazzMaverick-patch-1/BLHeli_S%20SiLabs


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

Related Posts

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.

31 comments

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?

Reply
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!

Reply
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.

Reply
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….

Reply
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.

Reply
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).

Reply
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.

Reply
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

Reply
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.

Reply
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?

Reply
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 ?

Reply
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 :)

Reply
Silvester Menguito 4th December 2020 - 2:03 pm

always use the one with 48K

Reply
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?

Reply
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 !!

Reply
Sushmit 18th June 2020 - 4:50 pm

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

Reply
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.

Reply
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?

Reply
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.

Reply
Bill 26th May 2020 - 11:54 pm

Oscar,

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: https://github.com/blheli-configurator/blheli-configurator/releases
BLHeliSuite for BLHeli_S: https://github.com/bitdump/BLHeli (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.

Thanks…

Reply
Oscar 3rd June 2020 - 1:29 am

you use BLHeliSuite for BLHeli_S ESC, NOT BLHELI_32

Reply
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.

Reply
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 …

Reply
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?

Reply
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.

Reply
Beau 24th March 2020 - 3:06 pm

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

Reply
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 :/

Reply
Supafpv 31st January 2020 - 5:19 am

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

Reply
Linus Wolter 24th January 2020 - 6:57 am

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

Reply
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
github.com/JazzMaverick/BLHeli/tree/16.78_A/BLHeli_S%20SiLabs
They have support for 96khz?

Reply
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.

Reply