Community
cancel
Showing results for 
Search instead for 
Did you mean: 
RKura
New Contributor I
4,113 Views

QGC / GStreamer error

Hi,

This worked over the weekend. Not today.

I followed all the steps in https://github.com/intel-aero/meta-intel-aero/wiki/WiFi-Streaming WiFi Streaming · intel-aero/meta-intel-aero Wiki · GitHub to connect the RTF with QGC on my ubuntu laptop. I could see video over the weekend. Today I get this error after starting the QGC app and before doing a gst-launch on the drone.

Settings location "/home/rohan/.config/QGroundControl.org/QGroundControl.ini" Is writable?: true

Filter rules "qt.network.ssl.warning=false\n*Log.debug=false\n"

MAVLinkLogManagerLog: MAVLink logs directory: "/home/rohan/.local/share/QGroundControl.org/QGroundControl/MAVLinkLogs"

Map Cache in: "/home/rohan/.cache/QGCMapCache300" / "qgcMapCache.db"

Orphaned log file count 0

LinkManager mavlinkStatus:channel:flags 0xea9028 1 2

qml: Serial Port not present

LinkManager mavlinkStatus:channel:flags 0xea9050 2 2

QGCMessageBox (unit testing) "MAVLink Protocol" "There is a MAVLink Version or Baud Rate Mismatch. Please check if the baud rates of QGroundControl and your autopilot are the same."

Switching outbound to mavlink 2.0 due to incoming mavlink 2.0 packet: 0xea9050 2 2

Segmentation fault (core dumped)

Over on the RTF drone I see this after the gst-launch command:

root@intel-aero:~# gst-launch-1.0 v4l2src device=/dev/video13 do-timestamp=true ! video/x-raw, format=YUY2, width=640, height=480, framerate=15/1 ! autovideoconvert ! vaapih264enc ! rtph264pay ! udpsink host=192.168.8.2 port=5600

Setting pipeline to PAUSED ...

error: XDG_RUNTIME_DIR not set in the environment.

libva info: VA-API version 0.39.0

libva info: va_getDriverName() returns 0

libva info: Trying to open /usr/lib/dri/i965_drv_video.so

libva info: Found init function __vaDriverInit_0_39

libva info: va_openDriver() returns 0

Pipeline is live and does not need PREROLL ...

Got context from element 'vaapiencodeh264-0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)NULL;

Setting pipeline to PLAYING ...

New clock: GstSystemClock

ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.

Additional debug info:

../../../../gstreamer-1.8.2/libs/gst/base/gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:

streaming task paused, reason not-negotiated (-4)

Execution ended after 0:00:00.222356206

Setting pipeline to PAUSED ...

Setting pipeline to READY ...

Setting pipeline to NULL ...

Freeing pipeline ...

Please advice.

best

Rohan

0 Kudos
36 Replies
RKura
New Contributor I
108 Views

I disabled the MAVLink router by running

/etc/init.d/mavlink-routerd.sh stop

The error went away and I can see video on QGC.

Any idea why I saw this today and not over the weekend ?

best

Rohan

idata
Community Manager
108 Views

Hi Rohan,

 

 

I'm glad to know that you were able to fix your issue! Honestly, I don't know the root of the error that cause the GStreamer to fail, there can be several reasons. If you ever encounter this error again, please let us know and we will be happy to help.

 

 

Have a great day!

 

 

Best Regards,

 

-Jose P.
RKura
New Contributor I
108 Views

Hi,

I have been getting this error again all day today on my QGC application window (on ubuntu machine):

There is a MAVLink Version or Baud Rate Mismatch. Please check if the baud rates of QGroundControl and your autopilot are the same."

Previously when I ran "/etc/init.d/mavlink-routerd.sh stop" on my Aero Intel board, the error went away.

My application is running on the Intel Aero board and is trying to setup a connection with my ubuntu laptop and send video frames over via GStreamer to display on QGC. But I cannot seem to get past the above error.

MartyG : any suggestions ?

best

Rohan

RKura
New Contributor I
108 Views

I rebooted the board and the error seemed to go away.

MartyG
Honored Contributor III
108 Views

Glad that the error went away for you.

RKura
New Contributor I
108 Views

It has come back again today

Not quite sure whats going on here. Here are my steps

I bring up the QGC app.

Run the mavlink-router stop script from the board

Run my application on the board and get the same error

Rohan

MartyG
Honored Contributor III
108 Views

I went right back to your original message and the line: Switching outbound to mavlink 2.0 due to incoming mavlink 2.0 packet: 0xea9050 2 2

