Changing mavlink version negotiation behaviour for protocol setting "2"

So it happened! Mavlink 1 no longer works for serial ports with protocol set to “2”. This has been announced… but there are lots of older devices for which the previous setting (allowing for mavlink 1 when no mavlink 2 received) was working fine. Some of them are no longer maintained. And mavlink 2 brings little in terms of extending the functionality in usual scenarios.

I need mavlink 2 for some applications (for example, STorM32 gimbals) and I also use the same serial ports for supplying the telemetry to an OSD. The newer OSDs such as Ruby FPV or Open.HD are fine with that, but I get much better range for analog video systems with minim-osd or PlayUavOSD boards based on MAX7856. Switching the output protocol between 1 and 2 is not convenient.

Why not retain the “old” 2 behaviour, possibly under another number? Unfortunately 22 is taken, but how about the next free one, e.g. 44?

1 Like

I don’t understand your issue, if the mavlink1 OSDs were still working then it was in mavlink1 mode and no mavlink 2 was being sent so why not just set it to mavlink1?

1 Like


Thanks for highlighting this. Yes, there is a slight change in 4.2 involving the mavlink protocol used in that in 4.1 even if the user set SERIALx_PROTOCOL = 2 (mavlink2) AP would still wait until it received a MAVLink2 packet before switching to MAVLink2. With 4.2 it will “speak” mavlink2 right from the start.

As @geofrancis suggests though, it is easy to get back to MAVLink1. Just set SERIALx_PROTOCOL = 1.

… and just to be clear, there’s really only two protocols.

That’s the matter of convenience. I prefer to use Mavlink 2 wherever possible, and not switch the protocol version every time I change the equipment which receives this input. Maybe it’s not a big issue but it’s always sad when things stop working. I have a mount system with the serial ports provided, and in one flight I put there an OSD with a camera and transmitter, and in another flight I use a STorM32 gimbal receiving mavlink 2.

On the positive side, maybe this issue will result in restarting the code development for the “classic” Minim OSDs? Just to replace the old mavlink library with a newer one, accepting mavlink 2?

There had been mavlink2 osd firmware out for minimosd for a long time im sure.

There is nothing stopping you making a lua script that changes that serial port parameter between 1 and 2 using either rc switch input or a button input with a switch on it.

Just look at the button demo script and the parameter set script.

“There had been mavlink2 osd firmware out for minimosd for a long time im sure.” - could you tell which one? I’ve tested Radiolink OSD, minim-extra, ScarabOSD, MWOSD, MultiOSD and I still get “no data”. OpenHD and Ruby work fine on the same port.

I’ll give a try to the lua scripts, haven’t tried them yet. Thanks for pointing this out.