Mission Planner High Latency Protocol


I am looking to work with the High Latency protocol of the Mavlink protocol. How can I give a command from Mission Planner [MAV_CMD_CONTROL_HIGH_LATENCY] to Copter so that It sends a smaller packet over satellite?
I would also like to know whether the mission planner can make a switch between rf and the internet based on the connectivity of the rf link? e.g If it leaves the geofence location it should switch over to the satellite internet and the rest of the communication should take place via satellite internet?

I think you should implement the function yourelf in MP.

1 Like

Yepp, this needs development. But since it is a rare use case you have to implement is yourself or pay to a consultant/developer to do it.

1 Like

So, All of this is possible in the mission planner using a python script?

I don’t think. It needs modifying the MP code itself. At first glimpse it even not possible with a plugin.

There is an option for high latency connection in Qground control.

Hi @abdulrehman,
I would also like to use Mission Planner and switch between low and high latency links. I’m using Iridium SBD for my high latency link, is that what you are using?
But as the MAVLink High Latency Protocol is not supported in Mission Planner (and I don’t know enough to add it myself) I have started working on my own work around. In fact I don;’t know if ArduRover supports it either…need to check.
I have done a fair bit of work on my work around, but have more to do. In my autonomous boat I have a Cube Orange running ArduRover. I have the pretty standard SIK radio based low latency link to Mission Planner working fine. I also have a 2nd MAVLink path via Cellular 4G when the SIK Radio goes out of range and I’m still within Cellular coverage. I use @stephendade ’s Rpanion on a Raspberry Pi (serial connection to Cube Orange TELEM2 port) for that bit, along with ZeroTier network VPN. That all works fine, and I can also pickup video from the RasPi attached camera.
For High Latency though I have a completely seperate system based on Iridium SBD and two Arduino boards I have in my boat that sit between the ISBD modem and the Cube Orange.
One of the Arduino’s (Adafruit Feather M4 CAN) talks MAVLink to the Cube Orange, and the other Arduino (part of Sparkfun Artemis Global Tracker with ISBD) talks to the ISBD network and ultimately back to a server I have. The two arduinos are connected via serial on the boat.
I’m at the point where I have the 1st Arduino basically talking MAVLink to/from the Cube Orange and I have the 2nd Arduino sending and receiving some basic messages via ISBD. Next step is to get an end to end message from my server to the Cube Orange, and a response back…via ISBD etc.
I’m happy to share what I am doing if you are interested?
It’s very custom and will not be an automatic cutover, it will be up to me to choose the method based on when the boat is in range of SIK, Cellular or only ISBD.

I should be able to assist here. I’m planning to add support for the high-latency protocol and associated satellite modems.

Ardupilot and Mission Planner do not currently support MAV_CMD_CONTROL_HIGH_LATENCY. I plan to add this feature to both. QGroundControl does support it though.

According to the specification at High Latency Protocol · MAVLink Developer Guide, it’ll be up to the GCS to initiate switching between the low-latency and high-latency links.

I’d be very keen to see this - I’m hoping to add in direct support for the Iridium SBD modems.

1 Like

Hello Paul,

Thank you so much for your detailed response.
I am not working with Iridium based satellite, The one I am using is very costly and has more bandwidth but still, it’s not sufficient apparently. Also during the flight, the satellite loses the signal strength and resulting in more data loss than during in-house testing.
Could you please share how you are making the switch between RF and Cellular 4G and then finally to Satellite? In the beginning, the manual switch could also be no less by any far… I have written a python script in RSPI4 that does the communication with the mission planner and Arduipilot via simple serial connection. it works fine with 4G and I get 100% connection strength. With satellite, it gives me average strength of 40% during flight operation with full load resulting in a lot of data loss.
I feel like a plugin as mentioned above with triple connectivity with an automatic switch in the mission planner will solve everything. From RF->4G->Satellite depending on the connectivity strength for each connection. QGroundControl gives double connectivity which should not be sufficient in our case.
It is not so easy to manipulate the code of mission planner nor do I have the experience for it.

I’m happy to test with my ISBD gear, let me know if there is anything I can do to help. I have your rPanion on a Pi doing the cellular MAVLink path already too.
I will also continue to progress my existing custom work with Arduino MCU’s sitting between ArduPilot and the ISBD modem for now, as I have a bunch of other stuff built around it. I will share what I have as soon as its in a suitable shape :slight_smile:
Thanks for looking into this, I for one would love to see MAVLink High Latency Protocol working on ArduPilot & Mission Planner but I suspect there are others.

Hi Abdul,

At the moment I only use two MAVLink connection paths between Mission Planner and ArduPilot on my Cube Orange.
Path 1 = ArduPilot TELEM 1 Port <> SiK Radio <> SIK Radio <> PC USB port and Mission Planner.
Path 2 = ArduPilot TELEM 2 Port <> Raspberry Pi rPanion + ZeroTier VPN Client <> 4G dongle <> Internet <> PC + ZeroTier VPN Client and Mission Planner.

When I open Mission Planner I either connect via COM3 for Path1, as per screenshot below;
Screen Shot 2022-01-14 at 11.32.55 am

or I connect via UDP for Path 2, as per screenshot below;
Screen Shot 2022-01-14 at 11.35.21 am

There is no automatic path selection or failover, I simply choose one connection or the other.

All of my Satellite ISBD stuff is 100% independent of this and is still a work in progress.

Hope that helps,