Flash BLHELI_S with DSHOT using BlHeli-Configurator
Flash BLHELI_S with DSHOT using BlHeli-Configurator

The BlHeli configurator by @diehertz is here! And so is the beta version of DSHOT for BLHELI_S. In this guide I'll tell you a little bit about what I've learned from diehertz about BLHELI_S and how to flash your own ESCs.


The BLHELI_S description basically says that it's meant to be an easy to use version of BLHELI, however that's not why I'm really interested in it. I'm interested, because Steffen, the creator of BlHeli, has been working on DSHOT support! beta hex files are here

You might be wondering now, what is DSHOT? DSHOT is the first ESC protocol that is totally digital (as opposed to analog). This is super exciting because digital protocols are not subject to the same issues that analog suffers from. What this means for us is that we'll get super accurate and super smooth motor response along the full motor range, all without calibration!

An analog signal is susceptible to noise on the wire and can vary the signal slightly as the noise on the wire changes. This is why, if you're running PPM or PWM between your RX and your flight controller, you'll notice on the RX page of the BetaFlight configurator, that the values change slightly without moving the sticks.

To continue the analogy with the RX to FC connection, you can think about all the other ESC protocols (PWM, ONESHOT125, ONESHOT42 and MUTLISHOT) as PPM/PWM, which are all analog signals, susceptible to timing issues and noise. DSHOT on the other hand is like SBUS, a super solid, fast and accurate digital protocol.

Note that BlHeli ESCs will not necessarily work with BLHELI_S, you'll need to get some ESCs that support BLHELI_S.

Ok, let's flash some ESCs, I'll be using some BumpBee BLHELI_S ESCs, but I'll try to expand this article over time to include other ESCs as well.

HEX File Naming Convention

To figure out which HEX file to flash to our ESCs, I talked with diehertz, creator of BlHeli Configurator and he gave me a quick overview of the naming scheme for BLHELI_S. Here is the summary from diehertz:

  • The files are named: [A-O]_[HL]_[0-9]{2}

  • First letter encodes ESC circuitry, decisions like which MCU pins is used for signal/gate drivers/bemf etc. This will be unique to your ESC and a description of this choice is available in blheli source here.

  • Second letter is for the processor, in the case of the BumpBee_S ESCs, we'll be using H for the BB21x processor. There are only two processor options for BLHELI_S:

    • BB10x uses x_L_xx
    • BB21x uses x_H_xx
  • Number is FET dead time (time it takes to switch them off and stop any current from flowing), used as a counter for a simple while (--i); loop

    • Unit is 1 / BB21-frequency, around 20ns
    • There are ESCs that use zero as a last param, I believe they use specialized chips for gate control. For example, Emax Lightning_S 35A uses B_H|_0

Note that chosing a FET dead time that is TOO LOW can kill your ESCs, so be careful, if you're not sure, it's safer to pick a higher value. For example, picking a firmware ending in _90 is safer than using one that ends in _15, unless you know your ESC's FETs can support the lower dead time.

By the way, the datasheet for the BumpBee_S FETs here: http://www.s-manuals.com/pdf/datasheet/n/j/njm78l02a-njm78l24a_jrc.pdf


My BumpBee_S ESCs came with the J_L_90 hex installed. You'll want to flash a J_H_x hex to your Bumpbee ESCs if they came with a different version. I'm going to flash them with a hex with less dead time: J_H_15. Note that if you want to use a J_H_x hex with less dead time, it's probably safe to do but some batches of FETs seem to be able to handle this differently, so you may burn up one "identical" ESC and not another. Stick with the J_H_90 if you want to play it safe.

Grab BlHeli Configurator.

Note that from inside the BlHeli Configurator, you can load load the DSHOT hex files, so there is no need to download the HEX files from github. However, if you like to have all the use the hex files from the github repo, you can download the HEX file you'll be using or just to download all hex files as a zip from https://github.com/bitdump/BLHeli/archive/master.zip.

Connect your ESC to your flight controller as you normally would. Note that the BlHeli Configurator only supports pass-through programming, so if you need to flash some ESCs without a bootloader, you'll need the BlHeli Suite, which will let you program your ESCs via C2 or with an Arduino.

Ok, now that you've got all the software and your flight controller wired to your ESC, onto flashing.

If your ESCs came with a different firmware than the one we're about to select, be sure to select the scary checkbox:

Now pick the right ESC hex from the drop down and pick the DHOST version.

Alternatively, if you downloaded the hex files manually, pick the right DSHOT hex file.

Ok... flashing:

That's it! You're all set. I usually go into the BetaFlight configurator at this point and make sure I have DSHOT set as the motor protocol then throttle up the ESCs to make sure they're working :)

Specific ESCs

Here are my notes on flashing and configuring specific ESCs. I'll try to expand this section as I flash more ESCs with DSHOT and feel free to comment below if you have tips or questions.


DSHOT 600 seems to works great. I have only bench tested, I will update this after I get my first flight in.

  • Note that there are 2 different version of the BumpBee, the BumpBee and BumpBee_S, only the _S version supports DSHOT.

    • If there are 3 LEDs on the back, then it is Bumpbee_S using BB21, and J_H_xx
  • If there is no LED on the back, it is BUMPBEE, it is F396 and it will not work with BLHELI_S

    • To get DSHOT working, you'll need to remove this capacitor (thx again to diehertz for the tip):

After removal, it will look like this:

If you need to connect a C2 programmer, here is the pinout:

Checkout my other guides at nathan.vertile.com/blog
comments powered by Disqus