Unable to play camera stream from any of the camera, when 3 camera's are added in single devicetree

Hi,

I’m facing an issue during playback of a camera stream on Jetson Nano when all 3 camera’s are added in single devicetree. All three cameras are of the same make and are connected on CSI-A(i.e I2C Chip Address: 0x33), CSI-C(i.e I2C Chip Address: 0x32) and CSI-E(i.e I2C Chip Address: 0x31) of Jetson Nano.
Just an FYI, I’m using baseboard(Antmicro · Open Source Jetson Baseboard) with Jetson Nano 4GB SOM.
When I make a separate devicetree’s for individual camera(i.e add only one camera configuration in devicetree), I’m able to view camera stream using the following GStreamer pipeline,
gst-launch-1.0 -v nvarguscamerasrc sensor-id=0 num-buffers=10000 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! nvoverlaysink
GStreamer console output:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 800 x 800 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 34000, max 550385000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 0 
   Output Stream W = 800 H = 800 
   seconds to Run    = 0 
   Frame Rate = 59.999999 
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:29.296695116
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
Setting pipeline to NULL ...
Freeing pipeline ...

Following is the dmesg output for reference:

# During bootup of board
[  114.883971] omcam 30-0032: 03Jan2022 omcam build 
[  114.883981] omcam 30-0032: probing omcam v4l2 sensor
[  114.883990] omcam 30-0032: registering omcam !!
[  114.884162] omcam 30-0032: omcam_parse_dt:
[  114.884191] omcam 30-0032: got the clock
[  114.884342] omcam 30-0032: tegracam sensor driver:omcam_v2.0.6
[  114.884350] omcam 30-0032: omcam registered device!
[  114.884357] omcam 30-0032: omcam_board_setup++
[  114.884402] omcam 30-0032: omcam_power_on: power on
[  114.886522] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  114.892012] omcam 30-0032: probe 1
[  114.897907] omcam 30-0032: probe 2
[  114.897913] omcam 30-0032: omcam_board_setup: sensor model id: 56  1  41
[  114.897916] omcam 30-0032: omcam_power_off: power off
[  114.897944] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  114.897963] omcam 30-0032: omcam board set up done!
[  114.898005] vi 54080000.vi: subdev omcam 30-0032 bound
[  114.899021] omcam 30-0032: Detected omcam sensor
[  114.910647] omcam 30-0032: omcam_power_on: power on
[  114.912691] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  116.949265] omcam 30-0032: omcam_set_mode [mode_800x800]:
[  116.949339] omcam 30-0032: omcam_start_streaming
[  116.962463] omcam 30-0032: omcam_stop_streaming:
[  116.962505] omcam 30-0032: omcam_power_off: power off
[  116.962606] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  116.963350] omcam 30-0032: omcam_power_on: power on
[  116.965476] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  116.968328] omcam 30-0032: omcam_power_off: power off
[  116.968437] omcam 30-0032: omcam_power_off: Power OFF GPIO 0

