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 Leonard, Marco, Randy and other experts,

    Based on previous posts, this question may be for Randy.

    I have hooked up a gimbal, controlled by CH10 (roll) and CH11(tilt) on APM 2.5. When I set gimbal tilt 'Input Ch' to RC6, it does exactly what I want it to do: tilt follows the dial knob nicely and is stabilized (lets call that 'tilt offset'). However, I like to reserve that dial for tuning, so I want to use RC8 for 'tilt offset'. However, whenever I use input RC8 (connected to Aux 2 on my DX8) at 'Input CH' for the gimbal (so I basically have three presets for the tilt: normal flight, approach and landing), the tilt starts to jitter. It seems that whatever input I give to CH8 (the dial knob, Aux 3 on the DX8 or switch, Aux 2 on the DX8), the tilt starts to jitter. Is that a problem with my CH8 input or a bug? 



  • I want to report my experiences with the 2.9.1 version. I had the chance to do a couple of flights with my pretty non-stock 3dr quadrocopter.

    My setup:
    - Tiger Motor MT3506
    - 12x4.5 Carbon Props
    - 3dr 20A Esc, flashed with wii-esc Firmware
    - 4S2P 10000 mAh LiPo
    - APM 2.0 with onboard Mediatek GPS
    - 2.4 GHz FRsky RX
    - 35 MHz Graupner RX
    - 433 MHz 3DR Telemetry Radio
    - 5.8 GHz Nano Stinger Video TX
    - Pixim Seawolf Vario Lens
    - Flyduino 2-Axis Gimbal

    One Esc was faulty but did still work so I did my initial settings based on a weaker setup. Hover was about 65%, now it hovers correctly at 45-50% after replacing the esc. Alt-hold is pretty good and stable, even in slightly windy conditions. Throttle params need a bit more tuning for me, loiter is still a bit twitchy, maybe due to the old 1.6 Gps firmware. Keeps a 3x3 box pretty well. Overriding the loiter position with manual input feels a bit strange, but works.

    I will have to rework the pid's again to get a bit more direct reactions, but all looks and feels as one of the best releases so far. I really enjoyed flying after a long time with this release. If the loiter mode will get the same update like alt-hold, it will be superior.

    Many thanks to all the developers, testers and supporters for their great work!
  • Leonard, Randy, Marco and other experts:

    First of all, great job on 2.9.1!!! I built a simple Quad with great results using almost stock PID's (0.13 instead of 0.15 on Rate P). Sonar is indeed not necessary and it appears to only screw up things (it works fine indoors, but outdoor (approx 10degrees C) it makes the quad jumpy). My Accel Z's are between -8.5 and -10.5 in LOITER. 

    However I have a question with something that scared the cr$p out of me. I tested RTL Fail Safe and setup the TX/RX accordingly. When I tested on the ground, Radio Throttle value is 1114, when turning the radio off, the throttle goes to 917 and when turning the radio back on, it goes back to 1114. So all is well. Then I proceeded to take the risk and test in real life...

    Nice Loiter going on...turn radio off....goes in to RTL perfectly....

    Then I turn the radio back on because I now know Fail safe works and my landing spot is only 2x2 meters. Nothing....the Quad does not respond to radio signals and continues RTL....I turn radio off, throttle to zero (just to make sure), radio back on, throttle to hover....nothing.... switch to STAB....nothing....switch to ALT-HOLD, nothing... ( I may have the order slightly wrong). 

    So I just watch the Quad continue its RTL and land within centimeters of its take-off point!!! Great...but why did the Quad not respond when I turned the radio back on? The lights on the RX were on. Log file is attached. In the tlog you can see at 88.2% that the throttle goes down to FAIL SAFE levels. Then a few seconds later you can see throttle (CH3) going back up again.

    Turning the TX back on, used to work in 2.8.x

    Then another funny story. Just for your amusement....I tried to dial in Rate P using CH6. My PID was set to 0.12 as a wild guess and I wanted to get it better. So I set CH6 to RATE_KP with the dial at 50%. I arm, add a little power and the Quad jump up, goes wild, flies away, does a flip, cuts the motors (I'm sure that was me in a panic), recovers, is over my car (I panic even more), climbs, does another flip disappears out of sight on the other side of my house (I panic again) until I compose myself, turn the dial to zero (which corresponded to 0.08) and carefully, but shakenllllllllllyyyyyy, land the quad safely.....

    What happened? I set the max value to 2, instead of at 50% it was at approx 1.1 instead of 0.16.... now I know the quad can do flips! Next test will be to throw her in the air and add power to see if she recovers. I bet she will!!!!!

    All in all: lots of fun!

    2013-03-16 14-15-17.tlog

    2013-03-16 14-43 2.log
  • Had a new strangeness today.   Seems that loiter won't hold when I changed the yaw (possibly coincidence).  The telemetry shows the loiter 0-1 meters from the loiter beginning point but you can see that it's moving quickly north.

    It was doing well in Alt Hold and holding Loiter until about 45% into the mission, where I switched to guided mode by selecting a point on the laptop in the flight data screen and then selecting 'fly here'. It reached the waypoint successfully. I then used the RTL button on my transmitter to get it a bit closer to home.  Of course, the RTL points the copter straight toward me, so when I turn off RTL it switches back to Loiter where I try to spin it around at 49% into the mission.  It was acting a bit weird while I was trying to spin it around, dipping one side of the copter while it was spinning.  I then switch it to Alt Hold and bring it back a bit more.   At this point, I switch to Loiter and it has the actual issue at about 52% into the mission.  It hits 0 meters to loiter home point and it seems like it no longer compensated for the wind (we had a strong wind from the south) and traveled about 50 meters before I press the RTL again, but it didn't look like it was returning properly so I released and off it was again, this time for about 40 meters.  I flicked the AltHold and back to Loiter and it held again and then manipulated the yaw, but it was looking weird again, so I flicked the AltHold and back to Loiter and it held.  I ran over to it so that I could see it better and was able to bring it back in AltHold to where I could bring it down successfully.

    I went back to my normal launching area and launched again ( because I'm a gluten for punishment :) ).  It did seem a bit twitchy but it was ok, otherwise.

    2013-03-15 17-52-16.tlog

    2013-03-15 18-11 2.log


    Troubles in Auto mode:

    I had 10 to 12 flights with stab, alt hld, loiter.. I got some additional tuning done and was really happy the way things were going, in fact so good, it thought now was the time to try a mission.. I flew 2 missions of 3 waypoints ending with land.. I set alt to 8 meters with short legs..


    1st attemp rose too high to 30 meters, aborted with stab and rth just fine..

        mistake: even tho changed to 8 m alt in the wp box, the default alt box remained checked at 40 meters.

    2nd attempt (still the alt default remained checked), the alt again rose to 30+ meters.. not knowing what is going on, I aborted this time mistakenly with RTH and rose much higher and going away from me.. Panic mode set in with mode switching and stick banging till lost power and fell..


    What I learned: "When there is something not right, there is something wrong"

    With the default altitude checked, it rules in MP and each waypoint altitude is ignored.

    Always go to Stabilize for aborting a mission.. I knew that..

    I have included the tlog and kml files (amazing). Do you see anything to the log file contributing to this event?


    2013-03-14 20-48 13.log

    2013-03-14 20-48 13.kmz

  • I'm having problems with Loiter.  I switch into loiter from a Stabilize and it holds height but immediately veers off in any compass direction.  I record the flight in MP with 3DR telemetry and when I play back I see huge discrepancies in the track on the Google Earth map.  Looks like number of satellites is ~7 and hdop is as high as 4 or 5 which is bad.  I tried a second uBlox GPS and get the same thing.  I have the GPS mounted on acrylic plastic and cantilevered away from ESC’s and motors.  Can someone look at the attached logs and point me in the right direction? 

    2013-03-14 19-32-19.rlog

    2013-03-14 19-32-19.tlog
  • Hopefully this will be quick & easy.
    The data transfer speed has reduced substantially between my APM 2.5 Mega & my computer. Same on USB & wireless link. The baud rate is OK & my APM 2.0 board works OK too.
    Is there a setting in my parameter list that'll cause this?
    I reset my boards firmware & only happened again after loading my config file.
  • Hi!

    After a lot of good flights, I have a problem. APM2.5 is a some strange state, in USB mode everything works fine, all the tests are ok, radio is recalibrated. When on LiPo, it cannot be started, esc.s are heaed only 3 times, no flashing leds. When on USB again, everything is ok, connection is ok, horizon, altmeter, sats count, ... Again on lipo, nothing happens. In setup/motors all engines are ok, and in propper direction. On Setup/Reset/Y it says rebootAPM. EERPORM erased, still nothing... It took a 10mins, I left it on lipo, still nothing...

    Only thing I have done is disconnected servos for gimbal. After reconnecting, no positive signs on lipo, only on usb connection.

    Please, help!

  • I've just begun trying to tune my HexCopter using the How to Tune 2.8.1 thread.  First I'm attempting to tune is the Rate parameters, setting the RATE_K parameters to the Channel 6 knob.  I reduced the Rate P to 0.12 from 0.15 to begin with as it seems to oscillate a bit as was able to get the oscillation out.  When I move to attempt to adjust Rate D is when I have issues.  I begin at 0.004 and fly it around without issues and I've flown a number of hours with the defualts, but when I increase Rate D, there seems to be an increased change to have the copter pitch or roll a full 90 degrees instantly and drop like a rock.  I never get the fast oscillations that the guild suggests is the stopping point.  The range of the Rate D for the knob is set to 0.000 to 0.0100,  I begin the flight at 0.004 and get it to about 0.006-0.007 before it will pitch or roll 90 degrees. 

    Should I just forgo trying to tune the Rate D and leave it at 0.0040?  If it is the Rate D increase causing the pitch or roll, it doesn't seem like a very large margin of error.

    ArduPilot 2.5 code 2.9.1

    DIYDrones HexCopter

    750Kv Motors

    4s2p LiPo 5000mAh batteries

    The logs show the AccZ out of the recommended range, as I was testing with the MoonGel, (it doesn't seem to work for me.) I'm putting back on the DuBro foam that I have on before which gave me about a 40% reduction in vibration.  Even with the DuBro foam, I've had the same issue with increasing the Rate D.  I tried to make sure I didn't have an issue with the connections to the ESCs so I soldered the motors directly to the ESCs and connected the ESCs directly to the ArduPilot board. 

    2013-03-14 18-30 1.log

    2013-03-14 18-17-27.tlog

  • Tried 2.9.1 on my rebuilt Quadcopter (APM2.0) Sonar disabled. The most steady version yet for me too !. Loiter and Alt hold is very good. Great work ! . Its been a while since I’ve done anything with it, and I have noticed lots more adjustable perimeters. When in Alt hold, in previous versions of arducopter, I could race the machine in any direction and as soon as I let go of the controls the machine used to stop almost on a sixpence. Now it seems to carry on 5 or so meters before it stops. Please could you remind me what perimeter I have to adjust?

     The only thing I really don't like about this version, is the leveling procedure. The mini USB lead moves when I turn the machine on its axis and disconnects the signal to and from the pc everytime. Guess the only reliable way is with Telemetry.

This reply was deleted.


Santiago Perez liked Santiago Perez's profile