ArduCopter 2.9 / 2.9.1 released

ACRO bug (fixed in 2.9.1b): while doing flips in ACRO mode, if you switch to Stabilize while inverted your throttle will go to minimum.  To regain throttle control you need to switch back to ACRO then back to Stabilize again (i.e. switch to stabilize twice).  You never lose control of roll/pitch/yaw.

Loiter/AltHold/Auto/RTL bug: if you switch into these modes with throttle at zero motors will go to minimum until you raise the throttle.

Auto mode altitude bug (fixed in 2.9.1b): setting a waypoint altitude greater than 320m over home altitude may wrap around and instead be interpreted as a low altitude.

ArduCopter 2.9 is now in the mission planner and the downloads area!

The major improvement is we use inertial navigation to improve altitude hold.  This increased reliance on the accelerometers means you must do some additional set-up before flying:

1. Perform the new accelerometer calibration in the mission planner (video).  The auto-trim metho has also changed (video).


2. Add vibration dampening foam between your frame and the APM.  Some suggested materials: DuBrogelhk foam.


 3. If upgrading from 2.8.1, modify the throttle and altitude PID values:

  • Increase your Throttle Rate P, reduce I to zero, increase D
  • Increase Altitude Hold P, reduce I to zero
  • Tune Throttle Accel P and I terms but try to keep P about 1/2 the size of I



Here is the list of major changes (a more detailed list can be found in the release notes):  

  • Alt hold using inertial navigation (Leonard, Randy, Jonathan)
    • AUTO_VELZ_MIN, AUTO_VELZ_MAX parameters control the max climb/descent rate for the autopilot (cm/s)
    • PILOT_VELZ_MAX controls max climb/descent rate for the pilot (in cm/s)
  • Landing improvements (Leonard/Randy).  Copter will descend to 10m or until an object is sensed with the sonar.  Then slows to 50cm/s descent (speed can be adjusted with LAND_SPEED parameter). (video).
  • Surface tracking with sonar (Randy/Leonard).  Copter will attempt to maintain current distance from objects in front of sonar regardless of altitude.  Only used in alt-hold and loiter, not used for missions.  Sonar can be enabled/disabled with CH7 switch. (video)
  • Failsafe improvements (Randy/Craig/John Arne Birkeland) including bug fixes, additional check for PPM encoder failure and implementation of battery failsafe.  Set-up instructions are here.
  • Mediatek gps driver accuracy improvements and use of SBAS [Craig].  Instructions on upgrading your mediatek to firmware 1.9 are here.
  • Traditional Heli improvements (Rob) including (a) bringing heli code back into the fold, (b) enabled rate controller (previously only used angle controllers). (c) fix to rotor speed controllers - now operates by switching off channel 8.  (d) allow wider collective pitch range in acro and alt hold modes vs stabilize mode  (e) bug fix to allow collective pitch to use the entire range of servos
  • Acro trainer (Leonard). Copter will return to be generally upright if you release the sticks in acro mode.
    • ACRO_TRAINER : set to 1 to enable the auto-bring-upright feature
    • ACRO_BAL_ROLL, ACRO_BAL_PITCH : controls rate at which roll returns to level
  • Camera control improvements (Randy/Sandro Benigno):  (a) AP_Relay enabled for APM2  (b) Trigger camera with CH7 or DO_DIGICAM_CONTROL command  (c) Allow pilot override of yaw during missions and fixed CONDITIONAL_YAW command.
  • PPM sum support for transmitters with as few as 5 channels (Randy/Tridge/John Arne Birkeland).
  • Performance and memory useage improvements (Tridge).


As per usual PIDs are optimised for the 3DR/jDrones quad with 850 motors and 10" props. If you're using more powerful motors/props and are seeing bad flight behaviour in stabilize, start by turning down Rate Roll P in 25% steps.

Special thanks to our testing team lead Marco and the dedicated bunch on the 2.8.1 release thread who put their copters at risk while testing the pre-release version.  Some of their videos are here: 1 2 3 4 5 6 7 8

Please feel free to report issues you find in the discussion below and/or add them to the issues list.


