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 –


  • Hey.

    Finally got my first quad assembled and configured with 2.9, but I have a few problems.  Here is my set-up:

    jDrones Arducopter V.1.1 with 880Kv Motors, 12x45 Props, 30 Amp ESC and 2700mAh 3S Battery. Here are my issues:

    1. Clicking noise coming from the ESC/Motors. Read it may be normal for the ESC's to click in a past topic, is this normal?

    2. Starts to liftoff with very little throttle before 1/4 from full down position. Is this due to the 12 inch props?

    3. Surging motors, once the motors are brought to a setting just before lift off, after about 5 seconds or so the motors speed up with no throttle lever input. May be fixed......reloaded the firmware, re-calibrated the ESC's and radio.

    Any help would be appreciated as I am new at the arducopter, been messing with the arduplane for a while now.  This all happened with stabilized mode selected.



  • Finally got arround to testing the latest FW.

    Stab no probs at all.

    When swithing to AH with sonar it gets very jumpy when flying over a obstacle. You can hear the motors almost stop. The quad falls abd then has to compensate to much.Not very smooth.


    When doing a similar test without sonar the quad just drops slowly untill it touches the ground. When I push the throttle up almost to max, the quad rises slowly but keeps ascending even with throttle at center and even lower. 


    It doesn't really hold alt and doesn't react accordingly to my inputs.

    2.8.1 work great!

    Any suggestions?   

    Z acc is very acceptable.

    Logs included


    2013-01-28 10-25 2.log
  • Leonard recently commented that I have fairly good Z values, so I thought I'll share my frame design with everyone.

    My main squares and carrier boards are cut from 1mm ABS plastic.  It's got a certain amount of flex to it, but is still solid.  The only downside is that it breaks quite easily.  My APM is also hard-mounted to the carrier board without any foam or tape underneath...


  • I would have stuck this comment on the end of the discussion about balancing motors but I couldn't find it (this thread is getting huge!). I had great luck today balancing my motors while they were attached to the copter. I simply clamped a piece of plywood to each arm and laid my iPhone running seismometer on it. Then I disconnected the ESC from the power module and connected it to the rx throttle output. I could then tune it using the same method shown in a couple of videos, I did it primarily because I was too lazy to rip everything apart, but I think it actually makes more sense to tune it on the copter anyway. You can see any vibration issues with mounting and such that way. Once I was done, I put the ESCs in calibration mode so that I could run them all simultaneously and measure the vibration as a whole assembly (no props). I was able to get it almost flat in all 3 axis at most speeds, but at a few throttle settings, I saw harmonic resonance yielding some pretty good vibrations. I think in actual flights, you won't often have all the motors running at the same RPM so hopefully we don't see that situation often. I wonder if that's not what's causing some of the odd unrepeatable bad behavior some people are experiencing? I've attached a picture of how I had things rigged for balancing.
  • Ok, I don't get it... I turned on the RAW log file (via CLI) but when I load the Graph in telemetry this is what I'm getting... What am I missing? I will attach both .tlog and .rlog files so that you guys could PLEASE help me with this.

    Also, how is every one loading Accel(x) In the choices that I have all I see is (x)acc, (x)gyro, gyro_cal_(x), and accel_cal_(x).

    Thanks for helping the Noob...



    2013-01-27 19-01-41.rlog

    2013-01-27 19-01-41.tlog

  • As I've mentioned a few times, I have not put any foam under my APM 2.5 on a home built frame that copys the B frame specs and the APM is held to the carrier plate with a 1/2 x 2" strip of 3M automotive molding tape(can be seen here in this thread).  It's really thin, like twice as thin as the normal white type double sided tape.  I've been flying quite a bit now with 2.9 and haven't had any weirdnesses in loiter, alt hold, etc so today I turned on the raw logging and flew in stabilize and loiter a few minutes to capture this attached log.  It looks like good readings on the Z accel, just wanted others to put their eyes on it and confirm.  Also, my MPU6K filter is still at 0, the default of 42, I have not changed it to 20, should I?



    2013-01-27 15-45 3.log

  • Maybe this can work for an alt_hold mode:

    Once alt_hold is engaged the throttle % is recorded (say 35%). Then after that only once the throttle stick has been moved up to 50% does alt_hold actually become active, after which the throttle stick can be moved up or down to control the height. 

    Then when alt_hold is dis-engaged again the throttle outputs will immediately go to the recorded throttle % to avoid any changes of altitude.

    Maybe someone from the dev team can advise if this will actually work or not...

  • Moderator

    Had a uncommanded RTL today with v2.9... was it a failsafe, how do I tell?

    I can't see anything unusual on the logs, CH3/THR was normal.

  • Developer

    Bug in the "autotrim" with rudder stick for over 10 seconds:

    I've found a bug in the "manual autotrim" procedure in the "ArduCopter 2.9" branch (the release in the planner): during the corrections of ALE (and I think also ELE but I have not tried) commands that takes them from aparte gives away, so instead of removing the trim the error increases, with the risk of not being able of course to land straight on your drone.
    The "SaveTrim" with the CH7 work fine, same as in my demo video.
    Now: don't use this "autotrim with left rudder trick" but only the "SaveTrim/CH7" in the planner, like in my demo video, and when arming motors put the rudder stick to right for 3 or 4 seconds, not over!
    I'm sorry, but during the alpha/beta/gamma/epsilon tests is one of the few things that I've never tried, because for the first time had been removed from the code but I and Leonard we requested it to be reintroduced.
    Unfortunately, that whoever holds the arming motor control for long time, and then takeoff with "45 seconds of quad uncontrollable".
    I have already alerted the dev team to fix.

    Bests, Marco

  • Friendly questions for Leonard, Randy and Marco:

    - why is it when I quickly wiggle my Octo from left to right (very aggressively) that the Octo shoots up? Any ideas? I cannot provide logs at this time as it is too cold to fly. If they are required to answer the question then I can provide them at a later date.

    - Sonar behavior: some posts state that when enabling alt hold with sonar enabled, the copter tends to fall down followed by an aggressive up motion. Mine does the same which no longer allows me to use alt hold indoors (which I used a lot for testing purposes). This is strenghtened by the fact that I hover at approx. 35% throttle and cannot move the throttle stick to the 50% point fast enough. Some discussion has taken place about the throttle dead band, etc. Would it be an idea, as suggested by one of the posts, to hold alt, regardless of throttle setting, until the throttle was moved to 50%? What other methods or tuning could be implemented or used to prevent the aggressive corrections so that alt-hold indoors would be 'relatively safe' again? Is the Z-accel used when below 10 meters and the sonar is active?

    Thanks and a great job in the 2.9 release!


This reply was deleted.


Santiago Perez liked Santiago Perez's profile
17 hours ago