Hi,
I have hooked up 2 Arducam IMX708 camera modules (https://www.arducam.com/product/presalearducam-12mp-imx708-hdr-120-wide-angle-camera-module-with-m12-lens-for-raspberry-pi/) on the cam0 and cam1 CSI ports of my Orin NX 16GB (https://www.seeedstudio.com/reComputer-J4012-p-5586.html).
I’m running Arducam provided kernel and dtb (https://github.com/ArduCAM/MIPI_Camera/releases/download/v0.0.1-orin-nx/arducam-nvidia-l4t-kernel-t234-nx-5.10.192-tegra-35.5.0-20240307160102_arm64_imx708.deb) on the following software stack:
L4T 35.5.0
Jetpack: 5.1.3
Ubuntu: 20.04 focal
Release: 5.10.192-tegra
My gstreamer version is the following:
# gst-launch-1.0 --version
gst-launch-1.0 version 1.16.3
GStreamer 1.16.3
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
I have also enabled the camera ports using jetson-io.
Both cameras are getting detected and visible as v4l2 devices /dev/video0 and /dev/video1
# dmesg | grep imx708
[ 12.972720] nv_imx708: no symbol version for module_layout
[ 13.007427] imx708 9-001a: tegracam sensor driver:imx708_v2.0.6
[ 13.308146] imx708 9-001a: imx708_board_setup: invalid sensor model id: 32
[ 13.316166] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx708 9-001a bound
[ 13.317293] imx708 10-001a: tegracam sensor driver:imx708_v2.0.6
[ 13.617991] imx708 10-001a: imx708_board_setup: invalid sensor model id: 32
[ 13.625615] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx708 10-001a bound
Also, the system works perfectly for a single camera on either cam0 / cam1 port.
When I run gstreamer, the camera on sensor-id=1 works:
# gst-launch-1.0 nvarguscamerasrc timeout=20 sensor-id=1 ! 'video/x-raw(memory:NVMM),width=2304,height=1296,framerate=14/1, format=NV12' ! nvv4l2h265enc ! filesink location=a.mp4 -e
Setting pipeline to PAUSED ...
Opening in BLOCKING MODE
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
NvMMLiteOpen : Block : BlockType = 8
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 8
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 4608 x 2592 FR = 14.000001 fps Duration = 71428568 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 500000, max 65487000;
GST_ARGUS: 2304 x 1296 FR = 55.000001 fps Duration = 18181818 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 500000, max 65487000;
GST_ARGUS: 1536 x 864 FR = 90.000001 fps Duration = 11111111 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 500000, max 65487000;
GST_ARGUS: Running with following settings:
Camera index = 1
Camera mode = 1
Output Stream W = 2304 H = 1296
seconds to Run = 20
Frame Rate = 55.000001
GST_ARGUS: Setup Complete, Starting captures for 20 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
NvVideo: H265 : Profile : 1
NVMEDIA: Need to set EMC bandwidth : 1340266
NvVideo: bBlitMode is set to TRUE
GST_ARGUS: Cleaning up
Got EOS from element "pipeline0".
Execution ended after 0:00:20.072010697
Setting pipeline to NULL ...
CONSUMER: Done Success
GST_ARGUS: Done Success
Freeing pipeline ...
But the same pipeline on sensor-id=0 fails for all operations - be it jpeg encode or video encode:
# gst-launch-1.0 nvarguscamerasrc timeout=20 sensor-id=0 ! 'video/x-raw(memory:NVMM),width=2304,height=1296,framerate=14/1, format=NV12' ! nvv4l2h265enc ! filesink location=a.mp4 -e
Setting pipeline to PAUSED ...
Opening in BLOCKING MODE
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
NvMMLiteOpen : Block : BlockType = 8
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 8
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 4608 x 2592 FR = 14.000001 fps Duration = 71428568 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 500000, max 65487000;
GST_ARGUS: 2304 x 1296 FR = 55.000001 fps Duration = 18181818 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 500000, max 65487000;
GST_ARGUS: 1536 x 864 FR = 90.000001 fps Duration = 11111111 ; Analog Gain range min 1.000000, max 16.000000; Exposure Range min 500000, max 65487000;
GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode = 1
Output Stream W = 2304 H = 1296
seconds to Run = 20
Frame Rate = 55.000001
GST_ARGUS: Setup Complete, Starting captures for 20 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadExecute:702 NvBufSurfaceFromFd Failed.
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadFunction:247 (propagating)
Got EOS from element "pipeline0".
Execution ended after 0:00:04.004623610
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
Freeing pipeline ...
Any hint on what I should be looking at?
Thanks in advance.