The State of MAVLink in 2021

How the MAVLink Protocol Works

A standard MAVLink v2 data frame.


The protocol flow for the Command Protocol. GCS means ground station, drone means drone.

An Addendum on Routing

The Ranting Section

Just Routing, like, the whole thing

  • Pymavlink, the simple reference Python library, assigns a master.target_system and master.target_component based on the first heartbeat it reads. That being said, you can also manually feed in your own system and component IDs so it technically works, but like the C header library it’s very low level.
  • Dronekit still has not managed to implement it in master. The issue seems stale as of last year.
  • MAVSDK technically has multi-drone support in C++ but, like DroneKit, it is one-system-one-connection. Its bindings require a (simple) workaround for multi-drone support — set the mavsdk_server port to different ports, and it’ll start separate servers, allowing multi-drone control; but again, it is still one system per connection. Its heavily abstracted design removes the concept of system and component IDs for the user for the most part.
  • We’re assigning semantic meaning to the IDs, a role that’s already fulfilled by MAV_TYPE and a decision that limits the flexibility.
  • Having two sources of component type information causes confusion. Some libraries may check the component ID instead of the MAV_TYPE, which is incorrect.
  • Multiple of the same device will have the same default component ID and require deconfliction anyway.


Simple? NO.
Simple vehicle modes.

Microservice Protocols

  • Overcomplicated
  • Scope creep
  • Not implemented consistently or properly

Camera Protocol

The CAMERA_INFORMATION message has a lot of (redundant) fields.
More fields.

Gimbal Protocol (v1 and v2)

An example where the autopilot is the gimbal manager.
An example where the gimbal is its own manager. The gimbal device doesn’t exist here because it is the same thing as the gimbal manager.
An example where a companion computer manages the gimbal device.
That’s a lot of messages.





Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Zoho Cliqtrix 2022 Finalist! — My Experience…

WWDC19: Preventing Bugs with Flawless Debugging in Xcode11

How to mine Shiba Inu using your Laptop/Desktop

Getting Image’s Color Palette in Ruby on Rails

Outsourcing is not scary — when done right.

You Clean Up House. How About Code?

Event Sourcing + CQRS: from theory to AWS — part 2

Managing Test Cases the TestOps way. Goodbye, folders!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Vincent Wang

Vincent Wang

More from Medium

Post 2: Physics Defying Bootstraps

On National IDs and ex-boyfriends

Web2 refers to the version of the internet most of us know today.

“I’m an Upcoming Artist (WooBabyTy) From Brooklyn/New York raised in Canarsie where I lived most my…