Multiple instances of QGC for a single drone

Hi,

Premise:
I’m new to the drone world and QGC!

I’m customizing the QGC to add another widget on the fly view and I created the custom folder to override the default FlyViewCustomLayer.qml, so far so good :smiley:

Now, I’d like to satisfy the following use case:

I’d like to have multiple instances of QGC (installed on different devices) to connect to the same drone; is this possible? If so, I’d like to have an instance of QGC to be the main one (master) and all the others to be the secondary instances (slaves). The main instance should allow control of the payload of the drone and show tracks (read/write), while the secondary instances should only be able to show tracks (read-only). Is this already achievable with QGC, or a custom implementation is needed? In the latter case, what would be the suggested way to go?

I appreciate any help!

Thank you!

Hi! You will have to implement access control somewhere: either in the forwarding QGC instance, or some other forwarding application, or in PX4 itself.

This could also be done securely using MAVLink signing which unfortunately is not fully implemented for PX4: MAVLink app: Add signing support. by LorenzMeier · Pull Request #17084 · PX4/PX4-Autopilot · GitHub.

Actually, I just saw this in the docs: MAVLink · QGroundControl User Guide

If that’s correct, you can have one main QGC which forward MAVLink to others but does not allow any messages arriving from these viewers.

First of all thanks for your reply!

So, if I understand correctly, I’d have a QGC instance on a device (let’s say the master tablet) with the MAVLink forwarding enabled, and other QGC instances on other devices (let’s say the slaves’ tables) where the MAVLink forwarding is disabled. All the tables (master and slaves) are connected to the same drone. With this configuration, I’d be able to see tracks and control the payload of the drone with the master tablet and only see the tracks (without being able to communicate with the drone) with the slaves’ tables. Is this correct?

Thank you!

That’s the idea if it works as described. You won’t know for sure until you have tested it.

Yes, although technically I’d say that the slaves are connected to the master. And I don’t know if multiple connections are possible to one forwarded port in QGC, so you might have to connect one slave to the other slave, as a chain.

Alternatively you can use GitHub - mavlink-router/mavlink-router: Route mavlink packets between endpoints to distribute mavlink traffic further. It just can’t do the access control, I think.