Nvcompositor fails with more than three nvarguscamerasrc inputs

I’m running an Xavier NX with Jetpack 5.0.2 with the Seeed A205 carrier board. I’m restricted to 5.0.2 due to driver compatibility issues w/ the carrier board. I have four IMX219 cameras attached to the board currently. I’m able to view and stream each camera individually. However, when I attempt to tile the four camera feeds into one video stream using nvcompositor, the framerate goes down and one of the cameras fails.

Here is the pipeline I am using to composite the four cameras:

gst-launch-1.0 \
nvcompositor name=comp  \
sink_0::xpos=0 sink_0::ypos=0 sink_0::width=1920 sink_0::height=1080 \
sink_1::xpos=1920 sink_1::ypos=0 sink_1::width=1920 sink_1::height=1080 \
sink_2::xpos=0 sink_2::ypos=1080 sink_2::width=1920 sink_2::height=1080 \
sink_3::xpos=1920 sink_3::ypos=1080 sink_3::width=1920 sink_3::height=1080 ! \
nvvidconv ! \
nvv4l2h264enc ! \
rtph264pay pt=96 config-interval=1 ! \
udpsink host=192.168.1.171 port=7331 sync=0 \
nvarguscamerasrc sensor-id=0 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
comp.sink_0 \
nvarguscamerasrc sensor-id=1 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
comp.sink_1 \
nvarguscamerasrc sensor-id=2 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
comp.sink_2 \
nvarguscamerasrc sensor-id=4 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
comp.sink_3

Again, I am able to view three out of four of those cameras on the client end over the network. The udp stream works. I am also able to view each camera on the server and on the client over my network individually. However, one quadrant of the video is black, and gstreamer seems to throw an error on server console. Here is the output:

Setting pipeline to PAUSED ...
Opening in BLOCKING MODE 
Pipeline is live and does not need PREROLL ...
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:754 Invalid camera device specified 4 specified, 3 max index
Setting pipeline to PLAYING ...
New clock: GstSystemClock
GST_ARGUS: Creating output stream
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3280 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3280 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 2 
   Output Stream W = 1920 H = 1080 
   seconds to Run    = 0 
   Frame Rate = 29.999999 
GST_ARGUS: Available Sensor modes :
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
GST_ARGUS: 3280 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3280 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

CONSUMER: Waiting until producer is connected...
GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 1 
   Camera mode  = 2 
   Output Stream W = 1920 H = 1080 
   seconds to Run    = 0 
   Frame Rate = 29.999999 
GST_ARGUS: Available Sensor modes :
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
GST_ARGUS: 3280 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3280 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1640 x 1232 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 2 
   Camera mode  = 2 
   Output Stream W = 1920 H = 1080 
   seconds to Run    = 0 
   Frame Rate = 29.999999 
CONSUMER: Producer has connected; continuing.
CONSUMER: Producer has connected; continuing.
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
Redistribute latency...
NvMMLiteOpen : Block : BlockType = 4 
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4 
Redistribute latency...
H264: Profile = 66, Level = 0 
NVMEDIA: Need to set EMC bandwidth : 2872000 
NVMEDIA: Need to set EMC bandwidth : 2872000 
NVMEDIA_ENC: bBlitMode is set to TRUE 
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:09.947933131
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
Freeing pipeline ...

Thanks in advance!

Formatting the output here helped me see the printed error:

Any thoughts on what to do about this? Driver related maybe?

Thanks!

Rolled back to jetpack 4.6 and was able to get the following pipeline to work:

gst-launch-1.0 \
nvcompositor name=comp interpolation-method=5 \
sink_0::xpos=0 sink_0::ypos=0 sink_0::width=1920 sink_0::height=1080 \
sink_1::xpos=1920 sink_1::ypos=0 sink_1::width=1920 sink_1::height=1080 \
sink_2::xpos=0 sink_2::ypos=1080 sink_2::width=1920 sink_2::height=1080 \
sink_3::xpos=1920 sink_3::ypos=1080 sink_3::width=1920 sink_3::height=1080 ! \
nvvidconv ! \
queue ! \
nvv4l2h264enc iframeinterval=1 maxperf-enable=1 profile=4 bitrate=1000000 ! \
rtph264pay pt=96 config-interval=1 ! \
udpsink host=192.168.1.92 port=7331 sync=0 \
nvarguscamerasrc sensor-id=0 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_0 \
nvarguscamerasrc sensor-id=1 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_1 \
nvarguscamerasrc sensor-id=2 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_2 \
nvarguscamerasrc sensor-id=3 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_3

