ESC Firmware and Protocols Overview

There are several types of ESC protocol and ESC firmware available for quadcopter. In this article we will give a little history and explain the technical differences. Most importantly I want to try and clear up some of the confusion beginners experience from such a wide selection.

When I started in the hobby, connecting an ESC to a flight controller was pretty straight-forward. But now there is much more to consider: ESC settings, protocols, firmware etc. All these options can be confusing and overwhelming for someone just starting out in this hobby.

There is certainly a learning curve, I hope this guide can give you an helping hand through some of the difficult sections.

Check out this guide about how to choose ESC for mini quad.

I compiled the specification of all ESC’s for mini quad in this spreadsheet so you can compare them more closely.

ESC Firmware

ESC firmware is the software running on every ESC, which determines the ESC’s performance, which protocols are supported, and what configuration interface can be used. The firmware that an ESC can use is dependent on the hardware.

Here is a list of the different ESC firmware available for mini quad:

Two of the earliest options for open source ESC firmware were SimonK and BLHeli, and these firmware were used on the majority of ESC’s until around 2015. Since then BLHeli has taken over the market due its more user-friendly interface and consistent development.

Check out the differences between BLHeli and SimonK.

As ESC technology continues to evolve, newer BLHeli firmware is being written specifically for the advances in hardware.

In 2016, BLHeli_S, as an upgrade to the BLHeli firmware for the BusyBee processors.

In 2017, the 3rd generation BLHeli, BLHeli_32, was created to take full advantage of the additional processing power available from 32-bit processors we are beginning to see on newer ESC’s.

Nowadays, all ESC’s come with firmware pre-installed, most commonly BLHeli_S or BLHeli_32 depending on the hardware. Anyway this should be clearly stated in the product description.

These days you don’t normally need to worry about changing firmware. You don’t really have a choice after you have made your purchase. You do however, need to make sure the firmware is up to date for bug fixes and improvement.

For non-BLHeli ESC’s, they are most likely to come with and locked to their own factory firmware, such as the KISS ESC, Castle QuadPack, and the Gemfan Maverick ESC.

What are ESC protocols?

An ESC Protocols is the “language” that the flight controllers and ESC use to communicate, one of the most basic task is to tell how fast the motor should be spinning.

Here are all the ESC protocols available for a mini quad, and their respective signal width – the time it takes to send one data packet (click the links for more info):

ESC Protocol Speed

ESC Protocol Speed

Before 2015, there was only one ESC protocol, standard PWM, but as hardware improves, faster protocols become possible: Oneshot125, Oneshot42 and Multishot. These protocols are all analog signals similar to standard PWM, but much faster. These protocols are synced to the PID loop to reduce jitters, improve performance and reduce delay between stick inputs and the reaction of the craft.

DShot is the latest ESC protocol which is a digital signal. It’s the future of ESC protocol in my opinion because of its better reliability and performance, and the ability of sending not only motor speed, but specific commands to the ESC’s.

Hardware released after mid 2017 should support all the ESC protocols, apart from DShot1200 which is relatively new and is only compatible with some 32-bit ESC’s. Make sure to double check the specification when planning a new build.

I hope this guide gave you an overview of all the ESC software and protocols. Please don’t hesitate to leave me a question or comment.

