Orin NX nvargus error

Hi,
We use Orin NX devkit, the L4T version is R36 (release), REVISION: 4.4.
We attach an IMX477 sensor to devkit, and use /opt/nvidia/jetson-io/jetson-io.py config the device tree.
We try to capture the video by
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM), \ width=(int)1920, height=(int)1080, format=(string)NV12, \ framerate=(fraction)60/1" ! queue ! nv3dsink -e
The first attempt successfully obtained the video, and the journalctl -u nvargus-daemon.service -b -f as follow:

Jan 13 09:07:05 nvidia nvargus-daemon[899]: === NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections...=== gst-launch-1.0[3248]: Connection established (FFFFB7BAB840)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Jan 13 09:07:05 nvidia nvargus-daemon[899]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
Jan 13 09:07:05 nvidia nvargus-daemon[899]: NvPclHwGetModuleList: No module data found
Jan 13 09:07:05 nvidia nvargus-daemon[899]: NvPclHwGetModuleList: No module data found
Jan 13 09:07:05 nvidia nvargus-daemon[899]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Jan 13 09:07:05 nvidia nvargus-daemon[899]: ---- imager: No override file found. ----
Jan 13 09:07:05 nvidia nvargus-daemon[899]: ---- imager: No override file found. ----
Jan 13 09:07:05 nvidia nvargus-daemon[899]: (NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
Jan 13 09:07:05 nvidia nvargus-daemon[899]: (NvCamV4l2) Error ModuleNotPresent:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
Jan 13 09:07:05 nvidia nvargus-daemon[899]: (NvOdmDevice) Error ModuleNotPresent:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 111)
Jan 13 09:07:05 nvidia nvargus-daemon[899]: NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
Jan 13 09:07:05 nvidia nvargus-daemon[899]: NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
Jan 13 09:07:05 nvidia nvargus-daemon[899]: NvPclStartPlatformDrivers: Failed to start module drivers
Jan 13 09:07:05 nvidia nvargus-daemon[899]: NvPclStateControllerOpen: Failed ImagerGUID 0. (error 0xA000E)
Jan 13 09:07:05 nvidia nvargus-daemon[899]: NvPclOpen: PCL Open Failed. Error: 0xf
Jan 13 09:07:05 nvidia nvargus-daemon[899]: SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 725)
Jan 13 09:07:05 nvidia nvargus-daemon[899]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 455)
Jan 13 09:07:05 nvidia nvargus-daemon[899]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 382)
Jan 13 09:07:05 nvidia nvargus-daemon[899]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function getSource(), line 554)

Then we use Ctrl + C to stop capture.
When we made the second attempt, we couldn’t obtain the video stream normally. and the journalctl -u nvargus-daemon.service -b -f as follow:

Jan 13 09:08:52 nvidia nvargus-daemon[899]: === gst-launch-1.0[3248]: CameraProvider initialized (0xffffb0ac4990)=== gst-launch-1.0[3248]: CameraProvider destroyed (0xffffb0ac4990)=== gst-launch-1.0[3248]: Connection closed (FFFFB7BAB840)=== gst-launch-1.0[3248]: Connection cleaned up (FFFFB7BAB840)=== gst-launch-1.0[4032]: Connection established (FFFFB7BAB840)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Jan 13 09:08:52 nvidia nvargus-daemon[899]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
Jan 13 09:08:52 nvidia nvargus-daemon[899]: NvPclHwGetModuleList: No module data found
Jan 13 09:08:52 nvidia nvargus-daemon[899]: NvPclHwGetModuleList: No module data found
Jan 13 09:08:52 nvidia nvargus-daemon[899]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Jan 13 09:08:52 nvidia nvargus-daemon[899]: ---- imager: No override file found. ----
Jan 13 09:08:52 nvidia nvargus-daemon[899]: ---- imager: No override file found. ----
Jan 13 09:08:52 nvidia nvargus-daemon[899]: (NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
Jan 13 09:08:52 nvidia nvargus-daemon[899]: (NvCamV4l2) Error ModuleNotPresent:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
Jan 13 09:08:52 nvidia nvargus-daemon[899]: (NvOdmDevice) Error ModuleNotPresent:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 111)
Jan 13 09:08:52 nvidia nvargus-daemon[899]: NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
Jan 13 09:08:52 nvidia nvargus-daemon[899]: NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
Jan 13 09:08:52 nvidia nvargus-daemon[899]: NvPclStartPlatformDrivers: Failed to start module drivers
Jan 13 09:08:52 nvidia nvargus-daemon[899]: NvPclStateControllerOpen: Failed ImagerGUID 0. (error 0xA000E)
Jan 13 09:08:52 nvidia nvargus-daemon[899]: NvPclOpen: PCL Open Failed. Error: 0xf
Jan 13 09:08:52 nvidia nvargus-daemon[899]: SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 725)
Jan 13 09:08:52 nvidia nvargus-daemon[899]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 455)
Jan 13 09:08:52 nvidia nvargus-daemon[899]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 382)
Jan 13 09:08:52 nvidia nvargus-daemon[899]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function getSource(), line 554)
Jan 13 09:08:57 nvidia nvargus-daemon[899]: Module_id 30 Severity 2 : (fusa) Error: Timeout  propagating from:/capture/src/fusaViHandler.cpp 820
Jan 13 09:08:57 nvidia nvargus-daemon[899]: === gst-launch-1.0[4032]: CameraProvider initialized (0xffffb13b5940)SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 0 draining session frameEnd events 3
Jan 13 09:08:57 nvidia nvargus-daemon[899]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Jan 13 09:08:57 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 13 09:08:57 nvidia nvargus-daemon[899]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 13 09:08:57 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 0 draining session frameStart events 3
Jan 13 09:08:57 nvidia nvargus-daemon[899]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 529)
Jan 13 09:08:57 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 13 09:08:57 nvidia nvargus-daemon[899]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 13 09:08:57 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 1 draining session frameEnd events 2
Jan 13 09:08:57 nvidia nvargus-daemon[899]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: Module_id 30 Severity 2 : (fusa) Error: Timeout  propagating from:/capture/src/fusaViHandler.cpp 820
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 2 draining session frameEnd events 1
Jan 13 09:09:01 nvidia nvargus-daemon[899]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 13 09:09:01 nvidia nvargus-daemon[899]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 1 draining session frameStart events 2
Jan 13 09:09:01 nvidia nvargus-daemon[899]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 529)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error Timeout: Sending critical error event for Session 1
Jan 13 09:09:01 nvidia nvargus-daemon[899]:  (in src/api/Session.cpp, function sendErrorEvent(), line 1039)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error InvalidState: Sensor GUID 1 is in error state. Skipping requests, capture sequence ID = 2 continue draining session frameStart events 1
Jan 13 09:09:01 nvidia nvargus-daemon[899]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 543)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 13 09:09:01 nvidia nvargus-daemon[899]: PowerServiceCore:handleRequests: timePassed = 9219

