Community Forum

I can't get the engines running even though the prearm checks were successful

(Kyle) #22

Sorry if you’ve scoured these resources already, just trying to cover all bases.


Follow the alternative methods of ESC end-point calibrations and the troubleshooting tips at those links and let us know if you have any success. I would suggest the Semi-Automatic method may work as I don’t think it requires a traditional RC unit.

(Cryxos) #23


Yes I already tested this methods.

However, I have tried it again now. I tried all 3 methods. I get into the calibration mode with the 3 colors flashing periodically, but even with the semi-automatic method I don’t get beeps from the ESCs. I think the problem is that I don’t have RC and the Navio can’t get the high throttle because it has no connection to MP right after reconnecting the LiPo.

I’m stuck at the point where the ESCs want the high or low levels. At least I think so

(Kyle) #24

Can you detail how you calibrated the ESC’s with your Python program?

(Cryxos) #25


It’s just a program which uses two Pins on the Rasperry Pi to generate a PWM with 50 Hertz.
I can then type in what PWM I want to set. From a range of 700 to 2000.
In control mode I can set the PWM gradually from max to min.
With this program I get the sounds I need.

Below is an excerpt from the program.

def calibrate():   
    pi.set_servo_pulsewidth(ESC, 0)
    print("remove battery then press RETURN")
    inp = input()
    if inp == '':
        pi.set_servo_pulsewidth(ESC, max_value)
        print("now connect the battery and wait for the beeping sound then press RETURN")
        inp = input()
        if inp == '':
            pi.set_servo_pulsewidth(ESC, min_value)
            print ("Wierd eh! Special tone")
            print ("Arming ESC now...")
            pi.set_servo_pulsewidth(ESC, min_value)
            print ("aaaaaand... done")
            control() # Kann durch jede andere Funktion ggf. ersetzt werden

def control():
    print ("I'm Starting the motor now, I hope its calibrated and armed, if not restart by giving 'x'")
    speed = 1500   #starting value
    print ("Controls - a to decrease speed & d to increase speed OR q to decrease a lot of speed & e to increase a lot of speed")
    while True:
        pi.set_servo_pulsewidth(ESC, speed)
        inp = input()

        if inp == "q":
            speed -= 100    # decrementing the speed like hell
            print ("speed = %d" % speed)
        elif inp == "e":
            speed += 100    # incrementing the speed like hell
            print ("speed = %d" % speed)
        elif inp == "d":
            speed += 10     # incrementing the speed
            print ("speed = %d" % speed)
        elif inp == "a":
            speed -= 10     # decrementing the speed
            print ("speed = %d" % speed)
        elif inp == "stop":
            stop()          #end the function
        elif inp == "manual":
        elif inp == "arm":

(Kyle) #26

Can you use this Python program in addition to the Method 2 for ESC calibration? Send the PWM signal to MissionPlanner during the ESC calibration process using the Python program?

(Andrew Yushkevich) #27

Hi @kyle_irys,

You’re right, unfortunately, Emlid QGC version doesn’t support that kind of functionality at the moment.
Probably, we’ll add it to one of the future versions.

(Cryxos) #28


I have now bought a Flysky FS-I6X RC transmitter.
Unfortunately I have similar problems. At the first test with the new RC I got the required tone from the ESCs, but I made a mistake and set the wrong minimum throttle value. So I tried to repeat this, but no, I have the same problem as before. No more tones and no possibility to recalibrate the ESC.

In the meantime, I have found out that I am using OPTO ESCs, does this affect the calibration process?
I ask because it says on some pages that they don’t need to be calibrated?