I am trying to run a brushless motor with an esc. I know that it is supposed be pulled from 1-2ms to run.

I have read online that it needs to be armed first but I don't know how to arm it. I looked around a bit but couldn't find anything for RPi.GPIO.

3 Answers 3


You need to use PWM, and send the "ARM CODE" in my case i used ESC.writeMicroseconds(1000) delay(1000); ESC.writeMicroseconds(1100);

this was done in the arduino with esc from ebay your esc may have a diferent arming sequence you have to try, you can hear a sound like a like a music when they are armed


You may be able to arm the ESC with RPi.GPIO. However RPi.GPIO uses software timed pulses which may be not stable enough for the ESC.

Try sending a couple of seconds of 2 ms pulses followed by a couple of seconds of 1 ms pulses.

  • That didn't work however it did start making rapid beeping noises.
    – DSchana
    Commented Oct 6, 2015 at 23:16
  • @DSchana Have you tried hardware timed PWM? E.g. try my pigpio. Download instructions. Once installed enter at the command line "pigs s x 2000 mils 2000 s x 1000 mils 2000 s x 1200". Replace x with the Broadcom GPIO number you are using for the control wire. If that does not work edit your question and post a photo of the connections between Pi and servo.
    – joan
    Commented Nov 12, 2015 at 8:28

You don't really need to ARM the ESC's, but you may need to calibrate them one time before first use. To calibrate them -

You need to send them a a repeating waveform that consists of 2 milliseconds HIGH and 20 milliseconds LOW (the low period can vary a bit, but the HIGH period can not) WHILE you apply power. Then, when you hear a series of tones from the motor the ESC is connected to, you change the waveform to 1 millisecond HIGH and 20 milliseconds LOW. When you hear another tone, remove power.

Then they are calibrated. The calibration procedure sets the maximum and minimum pulse widths you will later use to control the motor.

You can also use a "servo tester" that you can buy on Ebay for this procedure. Make certain you get the one with a digital readout so that you know what pulse width it is putting out.

You only have to calibrate one time. After that, you can control the motor with pulse widths between 1 and 2 milliseconds high, 20 milliseconds low. You should also know that the ESCs will not start the motors if they get a pulse width of greater than 1 mSec high while power is initially applied to the ESCs. In other words, you cannot start a motor at "full throttle", you can only start at minimum throttle. This is for safety.

The term "ARM" comes from flight controllers, not ESCs. A Flight Controller must be ARMed before it will allow the motors to spin. But the flight controllers control the ESC. So the term ARM does not apply to ESCs.

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.