MAVLink is a very lightweight, header-only message marshalling library for micro air vehicles / drones.
MAVLink follows a modern hybrid publish-subscribe and point-to-point design pattern: Data streams are sent / published as topics while configuration sub-protocols such as the mission protocol or parameter protocol are point-to-point with retransmission.
Messages are defined within XML files, which may then be generated into appropriate source code for each of the supported languages. Each XML file defines the message set supported by a particular system, also referred to as a "dialect". The reference message set that is implemented by most ground control stations and autopilots is defined in common.xml (most dialects build on top of this definition).
MAVLink was first released early 2009 by Lorenz Meier and has now a significant number of contributors.
Because MAVLink doesn't require any additional framing it is very well suited for applications with very limited communication bandwidth. It's reference implementation in C is highly optimized for resource-constrained systems with limited RAM and flash memory. It is field-proven and deployed in many products where it serves as interoperability interface between components of different manufacturers.
MAVLink 2 source files can be generated for:
MAVLink 1 source files can be generated for:
C MAVLink Source Files (only) are auto-generated for the latest versions of all message specifications/dialects (for both MAVLink 1 and 2):
Using Generated Source Files explains how to use these libraries.
The core development team and community are active on the following chat channel:
If you have any problems using MAVLink first post them on the support channels above.
If directed by the development team, issues may be raised on Github here.
The Contributing Guide explains the contribution model and the main areas where you can help.
MAVLink is licensed under the terms of the Lesser General Public License (version 3) of the Free Software Foundation (LGPLv3). The C-language version of MAVLink is a header-only library which is generated as MIT-licensed code. MAVLink can therefore be used without limits in any closed-source application without publishing the source code of the closed-source application. See the COPYING file for more information.