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 –


  • T3

    How do I perform the new accelerometer calibration with my Hex?  The Quad stands nicely on it's sides since it has a square shape, but my Hex is more like a wheel.  Can I hold it up by hand or should I get a bunch of pillows?

  • Hi all,

    After a lot of testing anti vibration measures I think my accel Z graph is looking good and I started testing altitude hold. When in altitude hold my quad slowly descends. The first 10 or 20 seconds it stays at the desired height and then it slowly drops. In between it tries to reach original height but after a minute my quadcopter is about a m lower then the beginning.

    Attached to this message are two images. The first with a detail of the accel data. The second is a detail of some altitude hold related data. Furthermore the logfile of the last flight is attached.

    I have the following questions:

    1. Are the accel data good enough, or should I try reducing vibrations any further?

    2. Looking at the altitude hold related data it appears if my quadcopter stays at the right height, but in practice it isn't. Did I analyse the right data? What can I do to improve on altitude hold?

    Best regards,

    Jan Willem

    The Netherlands


    2013-02-21 18-19 23.log

  • Hello All

    I hope someone can help me.  

    I have erased the memory several times, on my APM 2.5+ runing 2.9.1, and done a re-config but two terms keep coming up blank.

    The two terms are under Thrust Rate and show up as below

    Thrust Rate         P  Blank<------------

                               I   0.000

                              D  0.2000 

                        IMAX  Blank<-------------

    What would be the best values values to start with on a over powered Hexa?

    Thanks in advance for your time.


    Steve Haynes

  • Is there an explanation for the mediatek update process on the apm2.5 and direct connect gps unit somewhere?

  • In ArduCopter 2.9.1, my wp_radius changes values randomly without my command. This usually happens after I upload a new waypoint. Is this normal? If I don't catch it before auto flight, the aircraft will circle around the waypoint indefinitely.

  • Today i noticed that the metal grounding plate (with ublox sticker on) on the reverse side (other side to antannea)

    had come off. 

    Was wondering if this part was necessary and whether it had to be on there to safely use the gps?

    If not can it be repaired as it seems like there are 6 small tabs that have snapped off and I'm not sure what to do.

    I don't want to spend £60 on a new one.


  • Hey randy
    I just found out that my compass is no good. Cli says compass not healthy.
    Will I still be able to run 2.9.1 or is there any way to fix this?

  • Randy replied to their discussion "ArduCopter 2.9 / 2.9.1 released" on DIY Drones





    ���� Ok good news.� Loiter is a bit fidgety.� That will go away with the inav loiter & waypoint changes coming in 2.9.2.� Until then the best you can do is reduce the Loiter Rate P.


    That's sorted it thanks Randy.

    I am using the channel 7 option to trigger a camera, is there a way to turn off and on the sonar using any other channel, if so how do I do that? At present I am just turning it off via deselecting it in the MP config section when I know I will be operating over rough terrain and don't want it bobbing up and down. Works a treat over flat ground, but can't handle lots of shrubs or sloping ground.

  • Hello!

    Seems that everything works perfect on my 2.91, quad weights about  2kg (full equipped) , since Randys recommendations were realy exact. WPs, RTL, loiter, alt_hold, guided mode, even throttle failsafe, uppon radio-off. Stabilize mode is so smooth, loiter and alt_hold are a bit shaky, which could probably be fixed by some additional tuning of thr_acc& P params. With filter_imu6k still @ 0, by default. Today, I will try it on 20, as recommended, so we shall see the difference. Gimbal will be tested as well, a low budget version... 

    GREAT JOB Guys! Who knows what v2.92 (or v3) should be like!!!

  • I must have done something stupid. I had a few flights with 2.9.1 which were great. Alt-hold was good, managed to get the vibrations right down. Tuned Roll-P a bit. Setup to Ch-6 tune Roll-D and had a very rapid flip on take-off. Suggests I screwed up ch6 part, but it looked fine to me in Mission Planner.

    Its a quad, rc-timer framer, 1000kv motors, APM2.5. Log attached. Any ideas?

    2013-02-21 08-49-21.tlog

This reply was deleted.


DIY Robocars via Twitter
Apr 27
DIY Robocars via Twitter
Apr 27
DIY Robocars via Twitter
RT @f1tenth: Sliding (autonomously) into the weekend like ... 🤖😎 #f1tenth #robots #AutonomousVehicles @OpenRoboticsOrg @NVIDIAEmbedded @Aut…
Apr 25
DIY Robocars via Twitter
RT @chr1sa: One of the problems with autonomous car racing is that watching software drive is not a very exciting spectator sport. To help…
Apr 25
DIY Robocars via Twitter
RT @SmallpixelCar: Replaced AGX Xavier with @NVIDIAEmbedded Jetson Xavier NX. Now both cars look fast and clean
Apr 25
DIY Robocars via Twitter
RT @chr1sa: Yesterday we had a record number of competitors (36) in our monthly @DIYRobocars virtual autonomous car race. We kept it going…
Apr 25
DIY Robocars via Twitter
Apr 16
DIY Drones via Twitter
RT @chr1sa: After more than a year of only virtual races, @DIYRobocars returns to the newly renovated @circuitlaunch on May 22 for the resu…
Apr 11
DIY Robocars via Twitter
RT @DAVGtech: And now available with LiDAR 🔥
Apr 11
DIY Robocars via Twitter
RT @Heavy02011: #VirtualRaceLeague: @DIYRobocars Race #9 - #ParkingLotNerds #thunderhillracetrack, CA Join us for the next race April 24th,…
Apr 11
DIY Robocars via Twitter
RT @DWalmroth: Weather's finally cooperating, looking forward to racing 1:10 scale autonomous cars outdoors again! @diyrobocars, @NVIDIAEm…
Apr 7
DIY Robocars via Twitter
RT @AIDRI_: I finally succeeded in optimizing the trajectory and speed of a car on a #racetrack. Next step: implement a 2d controller and…
Apr 7
DIY Robocars via Twitter
@jetdillo @circuitlaunch Actually the second *in person* event in a year. We do virtual races every month
Apr 2
DIY Robocars via Twitter
Update: we're moving it back one day to Sunday (the 4th) at 11:00am instead
Apr 2
DIY Robocars via Twitter
@GrantEMoe @circuitlaunch Update: we're doing it on Sunday (4th) at 11:00am instead
Apr 2
DIY Robocars via Twitter
RT @chr1sa: Maybe we should have a mini @DIYRobocars race in our lower school's playground
Mar 29