MissionPlanner icon indicating copy to clipboard operation
MissionPlanner copied to clipboard

Gstreamer detection fails on RaspberryPi OS Buster

Open manbehindthemadness opened this issue 3 years ago • 2 comments
trafficstars

Issue details

When a gstreamer pipeline is started, MissionPlanner detects the stream; however, it presents a dialog stating that gstreamer is not setup including the options to deploy it (that don't seem to do anything).

The console log reports the following:

INFO MissionPlanner.MainV2 - AutoConnect.NewVideoStream udpsrc port=5600 buffer-size=90000 ! application/x-rtp ! decodebin3 ! queue max-size-buffers=1 leaky=2 ! videoconvert ! video/x-raw,format=BGRA ! appsink name=outsink sync=false
INFO MissionPlanner.Utilities.GStreamer - look in dir /usr/lib/x86_64-linux-gnu
INFO MissionPlanner.Utilities.GStreamer - look in dir /usr/lib/arm-linux-gnueabihf
INFO MissionPlanner.Utilities.GStreamer - look in dir /opt/mp
INFO MissionPlanner.Utilities.GStreamer - look in dir /home/pi/Mission Planner/
INFO MissionPlanner.Utilities.GStreamer - look in dir
INFO MissionPlanner.Utilities.GStreamer - look in dir
INFO MissionPlanner.Utilities.GStreamer - look in dir /gstreamer
INFO MissionPlanner.Utilities.GStreamer - look in dir /Program Files/gstreamer
INFO MissionPlanner.Utilities.GStreamer - look in dir /Program Files (x86)/gstreamer
INFO MissionPlanner.Utilities.GStreamer - look in dir bootgstreamer
INFO MissionPlanner.Utilities.GStreamer - look in dir bootProgram Files/gstreamer
INFO MissionPlanner.Utilities.GStreamer - look in dir bootProgram Files (x86)/gstreamer
INFO MissionPlanner.Utilities.GStreamer - No gstreamer found

Looking at the file system I see the following:

ls /usr/lib/arm-linux-gnueabihf | grep gstreamer
gstreamer
gstreamer-1.0
gstreamer1.0
libgstreamer-1.0.so.0
libgstreamer-1.0.so.0.1404.0

Oddly enough, when inspecting ExtLibs/Utilities/GStreamer.cs starting at line 1409 the directory search seems to be correct

public static string LookForGstreamer()
        {
            List<string> dirs = new List<string>();

            // linux
            dirs.Add("/usr/lib/x86_64-linux-gnu");
            // rpi
            dirs.Add("/usr/lib/arm-linux-gnueabihf"); <-----------
            // current
            dirs.Add(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
            // settings
            dirs.Add(Settings.GetDataDirectory());
            // custom settings
            dirs.Add(Settings.CustomUserDataDirectory);
            // sitl bindle
            dirs.Add(GStreamer.BundledPath);

I am baffled as to what the issue is here, hopefully someone can advise.

Version

Mono:

INFO MissionPlanner.Program - 64bit os True, 64bit process True, OS Arch Arm64, OS Desc Unix 5.10.103.8, FW Desc Mono 6.12.0.122 (tarball Mon Feb 22 17:35:18 UTC 2021)
INFO MissionPlanner.Program - Runtime Version v4.0.30319
INFO MissionPlanner.Program - 6.12.0.122 (tarball Mon Feb 22 17:35:18 UTC 2021)

MissionPlanner: 1.3.77 build 1.3.8110.38294

Platform

[ *] All [ ] AntennaTracker [ ] Copter [ ] Plane [ ] Rover [ ] Sub

Airframe type

Any

Hardware type

RaspberryPi 4b/arch64

Logs

See attachments above.

manbehindthemadness avatar May 17 '22 12:05 manbehindthemadness

ok so it looks like its failing a is64bit check, i must have tested on 32bit lasttime

meee1 avatar Jun 21 '22 12:06 meee1

Now that you mention it that would make sense.

manbehindthemadness avatar Jun 21 '22 23:06 manbehindthemadness