# After gstreamer command: gst-launch-1.0 -v nvarguscamerasrc sensor-id=0 num-buffers=10000 ! 'video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1' ! nvvidconv ! queue ! nvoverlaysink
[  512.770173] omcam 30-0032: omcam_power_on: power on
[  512.772208] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  514.847317] omcam 30-0032: omcam_set_mode [mode_800x800]:
[  514.847444] omcam 30-0032: omcam_start_streaming
[  514.858477] omcam 30-0032: omcam_stop_streaming:
[  514.858496] omcam 30-0032: omcam_power_off: power off
[  514.858529] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  514.858695] omcam 30-0032: omcam_power_on: power on
[  514.860781] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  514.863142] omcam 30-0032: omcam_power_off: power off
[  514.863222] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  515.410623] omcam 30-0032: omcam_power_on: power on
[  515.412659] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  517.509310] omcam 30-0032: omcam_set_mode [mode_800x800]:
[  517.509342] omcam 30-0032: omcam_start_streaming
[  517.521249] omcam 30-0032: omcam_stop_streaming:
[  517.521268] omcam 30-0032: omcam_power_off: power off
[  517.521303] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  517.521467] omcam 30-0032: omcam_power_on: power on
[  517.523843] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  517.526561] omcam 30-0032: omcam_power_off: power off
[  517.526662] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  517.532815] omcam 30-0032: omcam_power_on: power on
[  517.534905] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  517.537071] omcam 30-0032: omcam_power_off: power off
[  517.537095] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  517.562772] omcam 30-0032: omcam_power_on: power on
[  517.564885] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  517.566944] omcam 30-0032: omcam_power_off: power off
[  517.566973] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  517.567129] omcam 30-0032: omcam_power_on: power on
[  517.569196] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  517.571545] omcam 30-0032: omcam_power_off: power off
[  517.571607] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  517.572023] omcam 30-0032: omcam_power_on: power on
[  517.574120] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  517.576227] omcam 30-0032: omcam_power_off: power off
[  517.576249] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  517.958726] omcam 30-0032: omcam_power_on: power on
[  517.960786] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  520.028754] omcam 30-0032: omcam_set_mode [mode_800x800]:
[  520.028805] omcam 30-0032: omcam_start_streaming
[  539.148881] omcam 30-0032: omcam_stop_streaming:
[  539.155553] omcam 30-0032: omcam_power_off: power off
[  539.155603] omcam 30-0032: omcam_power_off: Power OFF GPIO 0

I’ve attached devicetree(32-tegra210-camera-omcam-b00.dtsi & 32-tegra210-porg-camera-omcam-b00.dtsi) files and driver(omcam.c) source file for reference

Now this is the part where playback doesn’t work
If I add all 3 cameras in single devicetree, I’m able to list all 3 cameras
i.e /dev/video0, /dev/video1, /dev/video2 which is good,
But I’m unable to play camera stream using the following gstreamer pipeline using sensor-id 0, 1 or 2,
gst-launch-1.0 -v nvarguscamerasrc sensor-id=0 num-buffers=10000 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! nvoverlaysink
GStreamer console output:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:725 No cameras available
/GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
Got EOS from element "pipeline0".
Execution ended after 0:00:00.002237381
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
(Argus) Error EndOfFile: Unexpected error in reading socket (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 266)
(Argus) Error EndOfFile: Receive worker failure, notifying 1 waiting threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 340)
(Argus) Error InvalidState: Argus client is exiting with 1 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 357)
(Argus) Error EndOfFile: Receiving thread terminated with error (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadWrapper(), line 368)
(Argus) Error EndOfFile: Client thread received an error from socket (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 145)
(Argus) Error EndOfFile:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)

But I’m able to capture raw frame from all 3 cameras(video0, video1, video2) using the following command:
v4l2-ctl --set-fmt-video=width=800,height=800,pixelformat=BG10 --set-ctrl bypass_mode=0 --stream-skip=20 --stream-mmap --stream-count=1 -d /dev/video0 --stream-to=omcamFrame.raw
Here is the dmesg output,

