ArduCopter-3.0.1 released!

ArduCopter 3.0.1 has been released and is now available in the Mission Planner,, GitHub and the new Downloads Area.

Warning #1: Compass calibration and reducing interference is far more important than with 2.9.1b

Warning #2: GPS glitches can cause sudden and aggressive position changes while in loiter mode.  You may wish to reduce the Loiter PID P to 0.5 (from 1.0) to reduce aggressiveness (see image below of where this gain can be found in mission planner).

Warning #3: optical flow is not supported but will be back in the next release (AC-3.0.2 or AC-3.1.0).

Warning #4: loiter turns does not maintain altitude.  This bug will be fixed in AC-3.0.2.

Warning #5: This release has only been lightly tested on Traditional Helicopters.

Improvements over 2.9.1b include:

  • Inertial Navigation for Loiter and Auto meaning much more accurate control (Randy,Leonard,JonathanC)
  • 3D navigation controller follows straight lines in all dimensions between waypoints (Leonard,Randy)

         WPNAV_SPEED, WPNAV_SPEED_UP, WPNAV_SPEED_DN, WPNAV_ACCEL allows configuring speeds and acceleration during missions

  • "compassmot" to compensate for interference on compass from the pdb, motors, ESCs and battery.  (Randy,JonathanC) (Set-up video here)
  • Safety improvements:
    • simple Tin Can shaped Geo Fence
    • pre-arm checks to ensure all calibration has been performed before arming (can be disabled by setting ARMING_CHECK to zero).  (video description here)
    • GPS failsafe - switches to LAND if GPS is lost for 5 seconds
    • stability patch improvements to stop rapid climbs in very overpowered or overtuned copters
  • Circle mode improvements including "panorama" when CIRCLE_RADIUS set to zero (Randy,Leonard)
  • SONAR_GAIN parameter added to allow better tuning of sonar surface tracking
  • CH8 auxiliary switch (same features as CH7)
  • works on PX4 (some minor features still not available) (Tridge,PatH)

How to upgrade:

1. Make sure you are using Mission Planner 1.2.59 or newer (get it here)

2. Click on the MissionPlanner's Hardware, Install Firmware screen.  The version numbers should appear as "ArduCopter-3.0.1", then click the appropriate frame icon and it should upgrade as per usual.

3. Reduce the Loiter and Alt Hold PIDs if you have modified them from the defaults.  The modified PID values for the 3DR frame can be seen in the image below.

Note: Nav parameters have been combined with Loiter so do not be concerned if you can't find them.


4. Although not directly related to this release, if you purchased an APM prior to March of 2013, update your PPM encoder to the latest firmware (instructions here).

5. Try out the new version in stabilize mode first, then alt-hold, then loiter and finally RTL and Auto.

Numerous How-To videos are available:

Special Thanks to MarcoDaveC and the large number of testers on the pre-release thread who put their copters at risk during the extended testing period.  Some of their videos can be found hereherehereherehere and here.  Thanks also to MichaelO for the MP changes required for this release.

