Spreadsheet of mavlink commands from ardupilotmega.xml and common.xml

In an effort to get my hands around the mavlink commands that can be called in a mission, I’ve compiled a list of all of them from ardupilotmega.xml and common.xml. And have made a few notes.

I’m curious about these commands because I was surprised that when a few I tried using the Mission Planner “unknown” waypoint technique - were unsupported and Mission Planner wouldn’t upload them. (Even though Mission Planner was able to translate the “command id” to the name of the command.)

And I think it’s curious that command id 201 (mav_cmd_set_roi) is deprecated and replaced - but still used and supported by Mission Planner and ArduPilot.

My understanding is that the copy of common.xml on the ArduPilot GitHub repository is an ArduPilot specific fork. It appears that the fork modifications may have two components - added and/or changed mavlink commands and messages - and the #include of ardupilotmega.xml.

It’s interesting that only 5 commands in ardupilotmega.xml appear to work. The rest, 42000 - 43002 look like they’re geared for the 3DR Solo - and Mission Planner won’t upload them. (I tried most of them - but not yet all of them.)

Anyway - in case anyone is interested, I thought I’d upload a PDF of my spreadsheet so far. I’ll post updates as I collect more information.

Check out Mavlink.io
The site has everything you need to know about the commands and the dialects

Yes, its a good resource - but ArduPilot only supports its own dialect of MavLink. So it’s not possible to tell from the Mavlink.io website which ones apply to ArduPilot, and which ones do not.

Also the ArduPilot dialect has commands and messages not in the standard MavLink.

Here’s the output of the following command for the current master branch.

~/ardupilot$ grep -or --include="*.cpp" "\w*MAV_CMD_\w*" *

If the command appears in this list under the common libraries, it should be supported by all vehicle variants. Also, for example, if it appears in the ArduCopter subdirectory, it should be supported by ArduCopter.

I have yet to find a case where a supported command does not follow the parameter structure listed at mavlink.io.

If you need to see how a particular command is handled, this list should point you to the specific file where that happens.

Mavlink_Commands.txt (44.2 KB)

1 Like

Thank you for contributing to this thread. Yep - grep is a handy tool.

One of the challenges in getting Ardupilot support is the expectation of user knowledge and experience. I imagine that if knowledge of UNIX commands and Python programming were a pre-requisite to using Ardupilot successfully, the user base would be smaller.

As someone with decades of I.T. experience, I get it that software development by volunteers for opensource software that is totally free is not an environment conducive to rigorous documentation. That creates a tightrope for support volunteers and users who wish to use more advanced Ardupilot functions - and are unable to explore the code. It would be interesting to know how many Ardupilot users have GitHub accounts and know what a pull request is.

Dedicated volunteer support persons such as yourself do a magnificent job walking this tightrope.

Meanwhile, while I explored Ardupilot mavlink commands, it was good to learn that Ardupilot maintains it’s own fork of mavlink, and has a supplement to it with those commands contained in ardupilotmega - which now only has 5 supported mavlink commands.

It will be interesting to see how Ardupilot evolves over the next 10 years.