Unable to arm by Transmitter, PreArm: Heli motors checks failed

I am a newbie in traditional helicopter. Just got my Pixhawk 2.4.8 for my T-Rex 450 heli, flashed FMUv3 4.2.2 official heli firmware. I have calibrated all sensors, radio, ESC and followed the documents to set the HeliRSC in servo8 output function using the Set Point Mode. I followed the documents I found, and tried to arm the Heli by pressing the safety switch and using the throttle low and rudder right in transmitter. The messages in Mission Planner shows “PreArm: Heli motors checks failed”, “Motor Interlock Enabled”, but the motor will not turn at all. Servo8’s PWM value will be 1000 us. If I change the servo8 output function to RCIN3, and use the Mission Planner->Actions Tab-> Arm/Disarm button to force the heli to arm, I am able to make the motor to turn according to the throttle stick. If I change the servo8 output function to HeliRSC with Set Point 70%, and use button in MP to force the heli to arm, the Servo8’s PWM value will be 1700 us (the motor will turn at a constant speed). If I set the Arming_Check parameter to 0, the “PreArm: Heli motors checks failed” message will not show up, but the Heli still cannot be armed by throttle low and rudder right. The message will show the Motor Interlock Enabled, but the motor will not turn at all. I think my ESC (HobbyWing Platinum Pro 60A with Governor) and motor (Turnigy Typhoon 2218) are good, I just don’t know why Mission Planner complains “PreArm: Heli motors checks failed”. When I calibrate the ESC, I can see the lower portion describe the ESC type and other parameters have all been grayed out. I have also tried to flash the firmware 4.1.5, there will be no such message “PreArm: Heli motors checks failed”, but I still cannot arm the heli by the Transmitter.

Could someone please help me? I have no clues on how to arm the heli with the transmitter stick and get over the “PreArm: Heli motors checks failed” message.


Hi Steve,
Welcome and sorry that you are wrestling with this. The error message that comes up when you try to arm is basically saying that the transmitter channel which is assigned to the Motor Interlock on the RC side is not low (<1200us). So you have RC transmitter inputs and the servo outputs. Check your setup to see what transmitter RC channel is assigned to motor interlock. The default is channel 8. Assign it a switch and be sure that it is in the low position before you arm. After the vehicle arms, then set the switch the high position(>1200us) and the motor should start to turn. If you want to check the channel assigned to motor interlock then in mission planner select the config tab at the top and then select full parameter tree on the left. scroll down to RC group and expand it. then expand RC8 to see that the motor interlock (RC option 32) is assigned.

Hi Bill,

Thanks for the answers. I manually calibrated the ESC by connecting it directly to Receiver’s ch3 and after that the “PreArm: Heli Motors check failed” messages has gone. I added a switch for Ch8 (responsible for Motor Interlock) on my OpenTX transmitter. When the switch is in up position, it will put PWM value of 1035 us on Ch8, when the swich is in down position, it will put PWM value of 1375 us on Ch8 (I checked the Radio Calibration in Mission Planner and verified Radio8’s PWM values when I changed the switch positions). The parameter RC8_OPTION is set as 32 (Motor Interlock). However, I still cannot arm the heli by pressing the safety switch and flipping the switch for Ch8 in Tx to up position with throttle low and rudder right. The messages will show MotorInterlock LOW, Motorinterlock MID when I flip the switch, but it will not arm the heli by throttle low and rudder right. The previous message: “PreArm: Motor Interlock Enabled” has gone. I also did experiments on the arming after setting the parameter arming_check to 0, it still cannot be armed by the stick. The servo3 and servo8’s PWM output ranges are set as [1000 us, 2000 us] with trims as 1500 us.

Please help me. Thanks.

Hi Bill,

I was later able to arm the heli by the low throttle and right rudder stick in the transmitter. Previously, the arming was not possible because of the message: PreArm: Compasses inconsistent. If I disable the compasses check in parameter Arming_Check, I was able to arm the heli by the stick. If I re-calibrate the Compasses, and enable the compasses check at Arming_Check, I was able to arm the heli by the Tx stick. However, very soon, the next time when I tried to arm it, Mission Planner reported “PreArm: Compasses inconsistent” again. Do you know any way of fixing the compasses inconsistency problems?


Great! Glad you figured it out. Yes to get rid of the compass inconsistent error only use the external compass. That is pretty standard for heli’s.

Hi Bill,

After I armed the heli by the low throttle and right rudder stick in the Tx 

(it showed as Armed in Mission Planner), I found out if I did not flip the switch for Ch8 to set the PWM > 1200 us for Ch8 very soon, the heli will be
disarmed. Is this behaviour normal?


Yes that is normal. There is a parameter called DISARM_DELAY that is a setting for a feature that automatically disarms the aircraft if the user does not switch motor interlock on within the set time. It is defaulted to 10 seconds for new setups. If you set it to zero then this feature is disabled. I usually disable it.

Hi Bill,

