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 –


  • Has anyone tried completely wrapping the cased APM in dubro foam like we used to do with receivers and batteries in RC airplanes? I was thinking about doing that and then zip tying the whole thing to the stackup. Or would that mess with the barometer? It would lock all the connectors in as well...
  • Flew my DwarfStart 2.0 Octo for the first time on 2.9.  All went well so far.  I have to tune up Alt_Hold, but it's getting there and I haven't seen any big problems yet.  Didn't see any vibration problems and I haven't bothered to balance the props yet.

    Gotta an unrelated question, but it'll have more visibility here.... (hijack).

    So it's a big powerful machine, I used to fly it on 2x 4S5000 batteries in parallel.  I have 4 sets of these packs, of various ages.  2 brand new, 2 almost new, 2 moderately used, and 2 that are fairly old and crusty.  All of these are 20C and when I flew with the first version of this Octo, I found that they could not deliver enough power, with very significant voltage sag on climbing.  So I decided to design the Octo to hold 4 of these packs at a time.

     I did the flight yesterday with the last two sets in parallel, so basically it's 4S 20,000mAH.  Now the problem is, that the packs became very unbalanced.  After 12 minutes of flying, the newer packs were at 20% capacity, but the old crusty packs were at 50% capacity.  The new ones took a little over 4000mAH to charge, and the old ones only 2000mAH.  I think what's happening is that the old crusty packs have much higher internal resistance, and aren't delivering the power than the newer ones are.

    Is there any way to balance this out?  I don't know if I kept flying, the new packs would drop in voltage as they approached depletion and the voltage falls off sharply, and then the older packs would start to deliver.  I don't think the newer packs would get over-depleted, because the voltage is being held up by the older packs, they are all in parallel.  

    Obviously the solution is to buy newer batteries and get rid of the old crusty ones...  But in the meantime...

    I was just surprised by how unbalanced they became.

  • I tested the new release at home and it worked like a charm. The altitude hold also worked great, I tested it just a little at home.

    However, when I brought my Y6 to stadium to fly, the calibration got wrong, I do not know why.

    Does the calibration was lost for any reason? I am learning how to do auto trim.



  • "Interesting" Z axis oscillation.

    I have just mounted my APM 2.5 in the protective casing. Unfortunately I was only able to order the top entry type at the time I bought my APM's so because of the cabling I have almost no room for adding vibration damping materials


    There are silicone foam below the APM, but thats so compressed that it's almost a hard mount.

    I have not had the opportunety to fly it after the new mount, but I have tried to "fly" it while holding it. And there I saw this interesting Z axis oscillation in altitude hold.


    Because of the almost hard mount and known problem with some vibration I have set INS_MPU6K_FILTER to 5hz.

    Except from that it's standard 2.9 parameters and the frame is ArduCopter 1.0 with 850kv motors.

    Is 5hz no go on a multicopter or could that oscillation perhaps also happen with other filter settings? I could suspect that some of the suddenly altitude gain reports could be caused of this issue.


    2013-01-26 18-49 1.log

  • Hey! I have posted the below many times but no one replied. Does anybody have any idea?

    "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) 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 (2.8.1 nad older) I had very solid altitude hold and loiter for up to 10m height based on the SONAR."





  • I have just flown my new H frame quad with 2.9. Not bad with stock PIDs but I have one big yaw problem.

    I have mounted the front and rear arms on flexible mounts to reduce vibration but there is a yaw coupling that I didn’t expect.

    I will try to explain.


    If I want to yaw left, the front left motor(3) and the rear right motor(4) (both clockwise) will speed up, giving more lift, while the remaining two slow down.

    Unfortunately, (with my extra flexible arm mounts) this makes the front bar tilt right and the rear bar tilt left so the lift vector produces a yaw opposite to the demanded one. Yaw is very poor, sometimes opposite!


    I will try stiffer mounts BUT it begs the question, is there any reason for the current rotation convention?

    My frame is intentionally very flexible but surely all will flex to some extent and suffer from adverse yaw. Is there any reason why all motors could not be reversed (with appropriate changes)  so that any flex helps in the correct direction.


    What about an option for opposite rotation? What do you think? Would it solve the problem?



  • Thank you to all developers and testers!

    Today I uploaded 2.9 and tried flying my Octo for a few minutes until it started to snow....

    I noticed the following:

    - I typically do some 'wiggle' tests to see how the copter responds. With 2.9 I noticed that when I wiggled here left and right quickly, she started to climb very quickly! What could that be?

    - I tried to auto trim method, but I'm not sure when CH-7 is actually activated/enabled. Is there a way in MP to see when CH-7 is actually toggled? I can see in the radio calibration that it moves, but I'm not sure what is 0 and what is 1 (enabled)

    - It was too cold to fly again, so I have no further information at this time. My setup is a home built Octo, 880kV motors and 4s battery. 11" APC props. Any preliminary thoughts would be great.

    All parameters (PIDs) are default.



  • How's this look for vibration? Spike at the end is landing of course.


    Also, nice job with the sonar.  

    But.... Does it look to you like Sonar and Baro are separating over time?


  • I do not know how to install version 2.9
    In Mission planner is always displayed 2.8.1: (

  • 1) A fast crash- I wonder what happend in here?

    Video: (starting at the crash)

    Also at 48s you can hear a sudden burst & roll direction change. That was caused by FC.

    My take on the video + logs would be that crash happens after 4800.

    Trottle IN goes to min = I tried shut down motors.

    Throttle out goes to max = reason why motors spin even on snow.

    Unfortunately I can not tell more from the log.

    throttle_out_max.JPGDoes this imply FC malfunction?

    Left back motor did not work after I took it from snow. Esc was wet so it might be caused by the crash, not the reason for the crash.

    Also the roll- value goes very low after the crash (the crash as a very fast roll spin)

    roll_value.JPGDoes this mean a sensor failure on roll --> fast rolls pin?

    Attached is also the log.

    2) Alt-hold climb

    My hexa hovers at quite high trottle. This might be the reason for climb at alt-hold.

    My hexa has good alt hold when i move thorttle to mid stick, but if I hold the throttlle at normal hover throttlle it climbs.

    Is there a dead band in trottle at alt hold & if one really puts high trottle the hexa climbs?

    --> one needs to have trottle around mid stick when alt-hold / one is able to control alt with throttle even at alt-hold, but the dead band is quite broad.

    2013-01-26 11-58 74.log

This reply was deleted.


Santiago Perez liked Santiago Perez's profile
18 hours ago