Do you know that you can now change settings on your ESC in BLHeliSuite, via your flight controller? That’s right, no complicated programming tool, USB linker or Arduino. All you need to do is just connect your flight controller, and you can flash firmware and change settings on your ESC!

Update (Jan 2018): BLHeli is the first generation firmware. It has been replaced by newer firmware such as BLHeli_S (2nd gen), and BLHeli_32 (3rd gen). If you are buying new ESC’s today, get those newer ESC’s instead.

This feature basically turns your FC into a ESC programming tool!

Well, as we speak, it still isn’t working yet on the latest Cleanflight v1.10, but it’s making its way there I believe. It’s already implemented in Betaflight firmware, so if you are running Boris’s Betaflight, then you can try it!

This features is awesome IMO, it really helps someone lazy like me. I no longer need to take my quad apart just to change some settings on ESC. It also means direct soldering of ESC on FC is now possible and no more headache :)

Requirement (dated 26/Oct/2015)

Running Betaflight on your FC

Running BLHeli already on your ESC (Not sure what the oldest version it supports, the oldest I tried was 14.0 )

BLHeli Bootloader installed on ESC ( Important! ). Firmware and bootloader is not the same thing.

). Firmware and bootloader is not the same thing. Latest version of BLHeliSuite (I am using 14.1.0.3).

News and Updates

27 Oct – There are also reports of problem running this features on some F3 boards. However I cannot verify this as I have only tested this on Naze32 and it’s working perfectly.

28 Oct – Pass-through programming won’t work on a Tornado. The 5V buffers on the PWM outputs aren’t bidirectional. You’ll have to connect directly to the ESCs. BorisB said Seriously Pro Racing board (SPR F3) has issues with auto detecting the ESCs. He said you can connect to each ESC one at a time.

Here is a quick Demo how I use it.

How to Flash / Program ESC via Cleanflight in BLHeliSuite

My Setup: Naze32, Blueseries 20A ESC with BLHeli 14.0

Select Cleanflight Interface

First of all, in BLHeliSuite, select your choice of interface, with (Cleanflight) at the end of the option.

Wrong Interface

Don’t worry if you chose the wrong one (whether Atmel or Silabs), you will be warned if you have selected the wrong interface.

Connect and Read settings

Once you have chosen the correct interface, and the COM Port of your flight controller, click Connect, then Read Setup.

Flash Latest BLHeli Firmware

Flashing firmware is the same as the usual way.

ESC not in Sync with Master

You might see this message saying “Setup not in Sync with Master”. That basically means some of your ESCs have different settings.

Settings including PPM Min/Max and PWM Frequency/Damped and so on would trigger this warning. Difference in Motor Rotation setting would not trigger this warning.

You will also notice the number is grey colour when it’s not in sync, with a warning when hover over it.

Changing settings on a particular ESC

To change settings on a particular ESC, you first need to select it.

To select an ESC, you need to click on all the ESC except that one, when you do that, those ESC number would disappear. For example, when ESC number 1 2 and 4 disappear, number 3 will become blue and bold, that means it’s now selected.

It’s possible to configure multiple ESCs at the same time. The Blue bold number indicates the master, all other ESC will copy the master’s settings when Write Setup is pressed.

Checking ESCs are in Sync

Okay once you have programmed all your ESCs, you want to do a finally check. There is a Check button on the bottom right.

And below shows you the All Okay message. And you should see all the ESCs are green and happy. (except ESC 1 is blue, because it’s the master ESC)

Motor Tab in BLHeliSuite

You will also notice a motor tab in BLHeliSuite. I find it really handy as you can calibrate your ESC and test your motors right inside BLHeliSuite.

Anything else?

I am also new to this, so please let me know if I have made a mistake or missed something.