Someone said in reply to a person who had that Mavlink error, in a message dated September 2016, "Did you turn on Mavlink 2.0? If so, QGC doesn't support it yet."

As I am not an Aero / MavLink expert, I do not know if that statement is true or not, but it seemed worth highlighting it to you.

RKura
New Contributor I
108 Views

I actually run the stop script on the Aero to disable mavlink. I also deleted the mavlink files so there is no chance of it getting turned on.

This is from the wiki that I follow

Disable MAVLINK Router:

Run below command (at every reboot) to disable MAVLINK Router to free up HSUART

root@intel-aero:~# /etc/init.d/mavlink_routerd.sh stop

OR permanently disable MAVLINK Router by deleting following files:

/etc/rc[1-5].d/S71mavlink_routerd

I do not do anything on QGC for mavlink.

MartyG
Honored Contributor III
108 Views

Regarding the internal data flow error, it was suggested that this error can be caused if your video has more than 2 frames, and can be fixed by using a "tee multiplexer" component.

https://github.com/umlaeute/v4l2loopback/issues/83 videotestsrc not working with gstreamer 1.0 · Issue # 83 · umlaeute/v4l2loopback · GitHub

Apologies again for not being very useful on this topic!

RKura
New Contributor I
108 Views

I am processing 80 frames at the moment. But I doubt thats the issue. The same setup worked yesterday.

MartyG
Honored Contributor III
108 Views

Sadly I can't do any more today as I have to go to bed, as it is midnight. Keep on at it - we'll get there in the end!

RKura
New Contributor I
108 Views

Goodnight.

RKura
New Contributor I
108 Views

Just a fyi..

This is the error message I get in my application:

error: XDG_RUNTIME_DIR not set in the environment.

libva info: VA-API version 0.39.0

libva info: va_getDriverName() returns 0

libva info: Trying to open /usr/lib/dri/i965_drv_video.so

libva info: Found init function __vaDriverInit_0_39

libva info: va_openDriver() returns 0

It looks like this is issued when I run the gst_element_set_state( pipeline, GST_STATE_PLAYING ); command. If I run get_element_state_get_name() I see it is NULL. Not sure why it wont let me set the state to PLAYING and give me the error.

I do not get the mavlink messages now. I deleted the mavlink files. This seems to be GStreamer/QGC related. Any idea how I can get past this ?

Note:

QGC is running on ubuntu 16.04 laptop workstation

application running GStreamer running on Intel Aero (running Yocto)

Rohan

intel_corp -> Can you comment on this ?

MartyG
Honored Contributor III
108 Views

There seem to be a large number of possible causes for the 'XDG_RUNTIME_DIR not set in the environment' error. One reason that occurred more than once was with people who were running from root. If they ran from a "normal" terminal then the error did not occur.

RKura
New Contributor I
108 Views

Unfortunately the application needs to be run from under root user.

But as I mentioned,It ran yesterday.

MartyG
Honored Contributor III
108 Views

GStreamer apparently has a test mode where you can run a test video and get debug information about whether GStreamer is working correctly. To access it, you use this instruction:

$ GST_DEBUG=3 gst-launch-1.0 videotestsrc ! autovideosink

RKura
New Contributor I
108 Views

This is interesting, I ran the pgm in the Intel Wiki at https://software.intel.com/en-us/articles/intel-aero-realsense-streaming-rgb-depth-data# _Toc467619801 Code Sample: Broadcast RGB and Depth Data from an Intel® Aero Compute Board | Intel® Software and it took showed me the same error, but also the video on QGC

root@intel-aero:/home/AeroStream/Debug# ./AeroStream 192.168.8.2

error: XDG_RUNTIME_DIR not set in the environment.

libva info: VA-API version 0.39.0

libva info: va_getDriverName() returns 0

libva info: Trying to open /usr/lib/dri/i965_drv_video.so

libva info: Found init function __vaDriverInit_0_39

libva info: va_openDriver() returns 0

I then tried the same in my application and I get the same error but no video

Is QGC or GStreamer expecting frames at a certain rate and if they dont get it fed at that rate, then no video ?

Just a FYI..

when I tried to set the GStreamer pipeline to PLAYING it got set to PAUSED. I looked at those 2 states are the same , so that seems to be okay. I am wondering if it expects a steady stream of frames and if not, does not show video.

RKura
New Contributor I
108 Views

MartyG

Got it to work

Thanks for all your help!

I was initializing GStreamer every time for a new frame (Duh!). Moved it to a init() function and now its done just one time.

MartyG
Honored Contributor III
108 Views

Awesome!