Programming a BLHeli ESC with BLHeli Suite for use with autonomous boats

In order to control the speed of a brushless DC motor like the one I use in LoCARB, one needs to use an electronic speed controller. Unfortunately, the RC world has multitudes of ESC units, some which are suitable and some which are not. For the LoCARB refresh, I used a Flycolor Raptor brushless motor ESC which runs cool and efficient. However, out of the box configuration needs to be tweaked so the low kV motor can run at optimal performance.

Why program the ESC?

Out of the box testing of the Flycolor Raptor BLS-Pro 30A ESC exhibited some strange throttle reduction due to a setting in the BLHeli software. After programming the changes, the strange throttling went away and the ESC performed consistently.

How to program the BLHeli-S ESC

Programming the BLHeli-S ESC is pretty straightforward. I simply flashed an Arduino Uno as a 4-way programming interface, then connected the Ground wire of the ESC connector to the GND on the Arduino, and Signal wire of the ESC, to pin 11 on the Arduino.

Lets get started

Download the BLHeli Suite – The FlyColor Raptor ESC is NOT a BLHeli32 ESC, download the NON 32 version. The link referenced provides the latest BLHeli suite and lists some forum threads on the software.

Extract the archive to a folder on your desktop and run the BLHeliSuite.exe file to get started.


Once the BLHeliSuite is open, you’ll see a menu similar (if not identical) to the one above. Click the Make Interfaces tab (circled in blue)


Select your Arduino board (I have an Arduino Uno)


Plug in your Arduino and select the corresponding COM port.


Click the Arduino 4way-interface button


Click OK on the dialog box that shows up


Select the MULTIv20002.hex file and click OPEN


Click Yes


After a successful flash, the program will display a window much like the one above. Click OK to continue.


Once back at the make interface menu, click the SILABS ESC SETUP TAB and select the correct Arduino Com Port.


Click the Select ATMEL / SILABS interface menu, and choose the SILABS BLHELI BOOTLOADER (4way-if) interface


Connect your ESC GND pin to Arduino GND, and ESC SIGNAL pin to Arduino D11. Next, supply power to the ESC by connecting a compatible power supply or battery to the + and – ESC Power leads.


Click Read Setup


If all goes well, you’ll see a dialog box confirming the ESC configuration has been read successfully.


Change the variables to the ones below (circled above), then click Write Setup

  1. Low RPM Power Protect: OFF (turning this off stopped the ESC from auto throttling to ~1000 RPM)
  2. Motor Timing: MediumHigh (gives more power to the motor)
  3. Programming by TX: UNCHECKED (keep from accidentally calibrating ESC with wrong values)
  4. PPM Min Throttle: 1036 (or whatever low value)
  5. PPM Max Throttle: 2000 (or whatever max resolution you desire)
  6. PPM Center Throttle (optional): 1032 (doesnt really matter on non reverse ESCs)

A dialog box will appear if the write was successful. Click OK. The ESC has been successfully programmed.


Next Steps…

Now that the ESC has been programmed, you can connect the ESC to your motor without fearing the ESC will be incorrectly calibrated on startup by whatever errant signals, or any erroneous calibration routine you have in the Arduino. You will not be able to program the ESC using a transmitter since that feature has been disabled.

You should also not experience any strange behavior with the ESC taking over the throttle response after a few hours of run time.

I found that with the 370kV motor I am using with the battery pack I built, the lowest PWM signal sent to achieve my desired throttle is 1300, with a max of 1600. This gives me a predictable degree of control for the range of speeds I believe will be useful depending on battery voltage conditions.

If you feel so inclined, you can update the firmware of the ESC to the latest 16.7 (at the time of writing).