I have a further question on HeliRSC. When I did a “Heli Setup” in Mission Planner, if I chose Throttle Setting-> “Rotor Speed Control Mode” as “External Gov SetPoint” (70%), and in the Set Up->“Servo Output” page, if I chose Servo 8 Function as “HeliRSC”, after I flipped the switch for Ch8 in Tx, the motor will start to run on 1700 us PWM. However, if I simply changed the Heli Setup’s Throttle Setting-> “Rotor Speed Control Mode” into “RC Passthrough”, after I flipped the switch for Ch8, the motor sill start to run, but the speed of the motor does not follow my throttle stick in my Tx. In the Servo 8 Output, it showed as 1700 us PWM, too. The only way for me to make the motor speed proportional to my throttle stick is to change the Servo 8 Output Function from “HeliRSC” into “RCIN3”. Then the motor speed will follow the throttle stick.

My question is that If I changed the Heli Setup’s Throttle Setting-> “Rotor Speed Control Mode” into “RC Passthrough” without changing the Servo 8 Output Function to “RCIN3” but keep it as “HeliRSC”, the motor speed should follow the throttle stick, as the definition of “RC Passthrough” Mode suggested. Throughout all the above experiments, my RC8_OPTION is set as “Motor Interlock”. (32).

Could you please tell me what have I missed in setting?


What you need to understand is that in passthrough mode, the channel 8 value is passed through because that is the motor interlock channel and it doubles as the throttle channel when passthrough mode is used. And just to be clear, the throttle stick on your transmitter controls collective in arducopter for Tradheli. So RC channel 3 in is collective. .

Hi Bill,

Do you mean that If I changed the Heli Setup’s Throttle Setting-> “Rotor Speed Control Mode” into “RC Passthrough” and keep the Servo 8 Output Function as “HeliRSC”, it will pass through Channel 8’s Value from my Tx (which is the value I used for the switch on Channel 8)?

How can I pass through the Ch3’s value in “RC Passthrough” Mode in Servo8’s Output Function “HeliRSC”? By changing the Servo 8’s Output Function to RCIN3? Are they the ways other pilots do to have manual controls on rotor speed in Acro or Stabilize flight modes?


Yes that is correct.

Why would you want to do that? That is what control collective.

So it depends on how you have your transmitter set up and how your ESC is being used (meaning does it have an internal governor). I suspect that your ESC doesn’t since you said earlier that you did an ESC calibration.

So if you don’t have a governor in the ESC, then you would have to use a throttle curve to have the throttle adjusted with the collective to maintain a near constant head speed. You can do this with the transmitter and the pass through mode but I will warn you that you should be sure your transmitter failsafe is setup correctly because if your receiver loses the transmitter and it’s failsafe for channel 8 is to be at zero or low then it will shutdown your engine. But since you want to be able to fly at more than one rotor speed then you could use your transmitter with the passthrough mode. I don’t normally recommend this because it is a complicated setup. You would use the helicopter configuration for your transmitter and make use of the throttle curves. Keep the pitch curve as a line from -100 to 100 and be sure to recalibrate your radio in ardupilot. So now you will set RC channel 6 (this is the collective channel for transmitters) to be the throttle channel (in ardupilot that is what is used for collective). You do this by setting RCMAP_THROTTLE to 6. Then you will have to reboot the controller for it to take effect. Next set RC3_OPTION to motor interlock (32) and set H_RSC_MODE to 1 (passthrough). Now you should be able to use your transmitter like you would for any RC Heli but remember to be sure that the receiver channel 3 does not failsafe low. The other thing I don’t know is that in this configuration whether the channel ardupilot keys off of to determine a lost transmitter link follows the RCMAP_THROTTLE channel.
On a separate note. you can use the throttle hold feature in your transmitter for the motor interlock switch as long as your throttle curves stay above 1200 PWM. ALso be sure to set the RAMP_TIME to at least 10 seconds because that dictates how long it takes for the HELIRSC servo to ramp to the passthrough value.

BIG WARNING: I have never tried this set up but I believe it will work based on my knowledge of the system. So be careful. Maybe do your first spool up with rotors blades removed.

Let me know how it goes.

Hi Bill,

Thanks for the answers. My ESC is HobbyWing Platinum Pro 60A with built-in Governor. I have to calibrate this ESC manually (by connecting it to Ch3 of the receiver directly), otherwise it sill say “PreArm: Heli Motor Check failed”. For this ESC with Governor, what should I do to make the manual control on Rotor Speed by the transmitter Ch3 (as if it is just an RC Heli)?

I’m not sure why you are seeing this. I have never calibrated my ESC.

If you use the governor feature then set up your governor and usually they have a way to setup multiple rotor speeds and you can just change the servo output value. Mine has separate governor settings for -30% 50% and 100% or something like that. The setup in arducopter becomes easier as you don’t use the setup I described above. You would just map your transmitter channel 8 to a 3 position switch. The low position would be motor interlock disabled. and then the two others would be pass throughs for your ESC governor. In ardupilot you would set the RSC mode to passthrough and leave the motor interlock channel as RC channel 8 in ardupilot.