All feedback welcome.  Please put your questions, comments (good and bad!) below.

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • Does anyone know how to alter the radio input code so I can switch channel 1 for channel 2 as im using a jr tx with ppm.

    Im updating from 2.9.0 to 3.0.1. With 2.9.0 I altered the code in the radio.pde as Randy (see below) suggested to switch channel 1 and 2 around for use with jr tx with frsky ppm. This worked fine in 2.9 but doesnt seem to work in 3. I assume its something to do with RC HAL something or other but I dont really know. And Ideas on what I can alter to make it work this time?



    Hi there.  I didn't see this thread and really wasn't aware of the issue.

    The hacky solution is to modify radio.pde's read_radio() function.  This is where it copies the input from the APM_RC object to the internal "servo" objects that we use from then on.  So it looks like you could set your transmitter to mode 2 and then only roll and pitch are reversed.  You could then change the read_radio() fuction to be this.  In fact it's just the two lines in bold that have been modified slightly (CH1 and CH2 have been switched around).  If someone knows how to upload the code with Arduino perhaps they could try to make these small changes and see if it works?  Then we can make a more permanent fix for 2.9.2.

    #define RADIO_FS_TIMEOUT_MS 2000       // 2 seconds static void read_radio() {     if (APM_RC.GetState() == 1) {         ap_system.new_radio_frame = true;

      g.rc_1.set_pwm(APM_RC.InputCh(CH_2));          // reversed for JR transmitter                      g.rc_2.set_pwm(APM_RC.InputCh(CH_1));          // reversed for JR transmitter







    #if FRAME_CONFIG != HELI_FRAME         // limit our input to 800 so we can still pitch and roll         g.rc_3.control_in = min(g.rc_3.control_in, MAXIMUM_THROTTLE); #endif     }else{         // turn on throttle failsafe if no update from ppm encoder for 2 seconds         uint32_t last_rc_update = APM_RC.get_last_update();         if ((millis() - last_rc_update >= RADIO_FS_TIMEOUT_MS) && g.failsafe_throttle && motors.armed() && !ap.failsafe) {             Log_Write_Error(ERROR_SUBSYSTEM_RADIO, ERROR_CODE_RADIO_LATE_FRAME);             set_failsafe(true);         }     } }

    Remember if you're uploading using arduino to an APM 2.x you will need to remove the two "//" from the front of line 5 of APM_Config.h so that it looks like this:


  • I have one question regarding compass live calibration.
    Is it recommended that when you do the live calibration to power all the external electrical equipment during the process. This includes than all external lights, gimbal, FPV equipment and so on. I would imagine that would give better calibration but since my knowledge on this matter is none I wanted to have your opinion.

    Also does it have any affect if you do the calibration indoors or outdoors?


  • Hi Randy,

    i want to replace the barometer of APM with a new one.

    is it possible?

    theoretically should be replaced with the new i2c address in the source code and recompile the project



  • help me please, my board was broke
    it start when i'm release the gps when it's on and then the red and blue led doesn't blinking anymore
    any conclusion ?

  • Nice work guys...

  • Randy 

    I would be grateful if you could take a look at this log file and confirm my interpretation is correct.

    Is the autopilot switch modes very quickly. I was wondering is it an issue with the transmitter program, but I can’t replicate on the ground.

    Also what could be the cause of the spike in the DHOP? this is not bad today but yesterday was very bad.




    David Ardis

    2013-08-25 16-30 3.log

  • Hi Reuben,

    i checked your logs again and you are right. It seems that i checked the wrong file. It wasn't yours.

    On the logfile from you i couldn't see a voltage. Do you use the 3dr Power Module ?

    In the picture attached there are all motors and the Baro Alt. As i can see the Baro Alt suddenly stopped. Take a look to this Information

    Log Wiki

    On the Chapter Power Problems, the Graph looks like yours. So possible you have an Brown Out.

    But as i said, im a beginner in reading and analyzing Logfiles. Perhaps anyone can check it and give some Help to understand your Crash.



  • help me please, my board was broke
    it start when i'm release the gps when it's on and then the red and blue led doesn't blinking anymore
    any conclusion ?

  • Hello,

    first, this firmware flies great. Thaks to the devs.

    But I discovered a problem. If I trigger Failsafe RTL the copter is spinning around the yaw-axis?

    I have a Y6, did all callibrations and also the compassmot and have low vibrations. I did the compassmot 3 times. First it was about 110%, second time it was about 160% and the third time it was about 60%. All conditions between these were the same. Nevertheless Loiter is quite good.

    Another question, is it possible to reduce some wobble if I change the IMU update rate from 20Hz to 42Hz?


    2013-08-23 09-41 13.log

  • Hello Reuben,

    my english isn't so good and i'm just beginning to understand the log Files.

    I've attached a picture from your logfile at which you can see the Battery Voltage and the Altitude.

    Do you use an 4s Lipo for your hexa ? In this case i think you use an empty Lipo.

    At the start of the Log your Lipo has an amount of 14,9 V (3.7 per Cell on 4s).

    Perhaps i'm completly wrong but i think that u started with an empty Lipo.



This reply was deleted.