ESC Firmware Guide

In this concise overview, we’ll explore the evolution of ESC (Electronic Speed Controller) firmware, listing each firmware in chronological order of release date, and highlighting the key features and differences.

SimonK Firmware (released in 2011)

SimonK firmware was developed by Simon Kirby in the early days of multirotor drones (2011).

It aimed to improve the response time of ESCs compared to the stock firmware.

SimonK’s firmware featured optimizations that reduced delay, allowing for more precise control and smoother motor response.

The firmware was popular among early drone enthusiasts for its performance benefits.

While SimonK was a significant step forward, it had limitations in terms of compatibility and the range of features it offered and its capabilities are now surpassed by more recent firmware.

BLHeli Firmware (2013)

BLHeli firmware was created as an evolution of SimonK to address its limitations.

It was developed by the BLHeli open-source project and offered a more extensive feature set.

BLHeli introduced features like Active Braking and improved compatibility with a wider range of ESC hardware.

It became a popular choice for users who wanted more control and customization options for their ESCs.

BLHeli firmware was regularly updated to support new hardware and provide new features.

BLHeli firmware has special configuration program called BLHeli Suite. Read more about the BLHeli Configurator here: BLHeli Suite and BLHeli Configurator How To

KISS ESC Firmware (2014)

KISS ESCs came with their proprietary firmware, developed by Flyduino. KISS firmware is known for its simplicity and reliability.

KISS firmware is ideal for those who prefer a straightforward and stable option, particularly for racing drones.

KISS firmware is proprietary and closed source. This firmware is mostly popular between KISS enthusiasts. The choice of the KISS enabled hardware is limited. Manufacturers must obtain license from Flyduino.

BLHeli_S Firmware (2016)

BLHeli_S, often referred to as simply BLHeli (without the “S”), is an improved version of the original BLHeli firmware.

It introduced significant advancements in terms of performance and support for modern hardware.

BLHeli_S supports DShot communication protocol, offering more precise and faster digital communication between flight controllers and ESCs.

BLHeli_S has been widely adopted in the FPV drone community for its reliability, performance and price. it is the most popular ESC firmware, but is now rapidly replaced by more advanced alternatives like BLHeli_M, BlueJay, and others that support bidirectional DShot.

BLHeli_32 (2018)

BLHeli_32 is designed to work with 32-bit microcontrollers, which offer more processing power and capabilities compared to the 8-bit microcontrollers used in previous BLHeli versions. This allows for faster and more precise motor control.

BLHeli_32 fully supports the DShot protocol, which is a digital communication protocol known for its low latency and high precision

BLHeli_32 was the first ESC firmware that introduced bidirectional DShot. This allows for communication in both directions between the flight controller and ESC. This enables telemetry data to be sent from the ESC to the flight controller, providing information about motor RPM, current draw, and other parameters.

BLHeli_32 supports higher DShot baud rates, including DShot1200 or even DShot2400, which offers extremely fast communication.

JESC (2019)

JESC is an ESC firmware created by Joe Lucid for BLHeli_S ESCs. The main firmware advantage over BLHeli_S is ability of sending the RPM telemetry to the FC, enabling the RPM Filtering for reduced motor noise, enhanced performance, and smoother flight characteristics. JESC also supports higher PWM frequencies like 48 kHz providing improved battery life and other benefits.

The JESC firmware is based on the open source project BLHeli_S and is also open source. To enable dshot RPM Telemetry you need to license the optional Telemetry Service. Each ESC requires one license. You need to purchase 4 licenses for a 4in1 ESC (price is about $5 for a 4in1 ESC).

In the year 2020 JESC was definitely popular cheaper option for having ESC firmware with RPM Telemetry features. Only BLHeli_32 and JESC had DShot RPM telemetry at the time.

BLHeli_M (JazzMaveric) (2020)

BLHeli_M, often referred to as JazzMaverick or simply “JazzM,” is a specialized firmware based on the BLHeli_S, designed for electronic speed controllers (ESCs) that were compatible with BLHeli_S and is primarily used for micro-sized drones. Unlike BLHeli_S or BLHeli_32, which are widely known and used, BLHeli_M is a less common. BLHeli_M was the first firmware to introduce Bidirectional DSHOT (RPM Telemetry) for free – users could flash the JazzMaveric’s firmware into BLHeli_s ESC and enjoy RPM Filtering something what could be done only with more costly BLHeli_32 hardware before.

JazzMaverick firmware allows users to adjust the PWM frequency to suit their specific needs and flight preferences. This is another key feature that sets it apart from other ESC firmwares.

BLHeli_M firmware was last updated on Sep 28, 2019, so the development is stalled.

Source code repository:

AM32 (AlkaMotors) (2021)