Obviously this is less than ideal, though.

hello Sealfoss,

could you please have a try with MMAPI sample, such as 13_argus_multi_camera.

Hi Jerry, after reinstalling jetpack 5.0.2, I was able to get the following command to work:

gst-launch-1.0 \
nvcompositor name=comp interpolation-method=5 \
sink_0::xpos=0 sink_0::ypos=0 sink_0::width=1920 sink_0::height=1080 \
sink_1::xpos=1920 sink_1::ypos=0 sink_1::width=1920 sink_1::height=1080 \
sink_2::xpos=0 sink_2::ypos=1080 sink_2::width=1920 sink_2::height=1080 \
sink_3::xpos=1920 sink_3::ypos=1080 sink_3::width=1920 sink_3::height=1080 ! \
nvvidconv ! \
queue ! \
nvv4l2h264enc iframeinterval=1 maxperf-enable=1 profile=4 bitrate=1000000 ! \
rtph264pay pt=96 config-interval=1 ! \
udpsink host=192.168.1.92 port=7331 sync=0 \
nvarguscamerasrc sensor-id=0 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_0 \
nvarguscamerasrc sensor-id=1 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_1 \
nvarguscamerasrc sensor-id=2 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_2 \
nvarguscamerasrc sensor-id=3 tnr-mode=2 tnr-strength=1 wbmode=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! \
queue ! \
nvvidconv ! \
'video/x-raw(memory:NVMM),format=RGBA' ! \
comp.sink_3

Hi Jerry, I am having trouble locating that sample on my machine. Can you provide a path to it? Jetpack 5.0.2.

/usr/src/jetson_multimedia_api/samples/13_argus_multi_camera/
1 Like

I found it, tyvm :)

Hi Jerry. I built and ran 13_arugs_multi_camera with four IMX219 cameras attached.

First command, to check the cameras are connected:

v4l2-ctl --list-devices

Gave the following output:

NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
	/dev/media0

vi-output, imx219 30-0010 (platform:tegra-capture-vi:0):
	/dev/video0

vi-output, imx219 31-0010 (platform:tegra-capture-vi:1):
	/dev/video1

vi-output, imx219 32-0010 (platform:tegra-capture-vi:2):
	/dev/video2

vi-output, imx219 34-0010 (platform:tegra-capture-vi:4):
	/dev/video3


Ran the program with arguments for four cameras:

sudo ./multi_camera -n 4

Gives the following output, along with a blank, black window on screen:

[INFO] (NvEglRenderer.cpp:110) <renderer0> Setting Screen width 640 height 480
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 219)
(Argus) Error Timeout: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
Error generated. main.cpp, execute:415 Failed to get ICameraProvider interface

Any ideas?

Ok, tried again. Turns out there’s probably a problem with the seeed A205 drivers, and nvargus-daemon keeps dying as a result. In any case, after a reboot, I tried again and got the following output:

[INFO] (NvEglRenderer.cpp:110) <renderer0> Setting Screen width 640 height 480
Argus Version: 0.98.3 (multi-process)
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Render frame 1
CONSUMER: Render frame 2
CONSUMER: Render frame 3
CONSUMER: Render frame 4
CONSUMER: Render frame 5
CONSUMER: Render frame 6
CONSUMER: Render frame 7
CONSUMER: Render frame 8
CONSUMER: Render frame 9
CONSUMER: Render frame 10
CONSUMER: Render frame 11
CONSUMER: Render frame 12
CONSUMER: Render frame 13
CONSUMER: Render frame 14
CONSUMER: Render frame 15
CONSUMER: Render frame 16
CONSUMER: Render frame 17
CONSUMER: Render frame 18
CONSUMER: Render frame 19
CONSUMER: Render frame 20
CONSUMER: Render frame 21
CONSUMER: Render frame 22
CONSUMER: Render frame 23
CONSUMER: Render frame 24
CONSUMER: Render frame 25
CONSUMER: Render frame 26
CONSUMER: Render frame 27
CONSUMER: Render frame 28
CONSUMER: Render frame 29
CONSUMER: Render frame 30
CONSUMER: Render frame 31
CONSUMER: Render frame 32
CONSUMER: Render frame 33
CONSUMER: Render frame 34
CONSUMER: Render frame 35
CONSUMER: Render frame 36
CONSUMER: Render frame 37
CONSUMER: Render frame 38
CONSUMER: Render frame 39
CONSUMER: Render frame 40
CONSUMER: Render frame 41
CONSUMER: Render frame 42
CONSUMER: Render frame 43
CONSUMER: Render frame 44
CONSUMER: Render frame 45
CONSUMER: Render frame 46
CONSUMER: Render frame 47
CONSUMER: Render frame 48
CONSUMER: Render frame 49
CONSUMER: Render frame 50
CONSUMER: Render frame 51
CONSUMER: Render frame 52
CONSUMER: Render frame 53
CONSUMER: Render frame 54
CONSUMER: Render frame 55
CONSUMER: Render frame 56
CONSUMER: Render frame 57
CONSUMER: Render frame 58
CONSUMER: Render frame 59
CONSUMER: Render frame 60
CONSUMER: Render frame 61
CONSUMER: Render frame 62
CONSUMER: Render frame 63
CONSUMER: Render frame 64
CONSUMER: Render frame 65
CONSUMER: Render frame 66
CONSUMER: Render frame 67
CONSUMER: Render frame 68
CONSUMER: Render frame 69
CONSUMER: Render frame 70
CONSUMER: Render frame 71
CONSUMER: Render frame 72
CONSUMER: Render frame 73
CONSUMER: Render frame 74
CONSUMER: Render frame 75
CONSUMER: Render frame 76
CONSUMER: Render frame 77
CONSUMER: Render frame 78
CONSUMER: Render frame 79
CONSUMER: Render frame 80
CONSUMER: Render frame 81
CONSUMER: Render frame 82
CONSUMER: Render frame 83
CONSUMER: Render frame 84
CONSUMER: Render frame 85
CONSUMER: Render frame 86
CONSUMER: Render frame 87
CONSUMER: Render frame 88
CONSUMER: Render frame 89
CONSUMER: Render frame 90
CONSUMER: Render frame 91
CONSUMER: Render frame 92
CONSUMER: Render frame 93
CONSUMER: Render frame 94
CONSUMER: Render frame 95
CONSUMER: Render frame 96
CONSUMER: Render frame 97
CONSUMER: Render frame 98
CONSUMER: Render frame 99
CONSUMER: Render frame 100
CONSUMER: Done.

Seems to be working fine!

So for your initial question, the cause was :

As sensors index is 0-based, 4th sensor is number 3.

Adding queues is correct as you did. If you don’t need alpha composing, the pipeline from your previous post using NV12 may run faster than the latter one. You may try:

nvcompositor name=comp interpolation-method=5 \
sink_0::xpos=0 sink_0::ypos=0 sink_0::width=1920 sink_0::height=1080 \
sink_1::xpos=1920 sink_1::ypos=0 sink_1::width=1920 sink_1::height=1080 \
sink_2::xpos=0 sink_2::ypos=1080 sink_2::width=1920 sink_2::height=1080 \
sink_3::xpos=1920 sink_3::ypos=1080 sink_3::width=1920 sink_3::height=1080 ! \
nvvidconv ! nvv4l2h264enc iframeinterval=1 maxperf-enable=1 profile=4 bitrate=10000000 insert-sps-pps=1 insert-vui=1 ! rtph264pay ! queue ! udpsink host=192.168.1.92 port=7331 sync=0 \
nvarguscamerasrc sensor-id=0 tnr-mode=2 tnr-strength=1 wbmode=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! nvvidconv ! queue ! comp.sink_0 \
nvarguscamerasrc sensor-id=1 tnr-mode=2 tnr-strength=1 wbmode=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! nvvidconv ! queue ! comp.sink_1 \
nvarguscamerasrc sensor-id=2 tnr-mode=2 tnr-strength=1 wbmode=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! nvvidconv ! queue ! comp.sink_2 \
nvarguscamerasrc sensor-id=3 tnr-mode=2 tnr-strength=1 wbmode=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,format=(string)NV12,framerate=(fraction)30/1' ! nvvidconv ! queue ! comp.sink_3

