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 –


  • Looking for a bit of help with 2 issues after updating...

    Issue 1:I upgraded my standard 3dr quad to 2.9.1 and all went fine until it came time to calibrate my radio (DX8). As this video shows the values from my radio bounce around slightly even when the sticks are still. The calibration process ends and I'm able to fly but I have to constantly adjust to stay put. I think the inputs are also making my quad difficult to tune since the values are changing. Has anyone else had this happen?

    Issue 2:

    When I enter into Loiter, power completely cuts out. All was fine for me in 2.8. Am I missing something?

    Issue 3:

    Is the altitude limit supported on all APM boards? I set a ceiling of 10 meters and enabled Alt limiting in mission planner, saved the setting to my quad and took it for a test flight. Took off fine but exceeded the ceiling - went about 30 meters high before I brought it back down.

    Any help would be greatly appreciated. Thanks.

  • My experience started with 2.81. I noticed that indoors when working in MP that almost immediately, when turning everthing on and connecting the Arducopter with the 3DR radios, the GPS would quickly acquire at least 5  satellites and within a few minutes would have a 3D fix. This amazed me, because I have a metal roof and metal siding and don't expext that food of lock indoors.  I notice thought that even though I had a 3D fix, the icon of my copter would constantly roam within a 20 meter area on the MP screen.  So even though there was  a 3D lock the position info was not very accurate. If I took the copter outside, almost instantly, it would stop roaming around on the MP screen and show its accurate location.

    So far  I am taking about 2.81.  In 2.90, this changed. The status on the GPS in MP is slow to 3D lock, and when I bring it back in the GPS seems to hang on to a partial lock.   Continued ......

  • I have been sitting on the sidelines since the weekend before last, reading all the posts and waiting before flying much until some apparent problems are solved.  The first thing I want to say is that I very much appreciate the hard work the developers are contributing, and after all, it is free and for the love of their hobby they are doing what most of us can't. I see frustration from some, who I'm sure wish they could have more confidence in their gear and I do too.  That is natural too., but it comes with the territory and we just have to be careful to be safe, and give the developers time to do the major re-write they are working on.   I think we, the recipients of this contribution of effort need to chill and help as much as we can so, I will just post some observations, from my testing of 2.90 and 2.91. to add the the reports that others have posted on their experiences. 
    Since the post is limited in character, I will do so in the next message

  • Hey great work.  I am working on my alt hold using and MB1240 XL sonar centraly mounted and arducopter 2.9.1.  My sonar and baro values are similar for the entire flight with no unusual blips.  The problem is that the quad will suddenly drop altitude and then gain altitude like crazy.  I was wondering what your Alt Hold pids might be and if you might have any suggestions that might help with the super erratic behavior when the alt hold is on.  Thanks!

  • Is there a plan to enable the telemetry data out of SR3 for 2.9.2 so that the minimOSD will work if the APM is booted up without being connected to mission planner via the 3DR Radios? I've tried setting the SR3 data rates, but it seems there are still no updates happening to the OSD until I connect mission planner via the 3DR radio. I believe Arduplane has this functionality? Changing the battery out in the field means I lose the telemetry link, which then means I need to go back to the house or car where the laptop is and reconnect MP before I can use the OSD.. It's really just the battery level that is most important to me.

    Also the ch6 tuning limits don't seem to apply correctly when set. I've tried two different boards now with 2.9 and 2.9.1 and always get a range of 0 to 1 regardless of what I have set as the limit.

  • When looking at the google earth files, in you guessed it, google earth, the traces are all -1 to -2 meters out.

    So any hovering at about head height is underneath the map. Any way to adjust this?
  • I've been following the discussions re' vibration and sonar EMI effects messing with smooth alt_hold,loiter and RTL.

    I've applied the remedies that have been suggested to correct my quad's contrary behaviour,all without success.

    It flies perfectly in stab mode,as soon as I switch to alt_hold it heads skyward at  a fair clip. I've twiddled with all the settings quoted here with little or no effect.

    I have a double sandwich of MoonGel under my APM1.4  I've added the recommended filter to the sonar,even tried it disconnected. Motors & props balanced.

    Using Xaircraft 650 value frame,850Kv motors, 11x4.7 props. Lipo 4000 3S 25c. Ublox GPS, sonar 1200 XL.

    I've attached a Tlog file (fingers crossed it's the correct one) If any of the boffins can spare the time I'd be indebted for any light shone in this black hole to save the remaining shreds of my tattered sanity.

    Regards, Gibbering Mike.

    2013-02-12 17-43-33.tlog

  • Hello,

    Just tried out Alt_Hold and it was not stable. I set the MPU6K_FILTER to 20 and there was a big difference !

    Also took a RAW log from the two flights and made a graph.

    What do you think about the vibrations with/without filter ? Does I need to add some foam ?



  • Hi, Randy!

    I have a question concerning navigation.pde and void calc_velocity_and_position() Somehow i can understand the calculation of the W-O speed since it takes a factor into account, correcting 10^7 degreefloat, converting to rad and doing a cosinus on it. But the N-S speed is just a substraction of latitudes (they come as *10^7) in degrees multiplied by the timefactor - and that gives cm/s ? I know that both parts are approximitations without earthradius etc... anyway but the N-S speed seems really strange to me. I expected instead of this:

    lat_speed = (float)(g_gps->latitude - last_gps_latitude) * tmp;

    something like this:

    lat_speed = (float)(g_gps->latitude - last_gps_latitude) /10000000.0f * RADX * tmp;     //#define RADX M_PI / 180.0f

    perhaps double instead of float on non-arduino systems.

    What is your opinion on that?


    Kraut Rob

  • Well, I am using 2.9.1... was tuning PIDs flying in my basement trying to get it right for rctimer 4215(3507) 650KV motors on 4S 12x3.8 props on Y6.  After like 20 minutes of tuning (i use 433Mhz telemetry/radio) disaster happened.  When hoovering 4 feet off the ground Y6 hit the basement ceiling in the blink of the eye. Broke props when touched beams, flipped upside down and dropped to the floor. I was not able to disarm it ... approached carefully and unplugged battery.  Review of the flight log shows it turned on RTL on it's own.  Why?  Was it supposed to be addressed?  Why it went wrong and how to prevent this from happening? 

    I put two screens together - first is normal flying just a second before disaster and the second one a second after it started RTL.





This reply was deleted.