# Bootup
[  121.072843] omcam 30-0031: 03Jan2022 omcam build 
[  121.072848] omcam 30-0031: probing omcam v4l2 sensor
[  121.072853] omcam 30-0031: registering omcam !!
[  121.072973] omcam 30-0031: omcam_parse_dt:
[  121.072990] omcam 30-0031: got the clock
[  121.073074] omcam 30-0031: tegracam sensor driver:omcam_v2.0.6
[  121.073079] omcam 30-0031: omcam registered device!
[  121.073083] omcam 30-0031: omcam_board_setup++
[  121.073118] omcam 30-0031: omcam_power_on: power on
[  121.075164] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  121.080472] omcam 30-0031: probe 1
[  121.085832] omcam 30-0031: probe 2
[  121.085838] omcam 30-0031: omcam_board_setup: sensor model id: 56  1  41
[  121.085842] omcam 30-0031: omcam_power_off: power off
[  121.085873] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  121.085893] omcam 30-0031: omcam board set up done!
[  121.085936] vi 54080000.vi: subdev omcam 30-0031 bound
[  121.087153] omcam 30-0031: Detected omcam sensor
[  121.087230] omcam 30-0032: 03Jan2022 omcam build 
[  121.087234] omcam 30-0032: probing omcam v4l2 sensor
[  121.087237] omcam 30-0032: registering omcam !!
[  121.087317] omcam 30-0032: omcam_parse_dt:
[  121.087332] omcam 30-0032: got the clock
[  121.087405] omcam 30-0032: tegracam sensor driver:omcam_v2.0.6
[  121.087408] omcam 30-0032: omcam registered device!
[  121.087412] omcam 30-0032: omcam_board_setup++
[  121.087442] omcam 30-0032: omcam_power_on: power on
[  121.090238] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  121.094848] omcam 30-0032: probe 1
[  121.095794] omcam 30-0031: omcam_power_on: power on
[  121.096930] omcam 30-0032: probe 2
[  121.096937] omcam 30-0032: omcam_board_setup: sensor model id: 56  1  41
[  121.096941] omcam 30-0032: omcam_power_off: power off
[  121.097027] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  121.097034] omcam 30-0032: omcam board set up done!
[  121.097073] vi 54080000.vi: subdev omcam 30-0032 bound
[  121.097990] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  121.098268] omcam 30-0032: Detected omcam sensor
[  121.098350] omcam 30-0033: 03Jan2022 omcam build 
[  121.098353] omcam 30-0033: probing omcam v4l2 sensor
[  121.098356] omcam 30-0033: registering omcam !!
[  121.098428] omcam 30-0033: omcam_parse_dt:
[  121.098442] omcam 30-0033: got the clock
[  121.098512] omcam 30-0033: tegracam sensor driver:omcam_v2.0.6
[  121.098515] omcam 30-0033: omcam registered device!
[  121.098519] omcam 30-0033: omcam_board_setup++
[  121.098526] omcam 30-0033: omcam_power_on: power on
[  121.100575] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  121.102866] omcam 30-0032: omcam_power_on: power on
[  121.103695] omcam 30-0033: probe 1
[  121.104964] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  121.105859] omcam 30-0033: probe 2
[  121.105864] omcam 30-0033: omcam_board_setup: sensor model id: 56  1  41
[  121.105868] omcam 30-0033: omcam_power_off: power off
[  121.105892] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  121.105898] omcam 30-0033: omcam board set up done!
[  121.105936] vi 54080000.vi: subdev omcam 30-0033 bound
[  121.106498] omcam 30-0033: Detected omcam sensor
[  121.110108] omcam 30-0032: omcam_power_off: power off
[  121.113759] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  121.114140] omcam 30-0033: omcam_power_on: power on
[  121.116175] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  121.118382] omcam 30-0033: omcam_power_off: power off
[  121.118406] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  123.123257] omcam 30-0031: omcam_set_mode [mode_800x800]:
[  123.123286] omcam 30-0031: omcam_start_streaming
[  123.137310] omcam 30-0031: omcam_stop_streaming:
[  123.137342] omcam 30-0031: omcam_power_off: power off
[  123.137412] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  123.137880] omcam 30-0032: omcam_power_on: power on
[  123.139983] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  125.151448] omcam 30-0032: omcam_set_mode [mode_800x800]:
[  125.151520] omcam 30-0032: omcam_start_streaming
[  125.163909] omcam 30-0032: omcam_stop_streaming:
[  125.163932] omcam 30-0032: omcam_power_off: power off
[  125.163981] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  125.164174] omcam 30-0033: omcam_power_on: power on
[  125.166289] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  127.162531] omcam 30-0033: omcam_set_mode [mode_800x800]:
[  127.162568] omcam 30-0033: omcam_start_streaming
[  127.173782] omcam 30-0033: omcam_stop_streaming:
[  127.173810] omcam 30-0033: omcam_power_off: power off
[  127.173880] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  127.174162] omcam 30-0031: omcam_power_on: power on
[  127.176239] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  127.179458] omcam 30-0031: omcam_power_off: power off
[  127.179647] omcam 30-0031: omcam_power_off: Power OFF GPIO 0