That MIGHT have been it. I was playing with the index, and at one point the sensor was on index 4. I also had at one point 6 cameras connected, so it would have been valid.

Real problem: Seeed drivers seem to be not great. Nvargus-daemon keeps dying for no reason. sudo systemctl restart nvargus-daemon doesn’t fix it either. Have to reboot the machine to reset, which def sucks. So the index WAS valid at one point during my testing, and then it wasn’t.

It might be a CSI signal quality issue. If the Seeed board is not faulty, it may improve to unplug and reseat your CSI camera.
You may also try boosting VI/ISP clocks and further enable more debug messages as in Jetson/l4t/Camera BringUp - eLinux.org.

1 Like

hello Sealfoss,

let’s further narrow down this.
is this only happened when enable all four cameras for streaming. or, you’re seeing the same failure by running random camera individually?

camera software stack it’s restrict to sensor signaling, which expect those coming continuous packets without any failures.
so, it may due to intermittent MIPI signal. you may setup an oscilloscope to probe the MIPI signal for examination.

Hi Jerry,

I unfortunately do not have an oscilloscope to help with this issue, but it is still affecting my project. I only have observed failures when attempting to access all four cameras at the same time.

I have been experimenting with sample 13_multi_camera. If I change STREAM_SIZE to 1920,1080, the program will fail after displaying one frame of composite video. Additionally, after this failure, the nvarguscamerasrc will fail to initialize at all until I reboot the Xavier. I’m still reading through the code, but it LOOKS like the problem arises if requestShutdown() is never called. But that is just an educated guess.

Thanks,
Reed

Hi Jerry,

Ok, it seems as if I can run the program one time successfully, and then all other attempts fail. Here is the console output:

