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 –


  • Hi,

    I have a quad I put an apm25 on, it was working during setup. I then went out to fly and it would not arm. Finally I noticed the altitude was reading 200 feet. I did an altitude test in cli and got this

    3692722138?profile=originalDoes this mean I have a bad sensor?



  • Hi all,

    slightly off-topic but perhaps others will be interested too:

    Will be supported in some later version of ArduCopter V-Tail configuration, e.g. for quad?

    I did some searching through discussions here on DIYdrones but didn't find satisfactory answer to this question.

    Someone advise just change motor mapping, but i thing it is not that easy and I really didn't find actual solution (changes in source code) how to make it possible.

  • Hi,

    I have a question about adjusting the declination using ch6.

    I set it up with the min -max the same as in the MP options column  "-3.142 to 3.142" but the range I am seeing when I test, turn the knob then refresh is ".349 to -1.833"  from the middle of the knob to the end going CCW on the knob stays at .349 from the middle to the end going CW goes from .349 to -1.833.  not what I expected...

    are the numbers "-3.142 to 3.142" for the range correct in the options column or am I doing something wrong?

    thanks for any info on this


  • Having an issue maybe someone could assist with..

    Hexa seems to randomly have throttle brownouts when flying (have seen in alt-hold, and loiter) where it's hovering fine at ~50% throttle, and volts/amps seems to drop for a moment, causing the hexa to drop like a brick for a quick moment, then it raises its' throttle to try to recover. At first I thought it could have been a connection issue with the battery, but this happens with multiple packs (and when two are in parallel as well..) I have a small log attached of a flight a couple of evenings ago..


    3DR Hexa frame, 880k motors

    This log has 1 5000 3 cell pack, fully charged

    Atto 180A sensor, not enabled during this flight, but connected

    Sonar attached and enabled

    Optical Flow attached, enabled, not used.


    Calm, no breeze, dead on steady loiter. Loiter for most of the flight, stick input for a bit to see if it causes throttle drops

    You can see throttle and altitude issues at a few points in the log, when no altitude adjustment was requested

    Log attached

    2013-05-09 21-50 29.log

  • How do you get the graphs of Z axis vib?  The text in this thread says

    "Verify that vibration isn't your problem by enabling the "RAW" message through the cli, do a quick flight in stabilize mode and check the Accel Z values."

    The section I find on how to use CLI here

    does not provide an explanation of how to get into "RAW" mode or how to display the graphs.  When I do "help" in CLI I find nothing that hints of how to get into the RAW mode.

    When I open and graph the Z axis accel after a flight in the MP Flight Data / Telemetry Logs / tlog graph function I get values around 1000, and of course they go up and down as I increased and decreased altitude.

    I'm running MP 1.2.50 and APM 2.9.1b.

    What we are doing is trying to tune PIDS after the update to 2.9.1b which de-stabelized Loiter, by first assuring we don't have a vib problem.



  • Hi,

    I have a couple of questions about the PX4 if anyone can help me.

    1. Is there currently any way to use an external magnetometer with it? if so what port?

    2. Is there any way to monitor voltage/current on it yet?

    3. Does the PX4_HEXA file work yet?

    I know this stuff will be done, and in the Wiki in time.

    thanks for any help,


  • Hi,

    I just received a PX4 today, I have started to assemble some of the parts and was wondering if the barometer needs covered with foam or cotton like the apm?  I am guessing it does but I didnt see it in the wiki. (if its there I missed it)

    Just thought I would mention it.


  • Yesterday I experienced an issue flying 2.9.1b where it unexpectedly went into battery failsafe at 136 meters altitude and switched itself into LAND mode. But instead of landing it fell down for about 50 meters while rolling over and reaching a vertical speed of -20 meters per second before going into STABILIZE mode and recovering itself completely, although it lost another 40 meters altitude as it recovered. During this very brief LAND mode portion of the flight, Throttle Out was at 100%, so why did it fall? Perhaps it would be best to disable battery failsafe for now?

  • Hi,

    This may be old news, however I just found it.

    For those that use frsky rx's using cppm, I dont know if your aware but there is/was a problem using all 8 channels on certain rx's like D4R-II

    (here is a paste from the manual)

    "CPPM channel can not handle all eight channels at the same time with all throws are maxed out, as it does not have enough frame gap. It is recommended to use at most six channels from CPPM channel while leaving off the rest two channels, otherwise improper performance might occur."

    This is why I was not using CPPM,  well today I found there is a beta for some of there rx's (here is a paste from the instructions included with the FW)

    1. Firmware for D4R-II: d4rII_cppm27_build120926.frk
    This firmware is developed for D4R-II ONLY, increasing the Period of D4R-II CPPM channel from 18mS
    to 27mS for people who use multi-copters and other auto flying devices to handle all eight channels from
    CPPM channel at the same time.

    here is the link to the download page if you want to try this

    there is also a beta for the 8ch XP rx and, I think, for the D8R-II Plus


  • I upgraded to the latest MP and went out for a flight this morning. This may be just a coincidence but alt-hold failed to work. It does not respond to changes in throttle stick. I notice the Altitude reading from MinimOSD "stuck" at altitude reading of -2147.  

    Log file is attached. Note Max Altitude value doesn't change.  Any ideas where the problem is. It was working OK on 2.9.1 for weeks. I also upgraded to 2.9.1B but the problem is still there.  Next thing I may try is to reset to default.


    2013-04-25 16-35 23.log

This reply was deleted.


Neville Rodrigues liked Neville Rodrigues's profile
Jun 30
Santiago Perez liked Santiago Perez's profile
Jun 21