# Run GStreamer pipeline: gst-launch-1.0 -v nvarguscamerasrc sensor-id=0 num-buffers=10000 ! 'video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1' ! nvvidconv ! queue ! nvoverlaysink
[  236.671212] omcam 30-0031: omcam_power_on: power on
[  236.673244] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  238.660364] omcam 30-0031: omcam_set_mode [mode_800x800]:
[  238.660393] omcam 30-0031: omcam_start_streaming
[  238.670582] omcam 30-0031: omcam_stop_streaming:
[  238.670624] omcam 30-0031: omcam_power_off: power off
[  238.670781] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  238.671099] omcam 30-0032: omcam_power_on: power on
[  238.673181] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  240.668955] omcam 30-0032: omcam_set_mode [mode_800x800]:
[  240.668984] omcam 30-0032: omcam_start_streaming
[  240.679085] omcam 30-0032: omcam_stop_streaming:
[  240.679109] omcam 30-0032: omcam_power_off: power off
[  240.679155] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  240.679393] omcam 30-0033: omcam_power_on: power on
[  240.681469] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  242.671443] omcam 30-0033: omcam_set_mode [mode_800x800]:
[  242.671517] omcam 30-0033: omcam_start_streaming
[  242.681987] omcam 30-0033: omcam_stop_streaming:
[  242.682009] omcam 30-0033: omcam_power_off: power off
[  242.682054] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  242.682251] omcam 30-0031: omcam_power_on: power on
[  242.684382] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  242.687509] omcam 30-0031: omcam_power_off: power off
[  242.687579] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  242.688029] omcam 30-0032: omcam_power_on: power on
[  242.690239] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  242.692903] omcam 30-0032: omcam_power_off: power off
[  242.692974] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  242.693329] omcam 30-0033: omcam_power_on: power on
[  242.695383] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  242.697597] omcam 30-0033: omcam_power_off: power off
[  242.697642] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  243.261234] omcam 30-0031: omcam_power_on: power on
[  243.263269] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  245.289122] omcam 30-0031: omcam_set_mode [mode_800x800]:
[  245.289154] omcam 30-0031: omcam_start_streaming
[  245.301470] omcam 30-0031: omcam_stop_streaming:
[  245.301485] omcam 30-0031: omcam_power_off: power off
[  245.301513] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  245.301650] omcam 30-0032: omcam_power_on: power on
[  245.306925] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  247.355211] omcam 30-0032: omcam_set_mode [mode_800x800]:
[  247.355245] omcam 30-0032: omcam_start_streaming
[  247.366883] omcam 30-0032: omcam_stop_streaming:
[  247.366897] omcam 30-0032: omcam_power_off: power off
[  247.366959] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  247.367161] omcam 30-0033: omcam_power_on: power on
[  247.369226] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  249.393712] omcam 30-0033: omcam_set_mode [mode_800x800]:
[  249.393741] omcam 30-0033: omcam_start_streaming
[  249.405322] omcam 30-0033: omcam_stop_streaming:
[  249.405352] omcam 30-0033: omcam_power_off: power off
[  249.405415] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  249.405704] omcam 30-0031: omcam_power_on: power on
[  249.407829] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  249.410959] omcam 30-0031: omcam_power_off: power off
[  249.411031] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  249.411692] omcam 30-0032: omcam_power_on: power on
[  249.413909] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  249.416233] omcam 30-0032: omcam_power_off: power off
[  249.416304] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  249.416686] omcam 30-0033: omcam_power_on: power on
[  249.418893] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  249.421086] omcam 30-0033: omcam_power_off: power off
[  249.421126] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  249.425034] omcam 30-0031: omcam_power_on: power on
[  249.427066] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  249.429204] omcam 30-0031: omcam_power_off: power off
[  249.429221] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  249.429358] omcam 30-0032: omcam_power_on: power on
[  249.431408] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  249.433756] omcam 30-0032: omcam_power_off: power off
[  249.433807] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  249.434112] omcam 30-0033: omcam_power_on: power on
[  249.436154] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  249.438363] omcam 30-0033: omcam_power_off: power off
[  249.438392] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  249.461570] omcam 30-0033: omcam_power_on: power on
[  249.463662] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[  249.465724] omcam 30-0033: omcam_power_off: power off
[  249.465744] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[  249.465903] omcam 30-0032: omcam_power_on: power on
[  249.467963] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[  249.470160] omcam 30-0032: omcam_power_off: power off
[  249.470207] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[  249.470514] omcam 30-0031: omcam_power_on: power on
[  249.472556] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  249.474739] omcam 30-0031: omcam_power_off: power off
[  249.474803] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  249.474941] omcam 30-0031: omcam_power_on: power on
[  249.477025] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  249.479208] omcam 30-0031: omcam_power_off: power off
[  249.479234] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[  249.479417] omcam 30-0031: omcam_power_on: power on
[  249.481509] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[  249.483635] omcam 30-0031: omcam_power_off: power off
[  249.483662] omcam 30-0031: omcam_power_off: Power OFF GPIO 0

