Servers by jDrones

Single Copter with Gasoline engine settings

After successful testing a single copter with electric motor I have converted it into a gas powered version. What settings should I change, or options should I use, especially for controlling the carburetor throttle?
I’ve set low and high Servo5 limits to cover the throttle range from stop to stop of the carburetor, but I damaged the throttle servo already. Reason being - before ESC is armed the Servo5 PWM is set to 982 by default. Even after it is armed it will stay at 982 I believe.
Obviously there is no ESC in a gas engine so I don’t want this default, or want to be able to set it to the Low servo limit which in my case is 1040.
I already switched option 37 to 70 for Servo5 (from Motor 5 to Throttle function) in the Advanced Settings, but nothing happens and the 982 stays. By the way - all other servos move when I change their Mean Position but not the throttle servo #5 (will not respond to changes of either Low, Max, or Mean).
I’m not even sure if Pixhawk Mini which I use will arm properly without an ESC, in the configuration that I carried over from my electric powered version.
Could anyone help me out in proper configuration and setup of a single copter for a gasoline engine? Is there such an option or standard setup that I should follow? So far I have not found any information on that.

Appreciate any help you can offer.

Do you have logs of that happening?

No logs at this time. I just started to test the preliminary setup on a test rig. I’ll make some logs soon and will post them.
Yesterday I noticed something else: after I force Armed the controller, the servo #5 moved to it’s Minimum Position of 1040 PWM as I set it in Mission Planner. This lasts for a second or two after which time the autopilot disarms itself which makes the arm go back to position 982 PWM.
As mentioned before, in position 982 servo would be damaged because it would keep pushing against the idle stop in the carburetor.

I am beginning to think that the initial 982 position is a safe fail position established during ESC setup. I forgot to mention that I am using an autopilot with the settings which I flew with an electric propulsion. I did not want to write again all the PIDs and other customized settings so I kept it. The program thinks that there is an ESC there. This is why I’m asking what I should change for a gasoline engine. Perhaps I should delete the current program and start from scratch, but I would still not know what settings/options to select for gas engine.

Have you set MOT_PWM_MIN?

If you don’t do that it will take values from the throttle input
RC channel (for backwards compatability).

Thank you. I did not know of the MOT parameters.
OK, I just changed the MOT_PWM_MIN to several different values, one of them really large (1800).After each change I rebooted the controller and verified that the new value was accepted. I see no difference in Servo5 behavior.
Here what happens:

  • after autopilot is powered the Servo5 arm goes to around 980 PWM position.
  • after I force arm the autopilot, the arm moves to position about 1100 PWM
  • after autopilot disarms the arm goes back to position 980 PWM

I also changed one parameter which I found: MOT_SAFE_DISARM from 0 to 1 but with no effect so I switched it back to 0.

When I changed SERVO5 function from 37 to 70 (it says it’s a Throttle), the arm does not move at all so I went back to 37.
Tonight I will load the single copter frame from scratch to eliminate the possibility that all this is caused by the former calibration/setup with ESC that no longer is used, and I will report the results. I wish we could communicate directly with someone who actually made a copter frame work with a gas engine.

I reinstalled Arducopter. This time I did NOT set up any ESC.
I tried MOT_PWM_MIN, SERVO5 MIN, and many other parameters, including MOT_SAFE_DISARM. No difference - the throttle arm always goes back to around 980 PWM before arming or after disarming.
You simply cannot have it with gas engines. In fact, for warming up the engine you’d like to be able to pass thru the throttle from the transmitter, while assuring the PWM does not drop below set value that corresponds to idle Stop position in the carburetor.

It appears that gas engines are well supported in planes (ArduPilot).

Is anyone using Arducopter with gas engines? If so - how have you managed the throttle issue that I am describing in this thread?
Any help will be greatly appreciated


I think the values are hard-coded for each function, so changing the 37 to 70 would not make channel 5 the throttle - I think it already is motor #1 (CCW).

I just reproduced the same effect you described. I think the 980-ish value is the value that the flight controller remembered when I calibrated the radio. Try a higher value on the throttle stick.

Good luck,


Thank you Paul. Let me tell the latest findings:

  • I flashed my PixhawkMini and installed ArduCopter 3.6.10.
  • I selected Frame Class: Single Copter and Frame Type: Plus
  • I set:
    SERVO5_MIN to 1080, SERVO5_MAX to 1745, and SERVO5_TRIM to 1080 (same as MIN)
    MOT_PWM_MIN to 1080

Before Arming the motor ch5out shows 1080 as expected. After Arming ch5out goes to 1146, so does servo arm (difference of 66 PWM). After disarming ch5out moves back to 1080.

At max throttle ch5out goes to 1711 instead of 1745; also the servo arm is initially erratic but these I will work on later.

After I changed Servo5_Min, Trim, and MOT_PWM_MIN - all of them to 1180, the ch5out jumped to 1236 after arming, and went back to 1180 after disarming (difference of 56).

The 982 PWM that I mentioned earlier happens to be the radio PWM (ch_in).

So there is still the issue of PWM increase above set Servo5_MIN and MOT_PWM_MIN after arming.
As you pointed out, function 70 (throttle) does not work for servo5.

