3D Robotics

APM 2.0 beta released!

3689393223?profile=originalI'm delighted to announce the release of the first public beta of ArduPilot Mega 2.0. This is a significant upgrade to APM 1.02, and now delivers on full 2-way in-air communications, including real-time mission planning and autopilot control.


[UPDATE:Arduino-free code uploading added to features]


New features/changes include:

  • --Full support for the MAVlink protocol, which is now APM's default communications method.
  • --Auto-detection of GPS modules. No more requirement to tell APM what GPS module you're using--it will figure it out and configure the module appropriately!
  • 3689393150?profile=original--2-way telemetry.  Dozens of commands can now be sent from the Ground Station to the UAV while it's in the air. (see example from HK GCS at right)
  • --2-way Mission Planning. You can script and change missions in real time while the UAV is flying!
  • --Supports APM boards with the ATMega2560 chip, which has twice as much memory as the current board. The DIY Drones store will begin selling these new boards when the final version of APM 2.0 is released.
  • --Mission Planner now uploads firmware and checks for new versions online. No need for Arduino (unless you want it)!
  • --Magnetometer fully supported.
  • --Current sensor fully supported
  • --Support for the latest HK Ground Control Station and QGroundControl ground stations.
  • --Mission Planning and configuration can now be done wirelessly. No need to use USB if you don't want to.
  • --No more fiddling with a configuration file in Arduino! The software comes ready to go, right out of the box
  • --New command-line tests allow you to check failsafe operation, Xbees, radio inputs and more.
  • --New versions of HK GCS and the Mission Planner operate in MAVLink mode, allowing for wireless operation and compatibility with other MAVLink devices, including those running the Robot Operating System (ROS)


Huge props to the whole development team: Doug Weibel (project leader), Michael Smith, Jason Short, James Goppert, Michael Oborne (mission planner), Paul Mather (GCS), Lorenz Meier (MAVLink integration), Randy Mackay, Ryan Beall, Darren Corley, Joe Holdsworth, and countless others who have contributed with flight testing and bug catching!


Remember that this is an initial beta release, so there may be bugs and undocumented bits. After the beta-testing period (usually about six weeks) we'll release APM 2.0 final version, and retire APM 1.02.


Loading the code automatically:


Just download the Mission Planner and select "Upload Firmware" from the Tools section of the menu. Make sure APM is plugged into your USB port and you've selected the right port from the Mission Planner menu. Click on "Update Check" and the program will search online for the latest version of the code and load it to APM.


If you want to do a simulation with Xplane, follow the instructions below. That will soon be a firmware option with the Mission Planner, too.


Loading manually (Optional)

[UPDATE: Ignore this section if you don't want to fiddle with the code. Arduino is no longer required to load the code!]


Download the zip file, unzip it to your desktop. You will have two folders inside your APM 2.0 folder, as shown:



Make sure you're using the latest Arduino (0022). Set your Arduino Sketchbook location to the APM 2.0 folder, as shown below. You must exit Arduino and restart it for this to take effect. Within Arduino, open up the ArduPilotMega.pde file within the ArduPilotMega folder, and that will open all the other files. Before you compile, don't forget to select the right board (Arduino Mega 1280 or Arduino Mega 2560)



(Note: in the final version of APM 2.0, you will not have to use the Arduino IDE at all: the Mission Planner will load the firmware for you and check for more recent versions. The Arduino IDE will just be available in case you want to modify or inspect the code. UPDATE: this is now live)



Additional instructions:

--If you're doing flight simulation with Xplane, instructions for doing it with APM 2.0 are here.

--Make sure you're using the latest Mission Planner and HK GCS. In the Mission Planner, make sure you select APM 2.x modes (MAVLink), shown at right.


Known issues:

1) Mission Planner won't write waypoints on Port 0 in HIL mode. Instead, write the waypoints via your Xbee (port 3); remember to change the Mission Planner baud rate to 57k when using the Xbee port.
2) Uploading mission commands is still not fully documented. We'll get to that this week
3) There may be some issues with datalogs not recording. We're looking into it.

