Swarm communication for PX4 / MAVLink


There has been interest in swarm communication via MAVLink. This requires two ingredients:

On the software side we don’t need immediate changes:


Thanks @LorenzMeier for opening this discussion. I checked the code you pointed to in mavlink_main.cpp and I have the following questions/comments.

  • I know that one can configure the secondary telemetry port using the SYS_COMPANION parameter using QGC. It has few more options than the one in the link you provided. I saw these options defined for the SYS_COMPANION here. Are these related ? Or A new parameter would be introduced if the swarm mode would be on the main telemetry link?
  • I believe that the swarm mode should be mainly on the main telemetry link, e.g. TELEM1, which will give a chance for a companion computer to be connected to the secondary link TELEM2
  • If the swarm mode would be on the TELEM1 link, it would be convenient to have it reconfigurable through QGC. Is this currently supported by any means? I did not see a parameter to configure TELEM1 in QGC.



Would need a new parameter (e.g. SYS_TELEM). But for now this can be all hardcoded on a branch - the important thing is to collaborate on the radio setup, add functionality and more importantly, documentation.


To share my experience, 2.4Ghz & ESP combination are very unreliable in swarm communication.
Drone communication is disconnected when WiFi’s strength was low. The low strength mean just 5m between drone and AP. In my opinion, we may need a new model not a subscribe-piblish model for real-time communication with drones. In my case, exist model is unreliable in 2.4ghz & ESP.


I think we will need to do some calculations in order to know the maximum payload which the single module connected to QGC (e.g. 433Mhz telemetry module) can handle before it saturates in order to have stable link to all drones in a swarm. After that, I guess we can either:

  1. set the minimal set of of MAVLink messages, and then find the maximum number of vehicles that can be on the system, or
  2. set a maximum number of vehicles, and then determine the max set of MAVLink messages that can be accommodated

I believe the first option is more appropriate as it is important to specify the minimal (most important) set of MAVLink messages to be communicated.

Let me know if that makes sense to you.


I would also look for LoRa modules like this one: https://www.adafruit.com/product/3179 - I’m sure there are existing implementations that already handle MAVLink.


Will “SWARMAV” be based on MAVLink 2.0?

And, will the communication between vehicles be encrypted?


@Al_B Encryption depends on the link. MAVLink 2 does already provide authentication, which makes the communication tamper-proof.

@Mzahana Just found this module as well: http://www.robsense.com/swarmlink-en.html


So now there is a way to implement a swarm in a simulation environment via mavlink without using a central station?


There are plenty of Radiocraft’s dataradio modules for various bands including high power, TinyMesh and AES128 encryption options. The board replacing PixRacer’s ESP8266 is ready but not yet tested with Radiocraft’s module installed.


Thanks for recommending SwarmLink, the link is updated, please find it here:


The SwarmLink is ready-to-use radio gateway for controlling multiple drones with one computer.

The link was updated again:

1 Like