reed@ubuntu:~/repos/jetson_multimedia_api/samples/13_multi_camera$ ./multi_camera 
[INFO] (NvEglRenderer.cpp:110) <renderer0> Setting Screen width 640 height 480
Argus Version: 0.98.3 (multi-process)
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Render frame 1
CONSUMER: Render frame 2
CONSUMER: Render frame 3
CONSUMER: Render frame 4
CONSUMER: Render frame 5
CONSUMER: Render frame 6
CONSUMER: Render frame 7
CONSUMER: Render frame 8
CONSUMER: Render frame 9
CONSUMER: Render frame 10
CONSUMER: Render frame 11
CONSUMER: Render frame 12
CONSUMER: Render frame 13
CONSUMER: Render frame 14
CONSUMER: Render frame 15
CONSUMER: Render frame 16
CONSUMER: Render frame 17
CONSUMER: Render frame 18
CONSUMER: Render frame 19
CONSUMER: Render frame 20
CONSUMER: Render frame 21
CONSUMER: Render frame 22
CONSUMER: Render frame 23
CONSUMER: Render frame 24
CONSUMER: Render frame 25
CONSUMER: Render frame 26
CONSUMER: Render frame 27
CONSUMER: Render frame 28
CONSUMER: Render frame 29
CONSUMER: Render frame 30
CONSUMER: Render frame 31
CONSUMER: Render frame 32
CONSUMER: Render frame 33
CONSUMER: Render frame 34
CONSUMER: Render frame 35
CONSUMER: Render frame 36
CONSUMER: Render frame 37
CONSUMER: Render frame 38
CONSUMER: Render frame 39
CONSUMER: Render frame 40
CONSUMER: Render frame 41
CONSUMER: Render frame 42
CONSUMER: Render frame 43
CONSUMER: Render frame 44
CONSUMER: Render frame 45
CONSUMER: Render frame 46
CONSUMER: Render frame 47
CONSUMER: Render frame 48
CONSUMER: Render frame 49
CONSUMER: Render frame 50
CONSUMER: Render frame 51
CONSUMER: Render frame 52
CONSUMER: Render frame 53
CONSUMER: Render frame 54
CONSUMER: Render frame 55
CONSUMER: Render frame 56
CONSUMER: Render frame 57
CONSUMER: Render frame 58
CONSUMER: Render frame 59
CONSUMER: Render frame 60
CONSUMER: Render frame 61
CONSUMER: Render frame 62
CONSUMER: Render frame 63
CONSUMER: Render frame 64
CONSUMER: Render frame 65
CONSUMER: Render frame 66
CONSUMER: Render frame 67
CONSUMER: Render frame 68
CONSUMER: Render frame 69
CONSUMER: Render frame 70
CONSUMER: Render frame 71
CONSUMER: Render frame 72
CONSUMER: Render frame 73
CONSUMER: Render frame 74
CONSUMER: Render frame 75
CONSUMER: Render frame 76
CONSUMER: Render frame 77
CONSUMER: Render frame 78
CONSUMER: Render frame 79
CONSUMER: Render frame 80
CONSUMER: Render frame 81
CONSUMER: Render frame 82
CONSUMER: Render frame 83
CONSUMER: Render frame 84
CONSUMER: Render frame 85
CONSUMER: Render frame 86
CONSUMER: Render frame 87
CONSUMER: Render frame 88
CONSUMER: Render frame 89
CONSUMER: Render frame 90
CONSUMER: Render frame 91
CONSUMER: Render frame 92
CONSUMER: Render frame 93
CONSUMER: Render frame 94
CONSUMER: Render frame 95
CONSUMER: Render frame 96
CONSUMER: Render frame 97
CONSUMER: Render frame 98
CONSUMER: Render frame 99
CONSUMER: Render frame 100
CONSUMER: Done.
reed@ubuntu:~/repos/jetson_multimedia_api/samples/13_multi_camera$ ./multi_camera 
[INFO] (NvEglRenderer.cpp:110) <renderer0> Setting Screen width 640 height 480
Argus Version: 0.98.3 (multi-process)
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
CONSUMER: Waiting until producer is connected...
CONSUMER: Producer has connected; continuing.
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
Error generated. main.cpp, execute:458 Failed to submit capture request
(Argus) Error BadParameter:  (propagating from src/eglstream/FrameConsumerImpl.cpp, function acquireFrame(), line 261)
CONSUMER: Render frame 1
nvbuf_utils: dmabuf_fd 0 mapped entry NOT found
Segmentation fault (core dumped)
reed@ubuntu:~/repos/jetson_multimedia_api/samples/13_multi_camera$ ./multi_camera 
[INFO] (NvEglRenderer.cpp:110) <renderer0> Setting Screen width 640 height 480
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 219)
(Argus) Error Timeout: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)
Error generated. main.cpp, execute:417 Failed to get ICameraProvider interface

Additional attempts to run the program fail in the same way until the system is rebooted.

Thanks,
Reed

Hi Jerry,

I think I have found a solution, but it is not software-based. I moved the cameras to MIPI port numbers 1,3,4, and 6. I had been using port #2 previously. This seems to have fixed the above problem. I guess this problem is hardware bound somehow, but I’m going to label it as solved for now. Thanks for everyone’s help!

Thanks,
Reed

hello Sealfoss,

let me double confirm the camera lane config, and the CSI ports you’re using.
you may refer to Port Index session, are they works with CSI-B, D, E, G?

Hi Jerry,

CSI A - Port 0
CSI C - Port 2
CSI D - Port 3
CSI F - Port 5

I hope that helps!

Hi Honey,

Just a heads up your advice led me to the solution. I’m not sure whether the cables were unseated, but moving them to different ports on the board fixed my problem.

Thank you!