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 –


  • Hello can anyone tell me if it is possible to load the previous version 2.8.1 after upgrading to 2.9.1 in the mission planner, instead of the alternative of compiling the source code and loading from the cli? I ask this for a couple of reasons, firstly the mission planner was updated to include the accelerometer calibration for the release of 2.9. I assume this would be incompatible with earlier codes like 2.8.1 which use the level command only and accel z inertial is not enabled for the throttle. Secondly I am not sure if the mission planner would be able to reload the correct firmware to support 2.8.1 having upgraded to 2.9.1?

    I am stuck at the moment like a few who had crashes (including myself on two occasions) secondary to accuracy / positional issues related to the GPS filter routine in 2.9.1 used in conjunction with the MTK GPS v1.9. This problem results in auto and RTL modes being unrelaible if the MTK with v1.9 is being used instead of the LEA Ublox GPS. Typical signs are failure to stop at waypoints, erratic behaviour e.g in GPS dependent modes like loiter if a delay in GPS data is experienced and inability to return home to launch point. In my case it was some 70 meters short.

    So rather than risk loading v1.9 on my spare MTK and using this with 2.9.1 I want to find the best way to revert temporarily to 2.8.1 and use the standard v1.6 library in the code with another new MTK I have on this version.

    When I receive my new Ublox GPS I will go back to 2.9.1. My understanding at the moment is there is no work being done to fix this problem with 2.9.1 and the v1.9 MTK GPS. It is certainly not even posted as a warning at the start of this thread which is a little disappointing. Do not get me wrong 2.9.1 is a significant step forward and the ALT Hold in particular with good tuning and minimal platform vibration is superb and a testimont to the good work being done by the developers and beta testers. I will miss 2.9.1 while I have to fly on 2.8.1 to avoid my copter flying away and not being able to RTL as I want to continue using auto mode.
  •  I just replaced the foam pad with moongell and had a perfect flight with stab althd and loiter....When I went to check raw acc x,y and z, I get this nonsense graph..This has happened sporadically before..Sometime graphing these functions works, sometimes doesn't.. "Set scale to default" doesn't change it.. Just curious for comparison sake..



    2013-03-09 15-31 1.log

  • Hi Randy, Here is my raw log file. Do you feel that there is too much vibration? Not very sure how to interpret... I have the APM 2.5 mounted on the o ring suspension. Please help interpret. Also, as I had told you earlier, my COMPASS_OFS_Y keeps increasing. I had reset the same to 0 before flight. There is no interference from any metal or power wire whatsoever as I have taken extreme precaution to mount the APM. Now it is sitting at 166. Maybe we need some more filtering from the ESC and MOTOR noise in 2.9.2/3

    2013-03-10 01-22-34.tlog

  • Hi Randy,

    Here is my raw log file. Do you feel that there is too much vibration? Not very sure how to interpret... I have the APM 2.5 mounted on the o ring suspension.


    Please help interpret. Also, as I had told you earlier, my COMPASS_OFS_Y keeps increasing. I had reset the same to 0 before flight. There is no interference from any metal or power wire whatsoever as I have taken extreme precaution to mount the APM. Now it is sitting at 166. Maybe we need some more filtering from the ESC and MOTOR noise in 2.9.2/3

    2013-03-10 01-22-34.tlog


    I was flying with a camera and found the YAW rate in AUTO to be too high. If there a way to cut the max yaw rate in half for AP missions?


  • Hi Guys

    to say that i am completely inpressed with 2.9.1 would be a understatement of stab,alt hold and loiter dialed in super nice.

    however im puzzled, tried some auto mission but the apm didnt like me very much, turns out my Mag offsets where all over the place, so i decided to move my apm from the away from the ring of death ( the circular + and _ tracks on the power distro of a 450 clone.) 

    quick unplug of 1 wire (PPM) removed the top cover of the frame. carefully pulled the apm from its mount (kyosho vibe gel) put the top plate back stuck apm down added another plate ontop for battery.

    pop outside to test, and she connected to mission planner no probel but was not level, so i thought may have just been the ground. test flu and indead needed to add stick input to keep her level,

    redo level command, and it keeps failing, no i cannot even connectt o APM when connecting it stalls at "getting param system id computer id?

    has any one ever seen something similar know how to fix this...

    i can even see the messages coming thru on the CLI but connot connect to do a reset or anything//

    super frustrated

  • Hi all,

    I'm flying a quadcopter with APM2.5, an uBlox gps module, an external compass and the 3dr 433 mhz telemetry set. I placed the speedcontrollers and my telemetry set as far away from the gps and compass as possible. The result is low magnetic interference. The quad performs very well flying missions.
    The only drawback is limited telemetry range of around 100 m in open field. I expect this is caused by bad antenna placement. I'm thinking about placing the telemetry antenna directly next to the APM controller stack on top of my quadcopter, but am afraid of the effect it could have on the performance. I have the following question: did somebody test or experience problems with their gps of compass when the telemetry antenna is placed close?

    Best regards,

    Jan Willem
    The Netherlands
  • I wanted to give another cheers to the AC dev team for 2.9.1. I made some minor changes to my 450 quad and got my best ever alt hold results with it last Sunday. Here is video to show how well it worked in a fairly broad mix of dynamics:

    The latter part of the video shows my buddy's 2.8.1 quad for comparison. All I did was swap out the gws 9050hd props for APC 9x4.5e, increased rate_P from 0.9 to 1.1 (due to higher prop mass), and sealed most of the gaping holes in my 2.5 case with 'Ace Plastic' tape. This is with stock alt parameters on a 450, cool. I edited the video for some close friends who have witnessed my quad RTL many times; so the part where I tested RTL that day was left out. However it was a 'very good RTL'... landed softly and right on the spot, after a picture perfect vertical descent just 3 feet in front of that row of 40' tall pine trees, with ~5mph wind blowing straight in to them. It was an impressive show of precision for everyone watching. I realistically can't ask for more from my quad, but at the same time I can't wait for 2.9.2rc.

    BTW, I apologize for the annoying OSD layout problem. It has since been fixed. ;)

  • Another aspect about reducing vibrations to consider is the actual design of the prop.  Primarily the stiffness.  Wood versus Nylon versus carbon fiber.  I went from APC 12X3.8 to Xoar PJP-N 12X4 which improved my vibrations tremendously.  I noticed while running a 3s using APC12X3.8, Vibrations were within APM limits but going to a 4s, my vibrations started creeping out of the limits.  I imagine the angle of attack was changing much more significantly with the higher rpm.  Don't get me wrong...APC props are great and for the price you can't get a better prop.  The flex of APC adds a different characteristic in flight as well.  You just have to weigh your pros and cons when it comes to prop choice.  Wooden props sold me on the reduction of vibrations alone but they do behave differently in the air than the APC props.

  • 3692644346?profile=original3692644415?profile=original3692644492?profile=originalI had used foam isolation from the beginning, but today I looked at the isolation to see if I could improve it without a major change. I had the apm sandwiched between two layers of 1/4" foam. I had  3/4" standoffs separating the plates and it seemed that the foam was compressed too much and the apm was somewhat solid. I changed the standoff two 1" and it appears from the logs that the accelz vibration was decreased by about 50%. You can see the logs before and after this minor change as well as my quad layout in the attached pictures. One other change I made was to raise the bottom plate that the apm sits on 1". Originally I had it sitting on the foam on the metal plate and I had a lot of deviation on the magnotometer. That one inch took care of that problem!

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