ESC Firmware

From RobotCombatWiki
Jump to navigation Jump to search

Most brushless ESCs are run by a small microcontroller, and the program on that chip, the firmware, decides how the motor is driven. Firmware sets whether the motor can reverse, where "stop" sits on your transmitter stick, how hard the motor starts, whether it brakes, and when it shuts itself off. Reflashing or reconfiguring the firmware is how builders turn cheap drone ESCs into reversible drive ESCs, or tune a weapon ESC so it spins up cleanly. This page expands the short firmware section on the ESCs page.

If you're a beginner, buy ESCs that a robot supplier has already set up for combat (see below). They work out of the box, and you only need the tools here if you want to change something.

The main firmware families

As of October 2026.

Firmware Hardware it runs on Status Notes for robots
BLHeli (original) Older 8-bit Atmel and SiLabs ESCs Open source (GPLv3), no longer developed Found on old, cheap ESCs. Configured with BLHeliSuite.[1]
BLHeli_S 8-bit SiLabs EFM8 ESCs Open source (GPLv3), last revision 16.x Very common on budget weapon ESCs. Accepts normal servo PWM from a receiver, and has a bidirectional mode.[2]
Bluejay BLHeli_S hardware (EFM8 BB21 and BB51) Open source, latest release v0.21.0 (July 2024) Built for drones. DShot input only, so it won't work from a normal receiver's PWM output.[3]
BLHeli_32 32-bit ARM ESCs Closed source, discontinued June 2024 Existing ESCs still work and settings can still be changed, but there are no new firmware versions.[4]
AM32 32-bit ARM ESCs (STM32, AT32, GD32 and others) Open source (GPL-3.0), actively developed; v2.21 released August 2026 The main firmware for robot-specific brushless ESCs in 2026. Accepts servo PWM and DShot, with full servo calibration settings.[5][6]

BLHeli and BLHeli_S

BLHeli was the first of these firmwares, written for 8-bit Atmel and SiLabs chips. BLHeli_S is its second-generation code from the same developer, written for SiLabs chips and focused on smooth throttle for multirotors. Both are open source.[7]

BLHeli_S accepts standard 1–2 ms servo pulses, the faster Oneshot and Multishot signals, and DShot. It picks the signal type automatically at power-up.[8] That's why cheap BLHeli_S drone ESCs, such as the Readytosky 35A and 45A sold by Repeat Robotics, are a popular budget choice for antweight and beetleweight weapons.[9]

Bluejay

Bluejay is an open-source firmware based on BLHeli_S 16.7, made for the same EFM8 hardware.[10] Drone pilots like it for bidirectional DShot and RPM telemetry. For robots there's a catch: Bluejay supports DShot only and no analog PWM protocols.[11] A normal receiver outputs PWM, so a Bluejay ESC plugged straight into it won't run. Unless your robot has a flight controller or other DShot source, stay on BLHeli_S.

BLHeli_32 (discontinued)

BLHeli_32 was the closed-source, licensed firmware used on most 32-bit ESCs. Its developer stopped operating in June 2024, citing the risk of the firmware being used in military drones and export controls. Existing ESCs keep working and can still be configured in BLHeliSuite32. Flashing new firmware no longer works because the update server is down, and new BLHeli_32 ESCs are no longer being made.[12]

Many BLHeli_32 ESCs can be converted to AM32, but it isn't a simple reflash. You need an ST-Link programmer wired to tiny debug pads on the board to install the AM32 bootloader first. Not every BLHeli_32 ESC is compatible, and once you erase the chip you can't go back to BLHeli_32.[13] If a BLHeli_32 ESC works for you, the usual advice is to keep using it.[14]

AM32

AM32 is open-source firmware for ARM-based ESCs. It supports servo PWM and DShot input, variable PWM frequency, and a sinusoidal startup mode for larger motors. Supported chips include STM32F051, STM32G071, GD32E230, AT32F415 and AT32F421. The project advises against the CKS32F051 clone chip.[15] Its settings include servo low/high/neutral points and a deadband, ramp rate, current and temperature limits, low-voltage cutoff, and several brake options.[16] As of 2026 it is the firmware on most robot-specific brushless ESCs.