AM32 is an open-source firmware created by Peter Smith, also known as AlkaMotors, for BLHeli_32 compatible ESCs.

AM32 supports features like firmware upgrades, various ESC protocols, bidirectional communication like the BHeli_32 and efficient motor startup.

It’s compatible with STM32, GDS32, AT32 family MCUs. However it supports only limited number of the ESCs. Some manufacturers are releasing ESCs with AM32 firmware (Skystars, NeutronRC).

BlueJay (2022)

Bluejay is the open source successor to BLHeli_S adding several improvements to ESCs with Busy Bee MCUs (EFM8 BB21 and EFM8 BB51).

BlueJay is built on the base of BLHeli_S firmware version 16.7.

BlueJay firmware supports the DShot digital communication protocol with options for DShot150, DShot300, and DShot600.

One of the standout features of BlueJay is its support for bidirectional DShot, which enables RPM telemetry. This means that the ESCs can communicate motor RPM data back to the flight controller enabling the use of the RPM filtering.

BlueJay allows users to choose between different PWM frequencies, including 24 kHz, 48 kHz, and 96 kHz. This flexibility enables fine-tuning for specific flight characteristics and motor setups.

Other BlueJay features are: PWM dithering with 11-bit effective throttle resolution, startup power and RPM protection, Low commutation interference, smoother throttle to PWM conversion, user configurable startup tunes.

BlueJay Configurator (ESC configurator):

Which is the fastest ESC protocol?

Below is the list of the ESC protocols and their main features. You can compare the speed by the packet update Time and Refresh Frequency.

ESC ProtocolAnalog or DigitalOne-way or Bi-directionalPacket Update Time (µs)Refresh Frequency (kHz)

With a packet update time of approximately 6.67 µs, DShot2400 is the fastest protocol listed in the table. It offers the quickest communication between the flight controller and the ESCs. However it is specifically supported only by BLHeli_32 ESCs, and it requires both the ESCs and the flight controller to support this high-speed protocol.

DShot was coded in a way that will not use significantly more CPU resources going to higher communication speed. However, when using Bidirectional DShot, the higher the communication speed of the DShot protocol the more the MCU has to process thus increasing the total computational load. Flight controllers with the slower MCUs most probably are unable to support Bidirectional DShot2400 or even Bidirectional DShot1200.

Meantime most BLHeli_32 ESC will work with DShot2400. Only F3 based BLHeli_32 ESC will work with DShot4800


DShot Bidirectional Telemetry: DShot Bidirectional Telemetry, often referred to as DShot Telemetry or ESC Telemetry, is a feature that allows the ESCs to send real-time telemetry data to the flight controller. This telemetry data includes information about motor RPM (Revolutions Per Minute), current consumption, voltage, and temperature. The flight controller can then process and display this data on the pilot’s OSD (On-Screen Display) or transmit it to a ground station or remote display device.

Key points about DShot Bidirectional Telemetry:

  • RPM Data: One of the primary functions of DShot Telemetry is to provide RPM data for each motor. This telemetry is used primarily for the RPM filtering. This telemetry also allows pilots to monitor motor performance and detect potential issues like propeller strikes, motor damage, or out-of-balance props.
  • Current and Voltage Monitoring: ESC telemetry also provides information about current draw and voltage levels, which are crucial for monitoring power consumption and battery health during a flight.
  • Temperature Information: Telemetry can also report the temperature of the ESCs, which can help pilots keep an eye on the thermal performance and avoid overheating.
  • Display on Flight Controller’s OSD: DShot Telemetry can be read by the flight controller software, allowing for real-time data processing and display. Some flight controllers and OSD systems are more compatible with this feature than others.

RPM Filter: The RPM filter is a feature available in BLHeli_32 firmware and some other firmwares like BLHeli_M, JESC, BlueJay, AM32, that utilizes motor RPM data to enhance filtering and noise reduction in the flight controller’s PID (Proportional-Integral-Derivative) control loop. By using the RPM data from each motor, the RPM filter can isolate and filter out noise generated by the motors, improving flight stability and reducing vibrations. This results in smoother and more precise control of the drone.

Key points about the RPM filter:

  • Noise Reduction: The RPM filter helps to eliminate motor-related noise that can affect the drone’s flight performance and, in some cases, lead to instability.
  • Improved Flight Characteristics: With less motor noise affecting the control system, the drone can respond more accurately to pilot inputs, making it easier to fly and providing better acrobatic performance.
  • Compatibility: The RPM filter is typically used with BLHeli_32 ESCs and flight controllers that support this feature.

Read more about how to set up the RPM filtering here Guide: How to set up the RPM filtering


Leave a Reply

Your email address will not be published.