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 –


  • I now have many auto missions with my new H frame quad and 2.9.1 is fantastic but I have been experimenting with the more exotic mission planner waypoint functions.

    It probably me but the only ones that seem to work as advertised are waypoint, do change speed, loiter time and land.

    I was hoping ‘loiter turns’ would circle nose to center to enable filming of a selected point. For that matter circle mode doesn’t seem to work either, more like a drunken loiter. Have tried different radiuses but it seems to manage about ¼ turn and get stuck.

    I need the quad to reach a certain height to clear treetops before proceeding but ‘condition change alt’ seemed to get ignored.

    Like I said it probably me but any advice appreciated.

    Quick video of simple mission at only 2m/s



  • Having trouble uploading 2.9.1


  • Test with ArduCopter 2.9.1. Was in Loiter and switched to Land. There was some jerkiness in loiter but it is pretty good even with my non-updated MediaTek GPS (the update process looks a bit daunting and I'm working on getting my uBlox replaced...never worked for some reason). Altitude hold is awesome especially with the modification of the THR_MID parameter since you don't get the jumps/sinks when switching in and out of ALT.

    I have the 880 motors with 11 inch props installed. The video flips around in the end because I was worried that I would hit the pole but it cleared it. This release is looking really good and can't wait to try it with the uBlox. Thanks!

  • (i'm thai maybe misstake in tense) I have problem about altitude . My altitude show -21474836.00 m (i used sonar LV) .Why happen this case .

  • Randy I finally loaded 2.9.1 and after calibrating everything managed to get in two flights this afternoon.  For a first time after replacing my APM1 with APM2 and also flashing my MTK GPS to 1.9 it was not too bad.  The wind was slight to moderate and gusting a little at times.  In stabilize mode I had to put a lot of effort to keep my quad stable in the gusting wind so I expect my trial PID's for the Jdrones frame with 880Kv motors and 12x45 props is off the mark.  I had hoped someone might share some settings with bigger motors but I guess I will have to work it out myself.   I cannot see my quad flying anything like the videos posted here any time soon. But I like a challenge.  I am amazed though at the pilot skills to be able to fly so far away (like in the 2.9 video acro and stab modes) and keep the arducopter under such good control manually flying with yaw and other controls reversed on the return legs to home. 

    On my second flight I tried loiter with 2.9.1 and the MTK with 1.9 code.   Even with the wind gusting between 5-10 knots my quad held on station very well (in about a 5-10meter square) except I had to manually control the throttle other wise the quad would hit the ground quickly.  Still more development before the code will allow me to take my hands off the controls in loiter for a few seconds, but I am impressed.  Great job Dev team.

    Unfortunately I only have a telemetry log, no other logs were retrievable from the APM after my flight despite setting them up and having nothing prior stored (full erase and reset before loading new code).  I did notice there is an issue with the auto magnetic declination process too (See attached graph) for my region the magnetic declination setting manually is 12.23 but the auto method only managed to set it to 0.2 I will just set it manually based on this result.

    In case anyone is interested my test PIDs for 880Kv motors, on a Jdrones quad frame are as follows: 

    STAB Roll & Pitch:  P 3.0, I 0.0, IMAX 5.0

    Stab Yaw: P 4.0 I 0.0 IMAX 8

    Angular Rate Roll &Pitch: P 0.09 I 0.06 D 0.0040 IMAX 8.0

    I made no other changes (all values are defaults except the ones I posted here)

    Rate Roll Pitch:

  • Using Mission Planner 1.2.33, Arducopter 2.91 firmware on APM2.5 & 8ch serial PPM input at ch1, after putting pink on ch 2&3, flight mod change is not displayed in mission planner however with same setup when I uploaded firmware Arduplane 2.68 then mod change is very well displayed in the MP1233.

  • Did a run with about 8 WPs and the copter finished successfully.  When it completed the waypoints, we attempted to use the RTL from the Actions tab in Mission Planner.  At that point, all motors shut off.  About 5 meters above ground they started back up, but it was too late. 

    I've attached the telemetry logs from Mission Planner for analysis.  The logs on the ArduPilot are blank for that mission, but there are logs from previous missions doing the same day.

    Hexcopter with the uBlox GPS and no sonar, running Firmware 2.9.

    2013-02-02 12-48-29.tlog
  • Guys sorry to ask for some more help but I am moving from an old code (circa 2.1) and need some suggested starting point for the parameters on a jdrones frame with 880KV with 12x45 props. I used to use P values for STAB Roll and Pitch of 3.0 down from 4.5 and increase I's to 0.10 I have not had much success with Tuning loiter in the past so A good suggested PARms file for the larger 880 motors and 12x45 props with the current code would be appreciated. Also is there a reference table I can look at to make sure I have the correct default values at the moment for 2.9.1 which are used for all 3DR frame testing? Cheers
  • Speaking of THR_MID I am going to ask a dumb question hear but is this set by any chance on the final radio calibration step? I was setting up 2.9.1 last night for test today and at the end of the Radio Calibration in the Mission Planner you are asked to centre the sticks (both I assume) but also a contradictory throttle down. I see two ways to interpret this 1. both sticks are centred and the throttle trim is all the way down or 2. One stick is centred that does not contain the throttle and the one with the throtte is down? (sorry wrote this for Mode 1 & 2). Perhaps I over think things but I wondered if this final centring instruction is cationary or actually transfers mid point values to APM including (if the throttle is centred) the THR_MID value or some other critical data point for the calibration?
  • Hi,  I installed 2.9.1 today on 2 different multicopters both with apm2.5's. On one I had a small problem. After flashing, I erase the eeprom. I went to cal the radio while still hooked to the usb. I never could get the rdio (green bars) to respond so I could not calibrate. I had restart the MP, and rebooted the apm several times. I even reboot the PC. It never did work, the bars would flash green for a second then go gray.  I was able to cal everything with a lipo hooked up through the 3dr radio telm, but not through the usb. I never tried with the lipo and usb.

    The first quad I updated to 2.9.1 had no problem, well now that I am thinking, I am not sure if I tried to cal the TX using the usb but I think I did.  the quad I had not seen any problem with has a frsky rx and futaba radio. the quad that had the problem uses a dragon link rx and the radio is a x9 flashed with 3rd party firmware.

    Everything is good for me now but I thought I would report what I saw.



This reply was deleted.