This guide describes how to flash the BlHeli and the BlHeli Bootloader to XRotor 20a ESCs so that they can be updated via CleanFlight and BetaFlight after installing them in your multi-rotor, without unplugging them from the flight controller.

There are two types microprocessors used on ESCS, one is made by Atmel and the other by SiLabs. Since the XRotor 20a uses a SiLabs processor, these instructions are generally applicable to other SiLabs based ESCs. You'll just need to identify the C2 interface pads on the circuit board. These pads are described in the documentation here: Supported SiLabs ESCs.


At 15g weight, with wires, these things aren't super light.

Take off the heatsink to save 2g, no idea how this will effect performance and reliability so do this at your own risk.



  • If you use this specific Nano clone, it uses a ch340g usb chip, the driver for which is here:

  • I also tried this process with a bunch of different Arduino including the Pro Mini and Uno. I couldn't get it to work. My guess is that there might be an issue with the hex files for other Arduino versions. Your best bet is to use a nano.


Since we'll be using BlHeliSuite, which is Windows only, we'll need a VM for Linux or Mac, skip this if you already have a Windows computer. I used Vmware Fusion and this free Windows XP VM, straight from Microsoft:

curl -O -L "{.001,.002}"

BlHeli Suite

Download the latest BlHeli Suite:


The xrotor 20a escs come with these solder pads exposed to access the C2 interface we'll be using to flash them:

They connect to your Arduino Nano like this:

If you're unsure where to solder the leads onto your ESC, you can verify the solder pad connections to the pins on the F330 microcontroller with a multi-meter in continuity mode.

First, I made a programming cable that matches these pads, but there appears to be a thin layer of epoxy or something covering the board. I tried cleaning the pads with alcohol, but it didn't help.

Since I couldn't get good contact just holding the pins against the ESC, I ended up soldering leads onto each ESC. Soldering worked fine. It doesn't take too long, so consider just soldering temporary leads before building a cable.


Install the driver

Boot your VM (if you're on a Mac), unzip BlHeliSuite, install the Arduino USB Driver and plug in the Arduino.

Find the COM port

Find the COM port in use by your adapter by looking in the Computer Management (Right-Click "My Computer" -> "Manage") under Device Manager, COM ports. Mine is COM6.

Make the 4 way interface

Open the Make Interfaces tab, pick the Arduino Board: Nano W/ ATmega328 choose your COM port and click "Arduino 4way-interface"

Pick the 4wArduino_Nano__16_MULTIv[lates version number].hex

Hit open and it will start flashing your Arduino, making it into a SiLabs C2 programming stick.

It will say "Thank you" when done -- you're welcome!

Connect your programmer

Connect your programmer to the ESC as described in the wiring section.

Plug the ESC into a battery, preferably with a current limiting device like a light bulb or voltage regulator. So if something goes terribly wrong, your ESC isn't damaged.


Once your ESC is plugged in, hit "Connect" then "Read Setup," you should get a prompt like this, to flash BlHeli.

Pick the version of BlHeli that corresponds to your ESC, in this example we're using the XROTOR 20A MULTI code. There are 3 versions of BlHeli. You'll always want multi, unless you're doing something weird like flying a helicopter (not a multi-copter).

  • Main: Intended for helicopter main motor
  • Tail: Intended for helicopter tail motor
  • Multi: Intended for multirotor motors

Confirm that you want to flash BlHeli, erasing the original firmware.

You'll see a confirmation box like this, click OK

That's it. You're ready to configure your ESCs.


You can do it here, while connected with the 4w programmer or use CleanFlight/BetaFlight pass-through programming and configuration once you've installed the ESCs in your copter.

Check out the configuration guide for more .


After configuring your ESCs, before you fly, make sure you calibrate your ESCs so the throttle range of each ESC matches the others.

Read the guide on throttle calibration here .


Programming Adapters guide.

The manual to learn more.

OneShot125 Testing

TauLabs 125 Explanation