It will keep failing unless it is reboot.
Every time we can witness this phenomenon.
May I ask what the possible reason might be?

The gst-launch-1.0 log as follow:

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM), \
     width=(int)1920, height=(int)1080, format=(string)NV12, \
     framerate=(fraction)60/1" ! queue ! nv3dsink -e
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
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: 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  = 1
   Output Stream W = 1920 H = 1080
   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.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadExecute:734 NvBufSurfaceFromFd Failed.
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadFunction:245 (propagating)
Redistribute latency...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:04.014380544
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
Freeing pipeline ...


*** Please note that this reply is generated by LLM automatically ***

Based on the provided context, I’ll attempt to provide a comprehensive answer to the question.

The issue described seems to be related to the camera capture functionality on the Jetson Orin NX devkit with an IMX477 sensor. The problem occurs when trying to capture video for the second time, resulting in failure and requiring a reboot to resolve the issue.

To analyze this problem, let’s consider the following points:

  1. Device Tree Configuration: The device tree configuration is crucial for the camera to function correctly. Ensure that the device tree is properly configured for the IMX477 sensor. You can refer to the “Jetson Orin Technical Reference Manual” or “Orin Series SoC Technical Reference Manual” for details on RAW memory format and device tree configuration.
  2. V4L2 Sensor Driver: The V4L2 sensor driver is responsible for capturing raw data through the V4L2 interface. Run v4l2-compliance and v4l2-ctl to ensure that the driver is functioning correctly. You can refer to the “Verifying the V4L2 Sensor Driver” section for details on running these tests.
  3. CSI Interface: The CSI interface is used for camera capture on the Jetson Orin NX devkit. Ensure that the CSI interface is properly configured and that there are no issues with the serializer/deserializer (SerDes) links. You can refer to the “Jetson Virtual Channel with GMSL Camera Framework” section for details on CSI interface configuration and SerDes links.
  4. Power Management: Power management issues can cause problems with camera capture. Ensure that the power management settings are properly configured for the IMX477 sensor.
  5. Software Framework: The software framework used for camera capture might be causing issues. Ensure that the software framework is properly configured and that there are no issues with the virtual channel programming.

Comparing the provided context with similar issues, we can see that there are several topics related to camera capture issues on the Jetson Orin NX devkit, such as “CSI-0 with MIPI 4 lane is not working properly” and “CSI Camera 0 Hangs When Trying to Collect an Image with v4l2-ctl”. These topics might provide additional insights into resolving the issue.

In conclusion, the possible reasons for the camera capture issue on the Jetson Orin NX devkit with an IMX477 sensor could be related to device tree configuration, V4L2 sensor driver, CSI interface, power management, or software framework issues. Further investigation and testing are required to determine the root cause of the problem.

Recommendations:

  • Verify the device tree configuration for the IMX477 sensor.
  • Run v4l2-compliance and v4l2-ctl to ensure that the V4L2 sensor driver is functioning correctly.
  • Check the CSI interface configuration and SerDes links for any issues.
  • Ensure that power management settings are properly configured for the IMX477 sensor.
  • Review the software framework used for camera capture and verify that virtual channel programming is correct.

If the issue persists, please provide more details about the error messages and the exact steps taken to reproduce the issue.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Verify by v4l2-ctl if the same that could be the sensor driver or HW problem.

No, we can capture BG10 raw video by v4l2-ctl.
It’s not a HW problem.

Could you try another camera port.

Strangely, the devkit has two MIPI ports (cam0 and cam1). When I connect the IMX477 to cam1, the previous anomaly disappears.

The video stream is acquired normally every time via commands:

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM), \
     width=(int)1920, height=(int)1080, format=(string)NV12, \
     framerate=(fraction)60/1" ! queue ! nv3dsink -e

Any leads? Can we determine the cause from the logs of the nvargus-daemon.service mentioned earlier?

Maybe try on original connector to verify again.

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