Hello NVIDIA Community,
I’m a beginner with Jetson Orin and running into camera issues that didn’t occur on my previous setups (Jetson Nano and Raspberry Pi 5). Any help would be greatly appreciated—I’m trying to get a stable video stream into OpenCV, ideally from both cameras, but at least one.
Hardware Setup
-
Platform: Jetson Orin Nano Super Developer Kit (8 GB RAM)
-
Cameras:
-
IMX477 (UC-517 Rev D3) – Connected to CSI port 1 (sensor-id=1)
-
IMX219 – Connected to CSI port 0 (sensor-id=0)
-
-
Cameras are connected via CSI interface; tested individually and together—no difference in behavior.
Software Details
-
JetPack/L4T Version: From /etc/nv_tegra_release:
text
# R36 (release), REVISION: 4.7, GCID: 42132812, BOARD: generic, EABI: aarch64, DATE: Thu Sep 18 22:54:44 UTC 2025 # KERNEL_VARIANT: oot TARGET_USERSPACE_LIB_DIR=nvidia TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia -
Kernel: From uname -a:
text
Linux roman-desktop 5.15.148-tegra #1 SMP PREEMPT Fri Jul 4 06:53:27 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux -
nvargus-daemon Status (via sudo systemctl status nvargus-daemon):
text
● nvargus-daemon.service - Argus daemon Loaded: loaded (/etc/systemd/system/nvargus-daemon.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2025-11-05 11:32:51 EAT; 44min ago Main PID: 877 (nvargus-daemon) Tasks: 1 (limit: 8810) Memory: 31.0M CPU: 42ms CGroup: /system.slice/nvargus-daemon.service └─877 /usr/sbin/nvargus-daemon Nov 05 11:32:51 roman-desktop systemd[1]: Started Argus daemon. -
Loaded Modules (relevant, via lsmod | grep -i imx):
text
nv_imx477 24576 0 tegra_camera 249856 4 nvhost_isp5,nvhost_nvcsi_t194,nv_imx477,nvhost_vi5
What Works
-
Basic GStreamer preview launches fine right after boot:
text
gst-launch-1.0 nvarguscamerasrc sensor-id=1 ! nvvidconv ! nveglglessink -e- Shows live video on the monitor for both cameras (tested individually).
What Doesn’t Work
-
OpenCV Integration Fails:
-
Can’t capture the stream in OpenCV. cap.isOpened() always returns False.
-
Test code:
python
import cv2 pipeline = "nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), width=1920, height=1080, framerate=30/1 ! nvvidconv ! appsink" cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER) print(cap.isOpened()) # Outputs: False -
No frames can be read: ret, frame = cap.read() always fails.
-
-
Hot-Plugging/Restarting Cameras Causes Crashes:
-
Cameras only initialize reliably on cold boot.
-
If I power off a camera (unplug/replug) and try to relaunch, it fails ~80% of the time.
-
Error on relaunch (from GStreamer or similar):
text
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-nvarguscamerasrc.cpp, threadFunction:245 (propagating) Got EOS from element "pipeline0" -
Results in black screen and pipeline crash. Only fix is a full reboot.
-
This happens regardless of whether cameras are connected together or separately.
-
Device Detection
-
From v4l2-ctl --list-devices:
text
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca): /dev/media0 vi-output, imx477 10-001a (platform:tegra-capture-vi:1): /dev/video1 vi-output, imx477 9-001a (platform:tegra-capture-vi:2): /dev/video0- Note: Only IMX477 devices listed? IMX219 might not be enumerating properly—any ideas?
-
I2C Detection on Bus 10 (via i2cdetect -y -r 10):
text
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- --- UU at 0x10/0x11 suggests some device (likely camera-related).
-
Kernel Logs (dmesg for camera-related, but requires sudo—output was permission-denied; can provide if needed):
text
dmesg: read kernel buffer failed: Operation not permitted -
System Errors (via journalctl -b -p err | tail -20):
text
Nov 05 11:32:57 roman-desktop gnome-session-binary[1790]: GLib-GIO-CRITICAL: g_bus_get_sync: assertion 'error == NULL || *error == NULL' failed Nov 05 11:32:57 roman-desktop gnome-session-binary[1790]: GLib-GIO-CRITICAL: g_bus_get_sync: assertion 'error == NULL || *error == NULL' failed Nov 05 11:33:08 roman-desktop gdm-password][2034]: gkr-pam: unable to locate daemon control file Nov 05 11:33:10 roman-desktop systemd[2043]: Failed to start Application launched by gnome-session-binary. Nov 05 11:33:10 roman-desktop systemd[2043]: Failed to start Application launched by gnome-session-binary. Nov 05 11:33:10 roman-desktop systemd[2043]: Failed to start Application launched by gnome-session-binary. Nov 05 11:33:10 roman-desktop systemd[2043]: Failed to start Application launched by gnome-session-binary. Nov 05 11:33:13 roman-desktop systemd[2043]: Failed to start Application launched by gnome-session-binary. Nov 05 11:33:13 roman-desktop systemd[2043]: Failed to start Application launched by gnome-session-binary. Nov 05 11:33:16 roman-desktop gdm-launch-environment][1045]: GLib-GObject: g_object_unref: assertion 'G_IS_OBJECT (object)' failed- Mostly GNOME-related; nothing obvious about cameras.
Goal
-
Stable video capture in OpenCV (at least from one camera, preferably both simultaneously).
-
Fix the hot-plug crash so I don’t need reboots every time.
I’ve searched the forums but couldn’t find exact matches for this combo (IMX477 + IMX219 on Orin Nano). Any suggestions on pipeline tweaks, driver configs, or workarounds? Happy to provide more logs (e.g., full dmesg with sudo) or test patches.
Thanks in advance!
-Roman