28 thoughts on “ESC Firmware and Protocols Overview

  1. Sean Andreas

    Hey there, maybe you can help me. I have a Diatone mamba f411nano stack. The esc firmware says bl_heli suite. My question is can I use bl_heli configurator to flash my ESCs. Or do I need bl heli suite? I’ve been trying with the appropriate dshot protocols in beta flight I’ve also tested a few other protocols and bl heli version updates. I’ve tested the ESCs with a multimeter to make sure they’re not bad. But only motor 1 starts up spinning when armed. The other three motors just twitch and then the drone beeps and the motors stop. Same thing in beta flight motors tab. Could this be because I’m not using bl_heli Suite? Any help would appreciated.

    Reply
    1. Oscar Post author

      Yes, BLHeli Configurator still works on BLHeli_S ESC.
      Have you tried other protocols? Like Oneshot? You can try flashing an older firmware version see if that fixes it.
      Note that BLHeli_S only supports DShot600, if you use Bidirectional DShot, use DShot300.

      Reply
  2. Mike Miller

    Hello, I have an esc that is set to Oneshot125, but is Dshot capable. How do you actually change the input protocol of the esc?

    Thanks!

    Reply
    1. Oscar Post author

      You can do that in Betaflight Configuration tab, you can select ESC protocol you want to use. Your ESC will detect it automatically so no change is required on the ESC side.

      Reply
  3. Edu

    Hello. You could tell me if I can use together 4 esc dji 420S 20A and 2 simonk 30A with my Naza V2? Thanks a lot. You have a very interesting website.

    Reply
  4. Saijin_Naib

    Oscar,

    Do you think/know of any concrete improvements in ESC performance from roughly 2011-era SimonK to latest BLHeli 14.9 (2016)?

    I’m trying to collect information about possibly cross-flashing/updating a legacy ESC that is still deployed fairly wide.

    Thanks for all your incredible information!

    Reply
  5. BRIGZY FPV

    Thanks for your info, very helpful, always!

    I just wanted to flash and set my motor direction on my GT R349 HD quads, I just put a brand new ESC in my older one, stupidly I went out and tested it LOS and it went bezerk. I didn’t stop to think the ESC needed setting up but obviously it did. All my motors were turning clockwise, I have flashed all ESC’s & changed motors 2 and 3 to reversed and flew it LOS and all good. My question is, why would I use “BLHELI Suite” rather than just the “BLHELI 1.2” program I just installed? It appears to be a very basic version but does everything I need. Should I be using the “Suite Version”? Sorry, a bit confused.

    Thx Brigzy FPV.

    Reply
    1. Oscar Post author

      BLHeli is the name of the firwmare, and BLHeliSuite is the name of the configurator…
      1.2 is a very old version indeed, but if that works for you then there is no need to update, let alone the old hardware might not support the new firmware anyway.

      Reply
  6. curt bixel

    Oscar,

    Thanks for your responses above.

    As far as the “Tank Drive” question, tank drive just means that the combat robot has two wheels, and to pivot left, you put the left wheel in reverse and the right wheel in forward. To go forward, you just run both wheels forward.

    I am curious why one side always seems more powerful than the other.

    On another note, we are finding that with our weapon, which is 5 pounds of steel spinning at 4000 rpm, the braking or the
    “damped mode” is causing a regenerated current that is damaging our speed controllers. The wires come unsoldered and components have melted free from the board. As long as we are careful to allow the weapon to spin down by itself, the ESC handles things quite well. But, making sure students reduce throttle from 100% to a much lower percentage, without ever hitting zero, or going to negative throttle, risks our ESC’s.

    Do you have a suggestion for a workaround using the Flycolor X-cross 50 amp? I have tried to put it in “normal” mode as far as motor direction, but for some reason, the system will not work in this configuration. The motor just beeps, even though it is not yet attached to the weapon.

    Finally, is there another speed controller you might suggest that is small, can handle 50 amps, and can be set so as to not try to slow the weapon down with braking or with damping?

    Reply
  7. curt bixel

    Oscar,

    We are using the Flycolor X-cross 50 amp ESC’s for combat robotics. They are small, very reliable, and seem to be able to handle well in excess of 50 amps. We are using BLHeliSuite32 and configure our ESC’s using the interface available for the Macintosh computer. I have a few questions I have not really been able to answer after a few hours of researching on the internet. Would you be able to answer any of these?

    One – How do I know if I am using MultiShot, DShot, or something else? I can’t really see any way to tell by looking through the menu’s on BLHeliSuite.

    Two – Is there any way to do current limiting with the FlyColor ESC and BLHeli?

    Three – We usually use “Tank Drive” and almost without fail, one side is more powerful than the other. Is there any way to adjust the power by working with the settings on the ESC? I can see “ramp up power” and “maximum” acceleration, but neither of these seem to be designed to do what I am trying to do.

    Four – We have “braking” turned off, but the motor is still clearly doing some braking. Any suggestions there?

    We are using an Arduino Nano and a USB cable as an interface with the Arduino 4-way interface.

    Reply
    1. Oscar Post author

      1. it’s a BLHeli_32 ESC right? if so it should support DShot and Multishot
      2. If it has a current sensor then yes, if not then you can’t; setting in BLHeliSuite_32
      3. not sure what you mean by tank drive
      4. you can’t turn off “active braking” on BLHeli32 ESC

      Reply
  8. Brian Evans

    Hi Oscar
    How to flash updated firmware onto an ESC?
    I just used the default one which was 40-H and now my motors are acting strangely (spinning very fast at zero throttle).
    My ESC is Mamba 4-in1 F40 40A ESC.
    Any advice is greatly appreciated!

    Reply
  9. Frantisek Dvorak

    Luis Inciarte

    I was trying to make Naze32 passthrough work for 2 days – and I made it to work.

    Way how I did it:
    – FC downgraded to BF 3.1.7
    – enabled softserial passthrough in BF configurator, enabled the softserial in ports tab
    – newest BLheli – silabs blheli bootloader (cleanflight)
    – done

    It is possible that with enabled softserial passthrough it will work even in newer BF

    Reply
  10. John Gatza

    Hello Oscar – excellent writeup on escs and control protocol. Thank you.

    I’m building a quadcopter with Pixhawk 4 and I used airbot wraith 32 v2 escs since they seem to have the latest feature capability.

    Thinking Pixhawk 4 was also latest technology I figured this would work but I’m having trouble.

    I can program the eSC non pass through but cannot get the motors to move….using qgroundcontrol and mission planner. All else works and I’m disarmed. Any thoughts?

    Are these ESCs compatible with my Pixhawk 4? Thanks again.

    Reply
  11. Luis Inciarte

    Helllo sir,

    I would like to have your suggestion about an issue that I am having to connect my ESCs using BLHeliSuite/BLHeliSuite32. The program is not reading my ESCs. Here is the info:

    ESC = Thriverline Acrotor BLHeli-32 ESC 30A 32Bit Brushless ESC Support 2-4S Dshot1200 (30A)
    FC = Readytosky Naze32 Rev6 Full Version loaded with Firmware CL V2.3.2
    Motors = EMAX RS2205S 2600KV Brushless Motor

    I just want to reverse 2 of the motors from CW to CCW.

    Thanks in advance

    Reply
    1. Marcos Santana

      Hello Oscar

      Can I operate a ESC with BLHeli with Oneshot125 protocol with a simple PWM? I want the options that BLHeli suit have but I will use a controller that doesn´t have Oneshot125 protocol. (Is not a racing drone)

      Reply
  12. Peter

    Hi Oscar. If I am trying to get a quadcopter-like design to work along with 4 servos, should I then use PWM so that there are no timer conflicts on my F3 flight controller?

    Reply
  13. Sergio

    Hello Oscar,
    I’m curious if you may know what the control interface used in Hobbyking YEP 120A-HV ESC? I’ve purchased this controller from Hobbyking and it came without any documentation. The type of interface is also not mentioned in the description available for this controller. It is only noted that it has an optocoupler on its input. I woud greatly appreciate if you can share any information available on this unit.

    Thanks and Regards,
    Sergio

    Reply
  14. Tyler

    How do I identify what protocol my esc are using? I’ve upgraded my FC to a Kiss. But I don’t know what protocol to use for the ESC mode.

    Reply
    1. Oscar Post author

      You can set the protocol in your FC software, so you should be able to tell from there.
      As to what protocol your ESC can support, you have to look it up from the product specification.

      Reply
  15. Sange

    I have a question that
    I just updated my Kingkong 12Amp BlHeli ESCs to the latest 14.9 firmware.
    Now will I be able to use the dshot or multishot or even oneshot42? Because I am using oneshot125 right now (I think, because I didn’t see much difference between oneshot enabled and disabled).

    Reply
  16. Stefan Wilkens

    A new addition is showing up here, ProShot which sends hex data over three pulses with an added crc. The total package is shorter than dshot, longer pulses allow for caps to reduce noise.

    rcgroups.com/forums/showthread.php?2879092-%2A%2AIdea%2A%2A-ProShot-Another-digital-protocol

    Support is being built in to beta flight

    Reply
  17. Simon Kirby

    You can run SimonK at 64kHz if you’d like. Just change RCP_ALIAS_SHIFT such that it fits whatever timing you want. I tested it up to 256kHz PWM, and it worked.

    Reply
    1. Saijin_Naib

      The SimonK? Nice to meet you, and thanks for your years of hard work!

      If I may bother you, I’m wondering if there is any value in updating the firmware/bootloader on the 3DR Solo ESCs to your latest SimonK firmware build and enabling OneShot125 on them, possibly with active braking (unless that will cause more of an electrical issue on the Solo!) I don’t think it will fix the ground lift/bounce problem the ESCs have, but I’m just curious what your take is on it (if you have one). 3DR forked your firmware back in 2015 or so, so I know you’d made fixes/advances/changes since then, and from what I’m reading, the 3DR FC firmware has a slew rate limiter in place to prevent the ground bounce to some level. I’m not sure if faster/more accurate/synced signaling would prevent the signal from getting interrupted. (I’m also not knowledgeable enough in this material to fully understand, just pulling info together).

      I’m planning on doing the flash as soon as I can figure out a harness to connect to the 3DR ESCs, but any advice/thoughts are always more than welcome!

      Thanks!

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

For prompt technical support, please use our forum IntoFPV.com. I check blog comments weekly.