# command able to capture frame: v4l2-ctl --set-fmt-video=width=800,height=800,pixelformat=BG10 --set-ctrl bypass_mode=0 --stream-skip=20 --stream-mmap --stream-count=1 -d /dev/video0 --stream-to=omcamFrame.raw
[ 1378.918826] omcam 30-0031: omcam_power_on: power on
[ 1378.920935] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[ 1380.975319] omcam 30-0031: omcam_set_mode [mode_800x800]:
[ 1380.975357] omcam 30-0031: omcam_start_streaming
[ 1380.984987] omcam 30-0031: omcam_stop_streaming:
[ 1380.985014] omcam 30-0031: omcam_power_off: power off
[ 1380.985053] omcam 30-0031: omcam_power_off: Power OFF GPIO 0
[ 1380.985295] omcam 30-0032: omcam_power_on: power on
[ 1380.987377] omcam 30-0032: omcam_power_on: Power ON GPIO 1
[ 1383.047858] omcam 30-0032: omcam_set_mode [mode_800x800]:
[ 1383.047887] omcam 30-0032: omcam_start_streaming
[ 1383.060426] omcam 30-0032: omcam_stop_streaming:
[ 1383.060454] omcam 30-0032: omcam_power_off: power off
[ 1383.060517] omcam 30-0032: omcam_power_off: Power OFF GPIO 0
[ 1383.060779] omcam 30-0033: omcam_power_on: power on
[ 1383.062941] omcam 30-0033: omcam_power_on: Power ON GPIO 1
[ 1385.114706] omcam 30-0033: omcam_set_mode [mode_800x800]:
[ 1385.114735] omcam 30-0033: omcam_start_streaming
[ 1385.125350] omcam 30-0033: omcam_stop_streaming:
[ 1385.125368] omcam 30-0033: omcam_power_off: power off
[ 1385.125410] omcam 30-0033: omcam_power_off: Power OFF GPIO 0
[ 1385.125608] omcam 30-0031: omcam_power_on: power on
[ 1385.127699] omcam 30-0031: omcam_power_on: Power ON GPIO 1
[ 1387.186196] omcam 30-0031: omcam_set_mode [mode_800x800]:
[ 1387.186480] omcam 30-0031: omcam_start_streaming
[ 1387.592704] omcam 30-0031: omcam_stop_streaming:
[ 1387.605254] omcam 30-0031: omcam_power_off: power off
[ 1387.605545] omcam 30-0031: omcam_power_off: Power OFF GPIO 0

I’ve also attached devicetree(all-tegra210-camera-omcam-b00.dtsi & all-tegra210-porg-camera-omcam-b00.dtsi) for reference.
Note: I noticed in dmesg, when I try to play camera stream or capture frame, all 3 cameras are iterated at 1st and then finally the expected camera is again intiailized and frame is captured.
Don’t know the reason why initially all 3 camera’s are initialized.

Could you please provide me some pointers on where I’m going wrong in this, as I’m in bit confused on why I’m unable to play camera stream, but I’m able capture frame.
Any help on this is much appreciated.

Thanks

32-tegra210-camera-omcam-b00.dtsi (5.5 KB)
32-tegra210-porg-camera-omcam-b00.dtsi (2.0 KB)
all-tegra210-camera-omcam-b00.dtsi (11.4 KB)
all-tegra210-porg-camera-omcam-b00.dtsi (2.7 KB)
omcam.c (22.8 KB)

