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 officially giving up on this....apm no3 that i fried.....this time i had no telemetry plug in.....i just finished tuning acro and started working on stab.....and again for no reason i cannot connect to USB, and again the mux chip gets super i give up. until someone can tell why this is happening im done....2 x Arduflyers bust 1 x 3dr apm bust, so im packing it in any one after some busted boards...!!!!!!!!!!!!!!   

  • I might have my mysterious GPS problem solved. I did three things at once and need to do further testing to find out which may have solved the problem. I moved the GPS mounting to high above the APM like a NAZA. Secondly, and I think this may be the red X, I removed the Spektrum TM1000 telemetry. I think perhaps this transmitter signal might have interfered with the GPS – they were in close proximity. I also removed my 900 MHz 3DR telemetry. The quad Loiters correctly now but it still takes about one minute after the GPS lock until it becomes solid in Loiter. Within the first minute of flight it still wants to veer off. I can live with this if one or more of the fixes are truly the solution to the problem. Comments are welcome...

  • I decided to test how  increase of  LOITER_I affects wind resistance

    used two quadcopter with firmware 2.9 rc1 and latest 2.9.1
    Both devices are excellent fly (rtl and auto too).

    I usually use the following parameters:



    its are usually all right if there is no strong wind.

    then i try to increase LOITER_I to 0.5 and more

    at the 2-5 second after going in loiter mode quaid starts rapidly accelerated aside from the the wind. I made many attempts on both machines

    Finally, I tried to lift higher and wait longer.
    quaid began to pick up speed in the direction perpendicular to the wind, and the speeding up to 40 km/h overflew the arc radius 20m, then i turn it to alt_hold mode

    both quaids had different settings one using simple mode, another without it

  • Randy, Leonard,

    Any update on the 2.9.2 ???

    I believe most of the issues in 2.9.1 will get ironed out with 2.9.2
  • I'm setting up a new crab frame, similar to a TBS Discovery,

    In the ArduCopter-2.9.1 APM_Config.h file I set :




    and in the AP_MotorsQuad.cpp file I set :

    }else if( _frame_orientation == AP_MOTORS_V_FRAME ) {
    // My V_FRAME
    add_motor(AP_MOTORS_MOT_1, 54.7, AP_MOTORS_MATRIX_MOTOR_CCW, 1);
    add_motor(AP_MOTORS_MOT_2, -137.7, AP_MOTORS_MATRIX_MOTOR_CCW, 3);
    add_motor(AP_MOTORS_MOT_3, -54.7, AP_MOTORS_MATRIX_MOTOR_CW, 4);
    add_motor(AP_MOTORS_MOT_4, 137.7, AP_MOTORS_MATRIX_MOTOR_CW, 2);

    No errors on compile, just a few warnings about unused variables from other libraries.

    After loading this into my APM 2.5, the Advanced Param List showed FRAME=1.  I changed it to V in Standard Params.

    When I go into ArduCopter Level, I only have a choice of + or X for the Frame Setup.

    Where does the FRAME value get read from?  Why didn't it get set correctly, did I miss a configuration step somewhere?

    Will my FRAME=2 affect the Accelerometer Calibration when I calibrate it?



  • Hi


    Can someone look into my logs and tell me why my copter did a Runaway in Auto Mode.?

    When the Hexacopter passing approx 136m height, the fault occure.



    2013-03-19 18-33 63.log

  • 5 minute waiting period for GPS to fully synch...

    Thank you Randy et al…    As previously discussed, the GPS LOCK LED becomes solid within 15 seconds of ARMING.  If it takes longer (5 min.) to fully acquire the constellation and update the almanac, how do I know when it’s OK to launch a mission?  Can code be written in the APM to output another remote LED when the calculated position is finally resolved and steady-state?  Secondly, if the GPS location goes out in right field (literally) during a flight, can code be written to detect large jumps in position and force a flight mode change back to STABILIZE?  Thanks for everyone’s help.  APM is way cool.

  • One of the primary reasons I chose to go down the Arducopter path was for Return to Launch.   There are so many ways a flight can go wrong, you could lose your orientation, get blown off course, have an OSD mishap - whatever, but it pays to have some insurance just in case something goes wrong.

    So, I'm still in the process of running my quad through a proper shakedown, and one of those tick marks I had to check off was to get a sense for what my operational range is with 2.4ghz for control and 5.8ghz for video.  Mostly - I was curious to see how well my video link would do with just the Fatshark Attitude's built in receiver.

    For what it's worth - with a pair of home made cloverleafs - they were a matter of fact, the radio link gave out before the video did...

    Which brings me to the brown pants moment.  I hit the edge of my operational test...between the cold and the flight time in the air, I didn't want to push more than 3 min out and 3 min back...Radio failsafe kicks in and RETL is activated - no problem...

    All of a sudden, I start hearing a rapid beep coming from my transmitter - low voltage cutoff!  At that exact moment, I notice autopilot start pegging the throttle and the quad going into a wobble of death (or so I thought).  I start frantically going through my emergency checklist.

    * spotter's instructed to keep eyes on video link in case she goes down

    * telemetry's going so I have GPS coords in case it comes to that

    * grab a few landmarks

    Then I closed my eyes and said a quick prayer...I pulled the goggles off and ran over to the car for the spare battery.  I run 8 NIMH's which usually give me decent cold weather performance, and these were a fresh set, but I guess even in 32 degree weather that was too much for them.

    But man - trying to swap out little batteries with numb fingers is not an easy task!  Anyway - between me and my spotter, we both manage to get the batteries pulled and replaced, then I have to plug that f'n 3 pin header into the transmitter - again with frozen fingers.

    Just as I got it plugged in, and turned the radio on - we looked up and bam - there she was hovering 80m over our heads :)  I take back control and glide her gently for a nice landing.

    Disaster averted ! whooooohoooo!!!

    Best part - is you get a front row seat to the fun :D (ps OSD's prelease, needs some tweaking - ignore some of the weird numbers)

  • Hi guys,

    I have been trying to use RC7 and 8 for my gimbal roll and pitch control as I am using digital servos.  It does not seem to work.  RC7 and 8 are the motor outputs right?

    Best regards,


  • Failsafe issues.


    Yesterday I had a problem with (part of) my RC transmitter that reduced the range to about 100m. (I had just installed a FPV TX so this lead to a wild goose chase before the problem was found.)

    Anyway I had about 5 ‘events’ while trying to sort the problem. 2 of them were RTL as you would expect and 3 were auto mission reset. Fortunately as WP 1 was takeoff to 35m and WP2 was at same position 35m, the effect was much the same as RTL.

    A while ago on arduplane, at the limit of range, it went to loiter for a few seconds. I had set APM failsafe (RTL), no RX failsafe (other than teaching it low throttle). I did lots of tests to simulate the edge of range. I think that a brief CH3 drop triggered RTL but then random PWM on CH5 caused a mode change – could be to anything.

    My RX had a favourite PWM while it was thinking so I changed the RTL range to correspond with this. The only work around was to set an RX failsafe – CH3 low, CH5 RTL, roll, pitch to neutral.

    I think after a low CH3 triggers RTL it stays until there is some pilot intervention on the TX but unfortunately CH5 is probably also giving rubbish.


    Finally got there – How about a parameter to ignore any inputs for ‘x’ seconds after a RTL is triggered?

    I know this could be contentious with those who have had fly-aways but they could set it to zero.



This reply was deleted.


Santiago Perez liked Santiago Perez's profile