You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • I finally upgraded from 2.8.1 to 2.9.1.  Stabilize worked good.  RTL did not work well.  The quad rose a little bouncy when I first switched to RTL (with 2.8.1 it rose smoothly).  The the big problem came, as it approached the launch position it yawed to the right more than 90 degrees.  I tried again with the same results except this time the yaw was to the left.  It was late so I only had two attempts with RTL and I haven't looked at the logs yet.  FYI, when I upgrade, I always do a erase and reset.

  • Hi,

    Today I have made my first flight my homemade octocopter, and I have some issues:

    1- Stabilize works great with stock values except in P that I have 0.90 because I use 400kv motors, but the copter starts to yaw slowly.

    2- Alt hold not works as I wish, the octa is more like an kangaroo, I'm using an XL-EZ0 but I don't know if is a problem of sonar or the baro.

    3- Position mode works great if you don't use the sticks, only the throttle is used. (windy day), but maybe I have saw an issue using this mode, when the copter is in Position mode, the mission planner shows "unknown" and the yaw value is freeze (but the copter is yawing slowly as I said) but while I don't touch the stick the mode works fine. When I try to change the position without leave the "Position mode" the copter flies well but when I release the stick start to fall and I have to change to stabilize mode to be able to get the control and in the mission planner shows the actual yaw value instead of the freeze value.

    My config is APM1 + sonar + mediatek 1.9 + compass + 3dr radio link.

    I have attached the logs and the video showing the position mode working (not when its falls).


    P.D. I'm sorry for my bad English.

  • Test Failsafe at night

  • Randy,


    Could you please explain the parameter "COMPASS_USE"


    I have a peculiar problem. When I fly with "COMPASS_USE" set to 1, the copter automatically Yaws 20-25 degree. Also, in the Stabalize mode, the copter automatically starts moving to right and forward with the sticks centered.

    I have done the calibration and autotrim as well. I have even tried the "Save Trim" but it did not work. 2.8.1 NEVER had any such issue. No mods made to the frame.


    Then I turn the "COMPASS_USE" to 0, everything works fine.


    I will upload log files if required. In the meanwhile, could you explain the impact of setting it to 0?

  • 2.9.1 was great. i can make 3 seconds remote "handsfree" for my indoor test :)

    xaircraft quad, 30a esc simonk, 1045 prop, xaircraft motor. 3s lipo 2200mah x 2

    very simple. just update 2.9.1, with stock parameters

    and did savetrim at ch7. and quad stable.

    one problem i notice, i try to takeoff with alt hold, but unsuccessful, quad takes time to takeof and overshoot.

  • Developer

    This is the effect of Loiter P too high or Loiter I too low (3 meters of radius), if your quad although it seems to be stable but corrects too much you must adjust that parameters, the default of 2.9 is too high for some configurations.
    In windy conditions the problem is reduced, because the wind tends to "push the quad" in the same direction, for this reason the effect circle is much less known.
    The implementation of the "X/Y Inertial Navigation" greatly reduce this effect, not enabled in this video.
    A bad gps signal can also affect the Loiter, like here i think.

    Sorry for the poor video quality of my poor smartphone (LOL).

    Cheers, Marco

  • When i try to write WP to my board I get this error message.

    I have updated my APM2.5 board to 2.9.1 and done calibrating. I did not erase my board.

    saving wp's.png
  • So I'm trying to tune my alt hold because it just wants to land when I switch to alt hold.
    So here is what I did
    Vib dampening
    Accl calibration
    Turned the-mid down to 350
    So after I turned it down to 350 it stays airborne but ossilates up and down a lot
    Should I be tuning thr-rate P?
    It's set to 6000
    My set up is dt700motors w/ 1147props on H frame
    Any help would be great
  • Hi Randy, 

    I decided to upgrade my QuadX to 2.9.1, APM2.0, but I am not able to fly it, since I can not have a controlled airborn.

    I did attach the last log fly with a test to fly on my backyard, not able to takeoff, the copter is very unstable.

    I did check the latest PID config as highlited by you on red rectangles, I did recalibrate the accelerometers as in video (level, left, right, up, down, back),   I did recalibrate the ESC one by one, I did check the "motors" setup in CLI and each start on proper direction and order, I did rebind also the RX-TX.

    I do have a foam under the APM2.0 (in case) and I did check on Log the Accel_Z and it looks good for me, between -5 and -15, see below.

    My TX is a dx6i. For 2.9.1, I noticed there is a "Save Trim" with CH7 and "Auto Trim" during the flight. 
    But I do not have a spare channel for Save Trim CH7 and Auto trim is not possible since I can not takeoff and hover. Somehow the HUD is not horizontal.

    I did check if I have Error on my log, not errors, I did check spikes from TX/RX, not spikes.

    Please let me know if you find something wrong on my log attached and give me please some hints.


    2013-02-03 16-18 30_outside_test.log

  • Has anybody tried to compile the 2.9.1 code from repository and find a problem with a call from GCS_Mavlink?  Something about MPU6000. 2.9 compiled fine. I am just new to this Arduino stuff...sorry for the interruption.

This reply was deleted.