Hi, I purchased the Arducam IMX477 HQ Camera Board (B0279) for my NVIDIA Jetson Orin Nano Developer Kit. I’m getting this error in dmesg: “[12.595993] nv_imx477: no symbol version for module_layout”. Boot log shows Linux 5.10.120-tegra, imx219 and imx477 drivers load, but imx219 board setup fails with error -121 (i2c read probe). A few questions: 1) Does B0279 work well on Jetson Orin Nano Dev Kit or should I get B0249? 2) Is the mainboard of B0279 and B0249 the same or different? I already tried sudo apt-get install v4l-utils but no luck.
Thanks for reaching out! Let’s start by gathering some diagnostic info. Please reboot your device, then run these commands:
wget -O arducam-camera-bug-report-nvidia https://github.com/ketai-dhr/arducam-camera-bug-report/releases/download/tools/arducam-camera-bug-report-nvidia
chmod +x ./arducam-camera-bug-report-nvidia
./arducam-camera-bug-report-nvidia
This will generate an “arducam-bug-report.txt” file. Please send that over so I can take a look at what’s going on.
Here’s the bug report file. But I’m also confused about installing the driver on Jetpack 5.1.2 — the quick-start guide’s “Option A: Debian Packages” only shows options for Jetson Nano and Xavier NX on Jetpack 4.4.1/4.5, no Orin Nano option at all. Should I use the installation script instead?
Looking at the bug report, the camera hardware seems to be detected fine. Yes, use the installation script first to install the IMX477 driver. After that’s done, try these commands to get a live stream:
SENSOR_ID=0
FRAMERATE=30
gst-launch-1.0 nvarguscamerasrc sensor-id=$SENSOR_ID ! "video/x-raw(memory:NVMM),width=1920,height=1080,framerate=$FRAMERATE/1" ! nvvidconv ! nvoverlaysink
Let me know what you see!
Driver installed with no errors, but when I run the gst-launch command I get: “eglglessink cannot handle NVRM surface array”. Tried with nveglglessink instead but same error: “eglglessink cannot handle NVRM surface array gst_eglglessink_cuda_buffer_copy” and then “Internal data stream error”. Here’s my v4l2-ctl output showing the camera device is detected.
Try this updated command with explicit format, lower framerate, and the nvegltransform element:
gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=20/1, format=NV12' ! nvvidconv flip-method=0 ! 'video/x-raw,width=960, height=720' ! nvvidconv ! nvegltransform ! nveglglessink -e
The key additions are the explicit NV12 format, lower 20fps framerate, and the nvegltransform pipeline element to handle the buffer conversion properly.
That script works! Thanks. But my real goal is to use this with OpenCV in Python. I tried:
import cv2
gst_str = "nvarguscamerasrc sensor_id=0 ! video/x-raw(memory:NVMM),width=1920,height=1080,framerate=20/1,format=NV12 ! nvvidconv ! video/x-raw,width=960,height=720 ! nvvidconv ! nvegltransform ! nveglglessink -e"
cap = cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)
But it’s erroring out. Any reference code for Python?
Glad the preview works! Here’s reference code for using the Jetson camera with OpenCV Python:
Also, if you run into issues reconnecting the camera later, try dropping the framerate to 20fps. And if you ever get “Failed to create CaptureSession” errors or black screens, restart the nvargus daemon:
sudo systemctl restart nvargus-daemon.service
Or just reboot the Jetson. That usually clears up session timeout issues.