I also wanted to replicate the settings that Canberra UAV uses with a tricopter with a petrol engine ( but cannot find the ICE_ENABLE or THR_MIN parameters in my single copter frame. In fact I cannot find any parameters related to an Internal Combustion Engine (ICE) or to a throttle.
Are they not available for that frame or I am doing something wrong?

As usual, appreciate any help in making this work.

the ICE params are on Plane only.

For arming there is MOT_SPIN_MIN, set this the same as MOT_PWM_MIN and you should see no change in PWM

Thank you Peter. This did the trick. Or at least moved things in the right direction.

In Arducopter 3.6.10 I cannot set MOT_SPIN_MIN same as MOT_PWM_MIN because it accepts values from 0.0 to 0.3, so I set it to 0 (was 0.15). I also set MOT_SPIN_ARM to 0 (was 0.1)
Now before arming, after arming, and after disarming the servo5 PWM (ch5out) are all the same values. No jumping up after it’s armed.

I also set MOT_SPIN_MAX to 1 (was 0.95). This made the PWM at max throttle go all the way to the set value for MOT_PWM_MAX. Two birds in one stone! Thank you!

Unfortunately another problem surfaced, or I just did not pay attention to it earlier: initially after I start moving the throttle stick up, and later on when I slowly bring it all the way down, servo arm (and ch5out) does not follow the throttle stick in the low range. It follows only from about mead range to max. Going up from idle and coming back to idle, there is a delay. Especially on the way back. The stick is all the way down but the servo5 arm stops about 150 PWM above MOT_PWM_MIN, then moves briefly a little higher (I noticed at this moment the flaps move to trim positions) and only then servo5 arm goes to MOT_PWM_MIN. I have no control over it.

What parameter would control this? What would eliminate it? I’m sure there is a reason for this behavior but is it needed with an ICE?
Or perhaps Stabilize mode is not the mode I should be using during setting up all the parameters?

I have a feel that for an ICE engine it would be best if I could disable arming of the motor all together (don’t know how yet). I do need to be able to precisely control engine rpm in the low range with my radio, especially during starting the engine and during warming it up. I prefer not to pass thru the radio signal for this because I need the MOT_PWM_MIN in MAX to keep servo from crashing into the stops in the carburetor.

Any suggestions?

you should not read too much into what happens on the bench, there is not feed back so changes get exaggerated. ie it wants to tilt left, nothing happens so it trys harder and harder.

You issue could be the thrust expo, see

try with MOT_THST_EXPO = 0

you can turn off arming with ARMING_REQUIRE

It’s working Peter, thanks a bunch. MOT_THST_EXPO = 0 did it. In fact all of the advises I received from everyone when put together made it finally work. I want to thank everyone for this.
Time to fill up the tanks!

On a side note:

  • I cannot find the ARMING_REQUIRE parameter. This may become dangerous because the motor gets automatically disarmed when throttle stick is all the way down (=982 PWM). I have a separate kill switch for this. For testing on a test rig it’s OK though.
  • when I move the flaps, throttle increases automatically. I understand this is to compensate for the lost thrust caused by the flaps.
  • I understand the effect of no feedback that you mentioned Peter, but I though that in Stabilize mode it is solely the operator who controls the throttle/thrust.

Yes, throttle will advance when the aircraft needs more control authority from the fins.

Stabilize mode includes the self-leveling function.

I do not know of a true “pass-through” mode in ArduCopter for manual control.

These servo functions (e.g. SERVO7_FUNCTION) are available:


You can also specify “pass-through” for rc-in-5 to servo-out-5 with
function 1.


My real problem is disarming against my will :slight_smile: .
After about 20 seconds of holding the throttle at minimum, the system disarms and I lose control of the throttle. The manual says that disarming takes place when the stick is at minimum AND being held fully left for 2 seconds. In my case just the stick at minimum for about 10 secs disarms the throttle (motor). No left is necessary.

For a gasoline engine it is necessary to be able to keep engine at minimum throttle without disarming. This is needed to warm up the engine. An ICE engine needs a kill switch anyway.

Is there a parameter that will prevent disarming when throttle is kept at minimum?

set DISARM_DELAY to zero

DISARM_DELAY 0 is working. Thx

I have a related question to what’s been discussed in this thread. It pertains to an electric version of a single copter.

Explanation: When a single copter is landing, a tall copter is tipped over by even a slightest wind. The reason for that is that before disarming, the motor still generates thrust making the copter practically weightless. Consequently the wind drags the copter sideways with one or more legs already on the ground. Once a leg catches any obstacle, the wind tipps the copter over.

The simplest way to sit the copter firmly on the ground would be to manually kill the motor the moment the copter touches the ground. This should be possible in any mode, including RTL. In a petrol engine I kill the ignition directly from Rx, bypassing the autopilot. My question is:

What would be the best way to do that in an electric copter without bypassing the autopilot? I think that killing the motor should be done by a switch in the radio. What parameter would allow to do that? Any suggestions?

you want e-stop it’s RCx_OPTION 31

Servers by jDrones