Basic ESC Documentation (New)

Example Code


This example uses the Arduino Servo library to control the speed controller. This provides an update rate of 50 Hz and can use any pin on the Arduino board as the “servoPin”.

If you’ve never used Arduino before, we suggest checking out some tutorials!

Note: If you power the Arduino before powering the ESC, then the ESC will miss the initialization step and won’t start. Power them up at the same time, power the ESC first, or press “reset” on the Arduino after applying power to the ESC. You may need to adjust the neutral signal delay time as well, depending on your setup.

#include <Servo.h>

byte servoPin = 9;
Servo servo;

void setup() {

	servo.writeMicroseconds(1500); // send "stop" signal to ESC.

	delay(7000); // delay to allow the ESC to recognize the stopped signal

void loop() {
	int signal = 1700; // Set signal value, which should be between 1100 and 1900

	servo.writeMicroseconds(signal); // Send signal to ESC.


Firmware Files

The firmware configuration settings file for BLHeliSuite can be downloaded here:


Detailed documentation for BlHeli_S operation and settings can be downloaded here:

BLHeli_S Version 16.x manual

Firmware Update and Customization

The Basic ESC uses version 16.6 of the BLHeli_S firmware which is open source and editable. There are many parameters that can be changed to alter the performance of the speed controller by flashing the ESC through the PWM signal wire using a programming tool like the Turnigy USB Linker, the AfroESC Programmer, or an Arduino. The BLHeliSuite software can be used for accessing the ESC firmware and configuring it.

The Basic ESC uses an SiLabs microcontroller and is Oneshot 125 capable.