4) The manual still describes the 1.02 software. We'll change that to 2.0 during the beta test period, so by the time we release the final of 2.0 the manual is fully updated.

5) This has been mostly tested with 900 Mhz Xbee modules and the XstreamBee adapter, which work great. However, there is an issue with the 2.4 Ghz Xbee modules, which have a slightly different hardware configuration that conflicts with that adapter when sending data upstream. A short term workaround is to solder a jumper from the adapter's CTS to V+ pin. The next version of these adapter boards will include a more graceful fix.


If you find any bugs, please file a report in the Issue Tracker. The dev team will not be responding to bug reports filed in blog comments

E-mail me when people leave their comments –

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

Join diydrones


  • GCS_LEGACY is not there. I use legacy for my er9x. How to get around this ?



  • Greetings,

      Ran into a compiling error.  Fresh ArdupilotMega/libraries folders in the sketchbook.  Anyone else run into this?


    'get_log_boundaries' was not declared in this scope

    ArduPilotMega.cpp: In function 'bool print_log_menu()':
    Log:100: error: 'get_log_boundaries' was not declared in this scope
    ArduPilotMega.cpp: In function 'int8_t dump_log(uint8_t, const Menu::arg*)':
    Log:125: error: 'get_log_boundaries' was not declared in this scope
    ArduPilotMega.cpp: In function 'void start_new_log(byte)':
    Log:249: error: 'get_log_boundaries' was not declared in this scope

  • @Rana

    Don't try to run directly from the APM2.0 folder

    You must put Ardupilotmega folder and the library folder in their own folder then set sketchbook location to the new folder. It worked for me


  • 3D Robotics
    Colin: It's a weird bug in the 2.4 Ghz Xbee modules. We mostly use the 900Mhz modules, which are fine, but Doug Weibel is one of the few using 2.4 and he caught the issue, which only affects uploaded data (downstream data is fine, which again is one of the reasons it hadn't been spotted until now). Here's his report, from our internal dev list:

    "I have tested the XtreemBee pretty extensively now with both my 2.4 XBees and 900 XBees. Here is what I have found:

    Using the 2.4 GHz Pro XBees the CTS line must be held high for messages to be received
    The firmware for the 900 Mhz Xbee's has a configuration bitfield to enable a pull-up resistor on CTS. The firmware on the 2.4 does not,

    The 2.4 appears to have a pull down resistor on CTS. The current increase when I jumper CTS to Vin is about 25 mA, so I'd assume that the pull down is about 200 ohms. If you try to pull up CTS you will need a pretty small resistance value. I tried as low as 150 ohms (lowest I had on hand) and that was too much resistance.

    I would conclude that you should either document how to make a solder jumper between the CTS and 5V+ pads on the FTDI header, or add a real solder jumper on the board for this purpose. With how small you would have to make a pull up resistor I don't think the current savings would be worth it.

    Interestingly, the 2.4 XBees draw about 20 mA less current, so the 25 mA wasted doesn't push their consumption much higher than the 900s anyway."

    We're going to redesign the XtreamBee boards to do this, but in the meantime that's the workaround. Again, this is not an issue if you use the 900Mhz Xbees that have been the recommended ones from the beginning, so I think most people are fine.
  • @Chris I have checked it with xbee mission planner and qground. I uploaded the coordinates successfully. But this time the altitude values randomly became negative and changing in each upload different than I selected.
  • @Chris: Please can you expand on issue 5 about Xtremebee and 2.4ghz xbees, what does connecting CTS to V+ do? I was never able to get this to work fully and had to use a different adaptor. I would like to know more about this fix before getting the soldering iron out. Is there a thread somewhere discussing this?
  • Congratulations APM design & development  Team !

    Chris, may existing users of APM order programmed ATMEGA2560 from DIYStore, so that they can replace of their own ? 

  • Latest version should work, the APM 2.0 release was developed in close sync with the most recent MAVLink and QGroundControl versions.
  • Will the latest down-loadable version of QGroundControl work or should it be built from source code
  • 3D Robotics



    You can upload waypoints with the Mission Planner via Xbee (remember to select 57k baud). 

This reply was deleted.