There are several Electronic Speed Controller (ESC) firmware and protocols that can be confusing for those new to the FPV drone hobby. This guide aims to provide a brief history, break down technical nuances, and clear the common confusion often faced by beginners.
For a comprehensive guide on selecting the right ESC for your FPV drone, check out https://oscarliang.com/esc/.
Firmware is the backbone of any ESC; it’s the software that breathes life into these components, determining the range of settings you can tweak, the protocols it can communicate with, and the interface you’ll use to configure it. Each ESC firmware is only compatible to certain hardware.
Here is a list of the ESC firmware available for FPV drones and their release years:
In the early days of FPV drones, SimonK and BLHeli were the go-to open-source firmware for ESCs. By 2015, BLHeli had become the gold standard, largely due to its expansive hardware compatibility, feature richness, user-friendly interface, and continuous updates. Game-changing features such as Active Braking was pivotal, enhancing the responsiveness of the drones significantly.
2016 saw the introduction of BLHeli_S, which was an upgrade to the original BLHeli firmware to support the newer BusyBee processors (BB1 & BB2 chips). This upgrade introduced new technologies such as the DShot protocol, which revolutionized ESC performance.
In 2017, the 3rd generation of BLHeli – BLHeli_32 was created to take full advantage of the powerful 32-bit processors in ESCs, unlocking possibilities that 8-bit predecessors couldn’t handle. It brought to the table features like ESC Telemetry, customizable startup tones, and support for higher PWM frequencies.
Typically, an ESC will arrive with firmware pre-installed, and this detail should be clearly stated in the product’s description. Usually, it’s either BLHeli_S or BLHeli_32, depending on the ESC’s hardware.
For those with BLHeli_S ESCs, consider switching to Bluejay firmware. It unlocks features traditionally exclusive to BLHeli_32, like bi-directional DShot and custom startup tones, elevating performance to rival its more advanced counterparts. While alternatives like JESC and BLHeli_M (JazzMaverick) existed, their development seems to have stopped and become obsolete.
In 2020, AM32 was released. It’s a open source firmware that could be the BLHeli_32 alternative. We’re seeing some of the latest ESCs shipped with AM32 out of the box. Learn more about AM32 here: https://oscarliang.com/am32-esc-firmware-an-open-source-alternative-to-blheli32/
Think of ESC protocols as the languages through which the flight controller communicates with the ESC, dictating the speed at which the motors should spin.
Here are the ESC protocols available for FPV drones, especially when running Betaflight firmware, and break down their signal timings which is basically the time it takes to send one data packet:
- Standard PWM (1000us – 2000us)
- Oneshot125 (125us – 250us)
- Oneshot 42 (42us – 84us)
- Multishot (5us – 25us)
- Dshot150 (106.8us)
- Dshot300 (53.4us)
- Dshot600 (26.7us)
- DShot1200 (13.4us)
Below is a more detailed look at the signal widths and update rates:
|ESC Protocol||Signal Width||Lowest Update Rate|
Back in 2014, standard PWM was the only available ESC protocol, but as ESC hardware evolved, faster options like Oneshot and Multishot were introduced. These protocols are similar to PWM, but with much shorter signal width, they have much lower latency. Also they were designed to sync with the flight controller’s PID loop, enhancing performance by reducing jitter and delay in response to control inputs.
DShot is the latest ESC protocol and is distinct as a digital signal, contrasting with the analog nature of all other ESC protocols. It’s a step forward for ESC communication, offering improved reliability and performance. With DShot, you can transmit not just motor speeds, but specific commands to the ESCs. Bi-directional DShot even allows for two-way communication between ESC and flight controller, enabling advanced features like RPM Filtering and Dynamic Idle by transmitting motor RPM data back to the FC.
There are several DShot speeds you can pick, from DShot150 to DShot2400. Larger numbers mean higher speeds, which offer reduced latency, yet they’re not inherently superior due to an increased risk of data corruption and higher CPU load. Betaflight recommends choosing a DShot speed appropriate to your PID loop frequency; going overboard won’t necessarily enhance your flying experience.
- 2K PID Loop Frequency, DShot150.
- 4K PID Loop Frequency, DShot300.
- 8K PID Loop Frequency, DShot600.
- DShot1200 and DShot2400 are currently not used in Betaflight.
Realistically, the latency differences between different DShot speeds are in microseconds, so the impact on performance is probably minimal. The potential for packet corruption at higher speeds might pose a more significant issue.
I hope this overview of the ESC firmware and protocols is helpful. If you have questions or need clarification, feel free to drop a comment.
- July 2017 – Article created
- Oct 2022 – Added Bluejay/AM32, updated DShot recommendation
- Nov 2023 – Updated article