I've bought some cheap ESC's off banggood in order to build a drone. Now I'm trying controlling them using an Arduino. I just can't figure out how to use them properly.

The ESC is called XXD HW30. No datasheet was attached to it, so I had to look around on the internet, most of them seem to work similarly. On the banggood website, one customer linked to this paper: here. One thing written on there, as on many others:

Because different transmitter has different throttle range, we strongly suggest you using the “Throttle Range Setting Function” to calibrate throttle range.

And the Throttle range setting then most of the time

  1. Turn transceiver on
  2. Push throttle to high
  3. Wait until a signal, often "beep-beep", after about 2s
  4. Push throttle to low
  5. One long beep confirms new range So I'm trying to put this into practice.

I'm experimenting with this short sketch:

#include <Servo.h>
Servo servo;
void setup() {

void loop() {
  // put your main code here, to run repeatedly:


Now here's what I've gathered, and I can't make sense of it:

  • If I set the pulse width to 1800, 1900, 2000, short beeps with long pauses are emitted - "Throttle signal is irregular ". I've read that this can be emitted when the pulse width is out of range.

  • If I lower it to something like 1200, 1300, the error code is now beeps with an interval of .25s, indicating "The throttle stick is not in the bottom (lowest) position "

  • If I lower the pulse width even more, to 700 or less, the ESC emits "beep-beep- beep----", which sounds like neither the initiation sequence nor the throttle range sequence. After that sequence, the motor can be turned on by increasing the pulse width.

What am I doing wrong? Do I have the wrong datasheet? Is my board fried? How does the esc determine whether my throttle stick is at the top, or in the middle anyway, if different transceivers have different ranges? The behavior seems so unpredictable. Sometimes, switching port makes it work. Sometimes, it just starts working out of the blue. And it stops working again.

  • 4
    \$\begingroup\$ No datasheet = no buy. Lesson for the future. Plug it into an RC transmitter and fiddle with the stick while powering it on and off until you randomly run into what it wants. \$\endgroup\$
    – DKNguyen
    Commented Jan 31, 2020 at 18:58
  • 2
    \$\begingroup\$ What am I doing wrong? buying something without a data sheet from a non reputable source of likely poor quality origins. Ditto what he said above. \$\endgroup\$
    – Andy aka
    Commented Jan 31, 2020 at 19:37
  • \$\begingroup\$ "if I lower the pulse width even more, to 700 or less, the ESC emits "beep-beep- beep----" - is that 3 beeps followed by silence? What are you powering the ESC with? \$\endgroup\$ Commented Jan 31, 2020 at 23:26

1 Answer 1


Having a datasheet that explains operation of a component is critical for integration in an embedded system such as drone. Unfortunately there is a surprising lack of technical data in the RC world mostly because RC enthusiasts arent driving their components with microcontrollers. I tried to drive a brushed motor with an ESC driven by an arduino just similar to your case, and I got very strange and inconsistent results. My personal findings resulted that using the audio servo library was not the best way to talk to the ESC.

As suggested by the "data sheet" the ESC is meant to work with a wireless receiver that gets signals from a RC remote controller. They usually sell these two components together since they communicate with each other. From what I've seen for quadcopter/drone builds the reciever from the remote talks to the arduino and the arduino outputs the signal to the ESC. My assumption is that there is some sort of signal processing with the input of the various sensors to tell the drone how to act accordingly. With that being said, there are tons of arduino quadcopter tutorials out there and they all involve the use of arduinos and ESCs. I think those resources will be very helpful to you.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.