Brushed ESCs

Most robot brushed ESCs, such as the FingerTech tinyESC, Malenki boards and Repeat's Dominion, run their maker's own firmware. You set them up with a calibration routine or the vendor's instructions rather than by reflashing.[17][18] Some AM32 robot ESCs can also be switched to brushed operation with a programmer; Just 'Cuz says this for its Vixen Nano and KIWI.[19] For larger robots, the open-source VESC has its own firmware and tool.

Which firmware can my ESC run?

It depends on the ESC's microcontroller (MCU), not on the brand:

  • 8-bit SiLabs EFM8 (BB1, BB2 or BB51 chips): BLHeli_S hardware. It can run BLHeli_S or Bluejay, but not AM32.
  • 32-bit ARM (STM32, AT32, GD32 and similar): BLHeli_32 or AM32 hardware. It can't run BLHeli_S or Bluejay.
  • Older 8-bit Atmel chips: usually original BLHeli or older firmware. These are rarely worth the effort today.

The listing usually says which firmware the ESC ships with, and that tells you the chip family. You can also connect it to a configurator, which reads the current firmware and MCU layout. AM32 firmware files are built for a specific target that matches the board and chip; Repeat's dual drive ESC, for example, uses the AM32_RR_ROBOT_DUAL_ESC_F421 profile.[20] Flashing the wrong target can leave the ESC unresponsive, so match it exactly.[21]

Tools

Software

  • ESC Configurator is a free web app that flashes and configures BLHeli_S, Bluejay and AM32 ESCs. It needs a browser with Web Serial (Chrome or Edge).[22] It doesn't handle BLHeli_32.
  • The AM32 Configurator is the AM32 project's own browser tool. Desktop versions (the Multi_ESC config tool) for Windows and Linux are on the downloads page.[23] It can save a backup of your settings to a file and restore it later.[24]
  • BLHeliSuite (Windows) is the original tool for BLHeli and BLHeli_S.[25] BLHeliSuite32 is still the only way to change settings on a BLHeli_32 ESC.[26]

Hardware

The ESC's signal wire has to connect to your computer somehow. Common options:

  • A USB-to-ESC programmer (a "USB linker") plugs into the ESC's servo lead. Repeat Robotics and Just 'Cuz both sell one for about $4 (as of October 2026) that works with AM32, BLHeli_32 and BLHeli_S.[27][28] With the AM32 desktop tool, tick "Direct Connect".[29]
  • An Arduino can be set up as a programmer if you don't have a linker.[30]
  • A flight controller running Betaflight can pass the connection through to its ESCs. That's handy for 4-in-1 drone ESCs but rarely used in robots.[31]
  • All-in-one boards may have their own method. The Catalyst (dual AM32 ESC plus receiver) is configured through its own passthrough. In September 2026 its maker warned that a recent AM32 web configurator update had broken this connection, and posted a workaround.[32]

The ESC must be powered from a battery or bench supply while you program it; the USB connection alone isn't enough.[33]

Key settings for robots

