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 –


  • Developer

    Thanks !!! :)

  • 3692601323?profile=original

    Hello guys! Thanks for the nice job! I do not know if this is discussed in this thread before, bit I realized that in mission planner/flight data/quick (see photo attached) the altitude is based on barosensor instead of sonar. I checked that the sonar is enabled and in the CLI it gives me numbers. So, why in the "quick" the altitude is not taken from the sonar? I assume that with the new 2.9 code, the sonar may be used for other purposes and not for altitude measurements. Is that correct.

    PS: in previous versions of arducopter I had very solid altitude hold and loiter.



  • Many thanks and congratulations to the devel. team for this soft version.

    The altitude hold is now a dream but ..position hold shows a very strange behavior while it was almost perfect with V.2.8.1 ??

    The quad will go wild in one direction and do not stabilise ,I have to change mode to avoid the crash. The GPS is a U-blox NEO-M.

    Is there any solution  to correct this problem


  • Got vibes? ZAcc in a twist? get a free sample pack from Tempur the memory foam soft stuff

    Ill test my sample vs my current log data this weekend as I got a pack a couple of years ago.... haven't bothered using until now

  • I tested yesterday with the new 2.9 version on my big octa 98cm M->M,motor 3536 750kv, 4S 5A, prop 13x4, APM 1.4, gps mtk 1.9, with the default param. The fly mode stabilise, alt hold, and loiter was good without any problem, loiter within 1,2m, except sonar does not work with alt hold.

    I tryed to use with Ublox gps, but I got to desactivate AHRS_GPS_gain to 0, otherwise a lot of movement on the artificial horizon with MP, despite the octa was desactivated.

    Anybody has tested with the option Enable inertial_nav XY ? I do not activate yet this, just only on the Z axis.

    Thank to all the developement team for the hard work.

  • Hi Leonard,

    is this OK?

    i have 10 mm foam rubber under the upper Centerplate.

    But ALTHOLD does not work. The copter will rise or fall forever.

    42 Hz


    20 Hz



  • I want to do some proper tuning this weekend with my quad.  Please can someone send me a list off all the logs that I need to enable to be able to do so?  Thnx

  • Hi all,
    My name is Giacomo, and recently I have been interested in multi rotors is a fantasy world and I thank all the Team for the great work and thanks for the opportunity that you have to be able to experience this system.

    Even my Hexa DJI550 with ESC30 and motors DJI original APM2.5 and 4S battery with Arducopter 2.9 I have the problem with ALT HOLD. After reading the various posts on the subject I've changed the values ​​in MPU6K set to 20hz and THR_ACCEL_P THR_ACCEL_I respectively 1.0 and 0.5 still does not work well but it certainly has improved a lot.

    The PID used are the default ones still do not try to change them also because they are not absolutely shod.

    Take this opportunity to know if someone can send me the file parm settings used with my configuration or similar.

    Sorry for my bad English (google translator)
    Thanks to all for the help.
    My graph with the log file.


    2013-01-24 20-59 2.log

  • Hi:

    Did anybody try v2.9 with APM1  board?

  • I use 30 cm/s. gives it more time, especially in wind to find its mark
This reply was deleted.