Connecting a USB Camera in addition to MIPI CSI cameras makes MIPI cameras inaccessible

Hello. We are planning to use the SurveilsQUAD Sony IMX290 Synchronized Multi-Camera System along with one or two Realsense D435i cameras on the Jetson AGX Xavier for our project. We aim to run jetson-inference object detection networks on frames of the MIPI cameras, and the RealSense cameras for other purposes.

We ran into the following issue: when connecting either the MIPI CSI cameras through MIPI ports or the Realsense cameras through any of the available USB ports, we can successfully stream from either using our gstreamer pipelines from the terminal. We use nvarguscamerasrc for the MIPI cameras and v4l2src for the Realsense cameras. Additionally, we can run jetson-inference code without problems. However, if both MIPI and USB cameras are connected at the same time, the MIPI CSI cameras become inaccessible; our gstreamer output returns the following message:

Error generated. /dvs/git/dirty/git-master linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp execute:525 Invalid camera device specified 2 specified, 0 max index

We also observed the following messages in the output of dmesg:

Aug 14 12:12:47 sensor-xavier kernel: CPU: 1 PID: 9228 Comm: nvargus-daemon Tainted: G W O 4.9.140 #1

Aug 14 12:12:47 sensor-xavier nvargus-daemon[6536]: (NvCamV4l2) Error BadParameter: Control 10094858 not found (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findControlById(), line 1874) Aug 14 12:12:47 sensor-xavier nvargus-daemon[6536]: (NvCamV4l2) Error BadParameter: (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getControlRange(), line 331) Aug 14 12:12:47 sensor-xavier nvargus-daemon[6536]: initialize: focus query failed Aug 14 12:12:47 sensor-xavier nvargus-daemon[6536]: (Argus) Error InvalidState: Scf SensorModeType 0 not found (in src/common/ScfTranslate.cpp, function fromNvMMSensorModeType(), line 356)

The RealSense cameras can be accessed fine, but none of the four MIPI cameras can (although they appear as /dev/video* devices). We also tested with another USB camera instead of the RealSense cameras (ELP OV2710), with the same results. The MIPI cameras cannot be accessed again until the Xavier is rebooted, making sure that no USB camera device is connected to it.

I have found two posts where the same issue has already been reported on the Jetson Nano and Jetson TX2 forums, respectively:

I have tried multiple patch files provided by the moderators on these threads, but none seemed to fix the issue.

Does anyone have a solution for this?

Which release? Did you try the latest J4.4?

No, we are currently using Jetpack 4.2 on this Jetson Xavier. The drivers for the multi-camera module depend on this version.

The libnvodm_imager.so from below should worked for J4.2
If not could you verify on the latest release.

Unfortunately, as I have said in the first post, I have tried all the patch files provided in the two threads I have referenced. However, none of them fixed this issue, including the libnvodm_imager.so file.

But that topic tell the problem was fixed by the lib.
Please check the lib by shasum to confirm.

The patch file provided in that topic does not fix the problem for us.

Please enable the daemon log to check if can get more information.

After plugging in a RealSense camera, we observe the following output from the dmesg tool:
dmesg_output_after_plugging_in_usb_cam.log (106.2 KB)

Here’s the output in /var/log/syslog:
syslog_output_after_plugging_in_usb_cam.log (1.2 MB)

In addition, this is the output of journalctl -b -u nvargus-damon, which shows the messages from nvargus-daemon just after plugging in the camera (at timestamp 11:00):
journalctl_nvargus_daemon.log (30.8 KB)
Here are the messages from that:

Sep 07 10:56:48 sensor-xavier systemd[1]: Started Argus daemon.
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: === NVIDIA Libargus Camera Service (0.97.3)=== Listening for connections...=== person_detector_node[8875]: Connection established (7F76DF01D0)OFParserListModules: module list: /pr
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: No module data found
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: No module data found
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: No module data found
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: No module data found
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module0/drivernode1
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree: /proc/device-tree/tegra-virtual-camera-platform/modules/module1/drivernode0
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: ---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: CAM: serial no file already exists, skips storing again---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: CAM: serial no file already exists, skips storing again---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Sep 07 10:57:15 sensor-xavier nvargus-daemon[6804]: CAM: serial no file already exists, skips storing again---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: CAM: serial no file already exists, skips storing again=== person_detector_node[8875]: CameraProvider initialized (0x7f70ab8550)CAM: serial no file already exists, skips storing a
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: initializeDevNode: Failed to open dev node '/dev/camera/video4'; No such file or directory, trying alternate default location
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter: Control 10094858 not found (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findControlById(), line 1874)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getControlRange(), line 331)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: initialize: focus query failed
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureServiceDeviceSensor.cpp, function open(), line 139)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 579)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 437)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function handleHotplugEvent(), line 336)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function onDeviceStatusChanged(), line 305)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: ---- imager: No override file found. ----
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: initializeDevNode: Failed to open dev node '/dev/camera/video5'; No such file or directory, trying alternate default location
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: getModeListLength: Error: mode list uninitialized
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error NotInitialized: No active Pixel Type set (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getModeInfoByIndex(), line 1490)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvOdmDevice) Error NotInitialized:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorNonViCsi.cpp, function loadModeResolution(), line
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error NotInitialized: No active Pixel Type set (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getModeInfoByIndex(), line 1490)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvOdmDevice) Error NotInitialized:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorNonViCsi.cpp, function loadModeResolution(), line
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error NotInitialized: No active Pixel Type set (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getModeInfoByIndex(), line 1490)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvOdmDevice) Error NotInitialized:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorNonViCsi.cpp, function loadModeResolution(), line
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error NotInitialized: No active Pixel Type set (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getModeInfoByIndex(), line 1490)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvOdmDevice) Error NotInitialized:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorNonViCsi.cpp, function loadModeResolution(), line
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error NotInitialized: No active Pixel Type set (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getModeInfoByIndex(), line 1490)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvOdmDevice) Error NotInitialized:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorNonViCsi.cpp, function loadModeResolution(), line
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error NotInitialized: No active Pixel Type set (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getModeInfoByIndex(), line 1490)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvOdmDevice) Error NotInitialized:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorNonViCsi.cpp, function loadModeResolution(), line
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter: Control 10094858 not found (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findControlById(), line 1874)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getControlRange(), line 331)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: initialize: focus query failed
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureServiceDeviceSensor.cpp, function open(), line 139)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 579)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 437)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function handleHotplugEvent(), line 336)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function onDeviceStatusChanged(), line 305)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: ---- imager: No override file found. ----
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: initializeDevNode: Failed to open dev node '/dev/camera/video6'; No such file or directory, trying alternate default location
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter: Control 10094858 not found (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findControlById(), line 1874)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function getControlRange(), line 331)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: initialize: focus query failed
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter: Error opening driver node (/dev/video); Is a directory. (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function powerO
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvCamV4l2) Error BadParameter:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 63)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: (NvOdmDevice) Error BadParameter:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/HotplugMonitor.cpp, function getDeviceType(), line 429)
Sep 07 11:00:35 sensor-xavier nvargus-daemon[6804]: handleHotplugCallback: Unknown device type
Sep 07 11:06:18 sensor-xavier nvargus-daemon[6804]: === person_detector_node[8875]: CameraProvider destroyed (0x7f70ab8550)=== person_detector_node[8875]: Connection closed (7F76DF01D0)=== person_detector_node[8875]: Connection cle
Sep 07 11:06:18 sensor-xavier nvargus-daemon[6804]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
Sep 07 11:06:18 sensor-xavier nvargus-daemon[6804]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
Sep 07 11:06:18 sensor-xavier nvargus-daemon[6804]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
Sep 07 11:06:18 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Sep 07 11:06:18 sensor-xavier nvargus-daemon[6804]: NvPclHwGetModuleList: No module data found


Note: I have included the first two logs as attachments since there is a large number of messages.

Currently we are not working on J4.2 anymore, please migrate to the latest release for debugging this issue. Thanks