Names differ slightly between firmwares. Change one thing at a time and test.

  • Bidirectional (3D) mode: center stick is stop, with forward above and reverse below. It's essential for drive. BLHeli_S calls it "bidirectional" and AM32 calls it "bi-direction"; drone guides often say "3D mode".[34][35] Weapon ESCs are usually left in forward-only mode.
  • Motor direction: a "reverse" setting flips the spin direction without re-soldering motor wires.[36]
  • Throttle range, neutral and deadband: the ESC has to agree with your radio about what 1000, 1500 and 2000 µs mean. BLHeli_S has min, max and center throttle values, and can be calibrated by sending full throttle during arming. It needs at least 140 µs between min and max (70 µs in bidirectional mode).[37] AM32 has servo low, high and neutral points plus a deadband, which is a small zone around center that counts as stop. It also has a setting to disable stick calibration.[38] If the range is wrong, "stopped" may not be stopped, and your failsafe may not work. Recheck your failsafe after any change.
  • Startup power and ramp: startup power limits the power used while the motor is starting. Too little can stall a heavy weapon, and too much stresses the ESC.[39] AM32's ramp setting limits how fast power can rise, which can soften spin-up on a big weapon.[40]
  • Motor timing: BLHeli_S offers about 0–30° of advance. Higher timing can cure stutter on motors with high inductance, at some cost in efficiency.[41] AM32 also has an auto timing option.[42]
  • Demag compensation: this helps prevent the motor stopping or stuttering on sudden throttle changes, which often happens with a loaded weapon. Higher values protect better but can reduce top power slightly.[43]
  • Brake on stop: this applies the brake when throttle is zero. It's useful for drive, so the robot stops where you leave it.[44] For weapons, vendors generally turn it off; the KIWI's weapon default is "single direction, braking disabled", while Just 'Cuz's drive default has braking enabled.[45][46]
  • Motor KV and poles (AM32): these values don't have to be exact. If a motor won't reach full speed, especially an inrunner or a high-KV motor, try setting them closer to the real motor.[47]
  • Current limit: this protects the ESC and motor in a shoving match. Repeat suggests 4–8 A per channel for 1–3 lb drive on its dual AM32 ESC.[48]
  • Low-voltage cutoff: AM32 has one, while BLHeli_S has none.[49] Voltage sags hard when motors are stalled, so a cutoff can stop your robot mid-match even with plenty of charge left. Many builders turn it off or set it low, and protect the pack by watching match time and charge instead. See Batteries and LiPo Battery Safety for safe limits.
  • Thermal and stall protection: these cut or reduce power when the ESC is overheating or the motor is stuck. BLHeli_S steps power down in stages as the chip gets hotter.[50] Decide whether you'd rather save the ESC or keep fighting.

Flashing safely

  • Remove the weapon, or block it so it can't spin, and lift the drive wheels off the bench. Motors can start unexpectedly during configuration.[51] See Safety.
  • Power the ESC from a current-limited bench supply if you have one, so a wiring mistake doesn't burn anything. Otherwise use a small battery and a switch you can reach.
  • Save a backup of your settings before updating or making big changes.[52] Write the defaults down too; vendors sometimes change them between batches.[53]
  • Pick the exact firmware target for your board. Don't unplug anything mid-flash.
  • Don't convert or reflash an ESC that already works unless you need a specific feature.[54]
  • Test the failsafe again after any firmware or calibration change.

Robot ESCs and their firmware

As of October 2026; check the listing before you buy, since stock and defaults change.

ESC Supplier Firmware Shipped setup
AM32 Micro Drive (25 A) and AM32 35A Single Drive Repeat Robotics AM32 Pre-flashed bidirectional drive settings[55][56]
AM32 Dual Brushless Drive Repeat Robotics AM32 Bidirectional drive, current limit on; no mixing[57]
Readytosky 35A / 45A Repeat Robotics BLHeli_S Pre-tuned for weapons[58]
Catalyst (dual ESC plus AFHDS 2A receiver) Repeat Robotics AM32 Preconfigured, user-configurable[59]
Vixen Nano Just 'Cuz Robotics AM32 Brushless drive, bidirectional, braking on[60]
KIWI 80A Just 'Cuz Robotics AM32 (v2.20) Brushless weapon, single direction, braking off[61]
Blueson A1 4-in-1 Just 'Cuz Robotics AM32 (v2.20), AT32F421 Channels 1–2 drive, 3–4 spinner[62]
tinyESC v3 (brushed) FingerTech FingerTech's own Calibrated with a button; not user-flashable[63]
Malenki-Nano (brushed, with receiver) ItGresa ItGresa's own Set up in its configuration mode; ItGresa has released feature updates[64]

For more shops, see Suppliers, and for all-in-one boards, Radio List.

See also