Modify the position to bottom, top, and center for three cameras use case.

position = "middle";

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.47.1.html

1 Like

It worked ! !
@ShaneCCC you are the savior.
Thanks a lot.

I need one more help from you.
I’m trying to render all 3 cameras at once using the following command, but I am able to view only one in the display.

gst-launch-1.0 -v \
nvarguscamerasrc sensor-id=0 num-buffers=10000 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! nvoverlaysink overlay-x=0 overlay-y=0 overlay-w=400 overlay-h=400 \
nvarguscamerasrc sensor-id=1 num-buffers=10000 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! nvoverlaysink overlay-x=410 overlay-y=0 overlay-w=400 overlay-h=400 \
nvarguscamerasrc sensor-id=2 num-buffers=10000 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! nvoverlaysink overlay-x=820 overlay-y=0 overlay-w=400 overlay-h=400

GStreamer console output

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink1.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink2.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
/GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1
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: 800 x 800 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 34000, max 550385000;

GST_ARGUS: Running with following settings:
   Camera index = 1 
   Camera mode  = 0 
   Output Stream W = 800 H = 800 
   seconds to Run    = 0 
   Frame Rate = 59.999999 
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 800 x 800 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 34000, max 550385000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 0 
   Output Stream W = 800 H = 800 
   seconds to Run    = 0 
   Frame Rate = 59.999999 
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 800 x 800 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 34000, max 550385000;

CONSUMER: Producer has connected; continuing.
GST_ARGUS: Running with following settings:
   Camera index = 2 
   Camera mode  = 0 
   Output Stream W = 800 H = 800 
   seconds to Run    = 0 
   Frame Rate = 59.999999 
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD... Exiting...
CONSUMER: Done Success
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD... Exiting...
CONSUMER: Done Success
Got EOS from element "pipeline0".
Execution ended after 0:02:45.978912107
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
Setting pipeline to NULL ...
Freeing pipeline ...

Looking at the console output, the other two camera’s have this error

nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD… Exiting…

Any idea if there is any specific change I need to do in devicetree, driver or GStreamer pipeline?

Do you need composite them to one window?
How about have xvimagesink to preview them in three windows.

I tried playing 2 cameras with following command,

gst-launch-1.0 -v \
nvarguscamerasrc sensor-id=0 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! xvimagesink \
nvarguscamerasrc sensor-id=1 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! xvimagesink

I got the same error

nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD… Exiting…

But if I run them separately it works
gst-launch-1.0 -v nvarguscamerasrc sensor-id=0 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! xvimagesink
gst-launch-1.0 -v nvarguscamerasrc sensor-id=1 ! ‘video/x-raw(memory:NVMM), width=(int)800, height=(int)800, format=(string)NV12, framerate=(fraction)60/1’ ! nvvidconv ! queue ! xvimagesink

Could you try framerate=(fraction)30/1 for each pipeline.

Tried it, but getting the same error

What’s the version?

cat /etc/nv_tegra_release

# R32 (release), REVISION: 6.1, GCID: 27863751, BOARD: t210ref, EABI: aarch64, DATE: Mon Jul 26 19:20:30 UTC 2021

Could you try argus_camera multiple session.

argus_camera --module=3

I’m unable to find argus_camera binary.
Could you please let me know where can i find or install it from?

Download MMAPI to build it.

sudo apt list -a nvidia-l4t-jetson-multimedia-api
sudo apt install nvidia-l4t-jetson-multimedia-api=32.x.xxxxx

I think it is installed, got this message when I ran 1st command

nvidia-l4t-jetson-multimedia-api/stable 32.6.1-20210916211029 arm64 [upgradable from: 32.6.1-20210726122000]
nvidia-l4t-jetson-multimedia-api/stable,now 32.6.1-20210726122000 arm64 [installed,upgradable to: 32.6.1-20210916211029]

Just did a quick search and found this

Is this what i need to build?

Check the ReadMe to build it.
The location is /usr/src/jetson_multimedia_api/argus