Jetson agx orin 12MP multi-camera kit: 'Internal data stream error'

  1. Where did you get the camera module(s)? Arducam Technology Co. Limited

  2. Model number of the product(s)? 12MP multi-camera kit. SKU: B0473, 327938, 102820

  3. What hardware/platform were you working on? Nvidia Jetson agx orin devkit

  4. Instructions you have followed. (link/manual/etc.)Quick Start Guide - Arducam Wiki for IMX477 camera module.

  5. Problems you were having?
    Installed 12MP multi-camera kit on Jetson agx orin devkit. Added one camera on slot 3.

The V4L2 shows:

$ v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
	Type: Video Capture

	[0]: 'RG10' (10-bit Bayer RGRG/GBGB)
		Size: Discrete 4032x3040
			Interval: Discrete 0.048s (21.000 fps)
		Size: Discrete 3840x2160
			Interval: Discrete 0.033s (30.000 fps)
		Size: Discrete 1920x1080
			Interval: Discrete 0.017s (60.000 fps)

Accessing the camera kit using this commands sequence:

SENSOR_ID=0
FRAMERATE=21
width=4032
height=3040
gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=$width,height=$height,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink

I got:
WARNING: erroneous pipeline: no element “nvoverlaysink”

Removed “nvoverlaysink” from pipeline:

$ gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=$width,height=$height,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink
WARNING: erroneous pipeline: no element "nvoverlaysink"
kepler@jetsonDevkit2:~$ gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=$width,height=$height,framerate=$FRAMERATE/1" ! nvvidconv 
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 4032 x 3040 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3840 x 2160 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 0 
   Output Stream W = 4032 H = 3040 
   seconds to Run    = 0 
   Frame Rate = 21.000000 
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: **Internal data stream error.**
Additional debug info:
gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0:
streaming stopped, reason not-linked (-1)
Execution ended after 0:00:00.798267351
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
Freeing pipeline ...

Why do I get Internal data stream error?

  1. The dmesg log from your hardware?
[   14.173250] nv_imx477: no symbol version for module_layout
[   14.188156] imx477 30-001a: tegracam sensor driver:imx477_v2.0.6
[   14.490685] imx477 30-001a: imx477_board_setup: error during i2c read probe (-121)
[   14.490857] imx477 30-001a: board setup failed
[   14.491109] imx477: probe of 30-001a failed with error -121
[   14.491828] imx477 31-001a: tegracam sensor driver:imx477_v2.0.6
[   14.823949] imx477 31-001a: imx477_board_setup: error during i2c read probe (-121)
[   14.824113] imx477 31-001a: board setup failed
[   14.824467] imx477: probe of 31-001a failed with error -121
[   14.824929] imx477 32-001a: tegracam sensor driver:imx477_v2.0.6
[   15.147374] imx477 32-001a: imx477_board_setup: error during i2c read probe (-121)
[   15.156001] imx477 32-001a: board setup failed
[   15.161425] imx477: probe of 32-001a failed with error -121
[   15.168150] **imx477 33-001a: tegracam sensor driver:imx477_v2.0.6**
[   15.470052] **tegra-camrtc-capture-vi tegra-capture-vi: subdev imx477 33-001a bound**
[   15.474296] imx477 34-001a: tegracam sensor driver:imx477_v2.0.6
[   15.776046] imx477 34-001a: imx477_board_setup: error during i2c read probe (-121)
[   15.784661] imx477 34-001a: board setup failed
[   15.790048] imx477: probe of 34-001a failed with error -121
[   15.796634] imx477 35-001a: tegracam sensor driver:imx477_v2.0.6
[   16.097603] imx477 35-001a: imx477_board_setup: error during i2c read probe (-121)
[   16.106385] imx477 35-001a: board setup failed
[   16.116417] imx477: probe of 35-001a failed with error -121

There is only one camera on slot 3, and it is detected by kernel.

  1. Troubleshooting attempts you’ve made?

  2. What help do you need?
    The root cause of Internal data stream error and make the camera operational.

@reza

Please reboot and then use the command below

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat='RG10' --stream-mmap --stream-count=-1 --set-ctrl=sensor_mode=2

Hi @Edward,
What is the expected output from above command? I get a bunch of these lines:
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps

@reza

This is the expected output.

I think the camera is fine.
Could you please try a smaller resolution like 1920x1080 using Gstreamer?

SENSOR_ID=0
FRAMERATE=60
width=1902
height=1080
gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=$width,height=$height,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink

By the way, whenever your run GStreamer failed, you need to reboot you system or use the command below:

sudo systemctl restart nvargus-daemon.service

Hi @Edward,
I got this after running the gst-launch command:

WARNING: erroneous pipeline: no element "nvoverlaysink"