EGLstream is not working with remote access

I am running Jetson MMAPI argus samples to control a camera connected to my Jetson Xavier. Everything works fine and I get the images. However for some application I need to access the Jetson and run my app, through a remote access. I am connecting using remote-access providers like MobaXterm or VNC, based on a ssh connection.
When I run my camera app through remote, the interface_cast<EGLstream::IFrameConsumer>(m_consumers[i]); fails to get the interface. My camera app is pretty basic and similar to sample application 13_multi_camera in the MMAPI library. This failure only happens in the remote access.

Is there any clue on how to deal with it? The remote access is pretty essential for me.
Thank you.

Hi,
For remote access, please use pure ssh environment. Certain console tools have additional setting to X and it may trigger the issue.

Well, I wish, but the exact same error happens with the ssh as well.
Forgot to mention that I have some Qt gui as well in the code, however the Qt parts works fine with no trouble, only EGLstream is the issue.
Is there any specific settings needed to be considered for ssh connection?
(with both ssh -X user@<remote_system> and ssh user@<remote_system> the error happens.

Hi,
X11 forwarding is not supported so please not set -X. Please login through ssh user@<remote_system> and run the command:

$ DISPLAY=:0 xrandr

Or try DISPLAY=:1. If you can see the display information, running 13 sample should be no issue.

Here is the output of that command:

$ DISPLAY=:0 xrandr
Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 32767 x 32767
HDMI-0 disconnected primary (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)

and the output of the 13_argus_multi_camera sample:

~/multimedia/usr/src/jetson_multimedia_api/samples/13_argus_multi_camera$ ./argus_multi_camera -n 2 -c 10
[INFO] (NvEglRenderer.cpp:110) Setting Screen width 640 height 480
Argus Version: 0.98.3 (multi-process)
(Argus) Error BadParameter: (propagating from src/eglstream/FrameConsumerImpl.cpp, function initialize(), line 89)
(Argus) Error BadParameter: (propagating from src/eglstream/FrameConsumerImpl.cpp, function create(), line 44)
(Argus) Error BadParameter: (propagating from src/eglstream/FrameConsumerImpl.cpp, function initialize(), line 89)
(Argus) Error BadParameter: (propagating from src/eglstream/FrameConsumerImpl.cpp, function create(), line 44)
Error generated. main.cpp, threadExecute:326 Failed to get IFrameConsumer interface
Error generated. /home/multimedia/usr/src/jetson_multimedia_api/argus/samples/utils/Thread.cpp, threadFunction:132 (propagating)
Error generated. main.cpp, execute:456 Failed to submit capture request

Hi,
Do you run in headless mode? Looks like there is no display device connected.

Yes, in that moment there was no monitor attached, I just ran through ssh. However even if I connect the monitor and then run through ssh, the output of ./argus_multi_camera is the same.

Hi,
13 sample has NvEglRenderer and it does not work in no-display environment. Please try 10 sample.

Of course, here is the 10th sample with remote run:

~/multimedia/usr/src/jetson_multimedia_api/samples/10_argus_camera_recording$ ./argus_camera_recording
Set governor to performance before enabling profiler
PRODUCER: Creating output stream
nvbufsurface: Failed to create EGLImage.
Error generated. main.cpp, execute:593 execute: NvBufSurfaceMapEglImage failed

Hi,
We don’t see the error on Xavier NX developer kit. Please try to replicate it on Xavier NX developer kit and share us the steps. So that we can replicate it and check.

I don’t know what was exactly happening, but it seems that EGL was using localhost:0 for display, while MobaXterm was using localhost:10.
Anyway by installing and using x11vnc package and making a vnc session in MobaXterm with the dedicated port using x11vnc, I could connect with the display with no issue.
Thank you.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.