I’m trying to connect an IMX477 camera module to the Jetson Orin 8GB (JetPack 6.2.1). This same camera previously worked fine on a Jetson Nano (the only difference is ribbon cable since orin has smaller CSI port), but on the Orin it’s not being detected at all.
What i have checked:
The camera doesn’t appear on any I2C bus
No /dev/video* devices are listed
Tried on CAM0
I Should expect I2C detects even without device tree support, right? do I need to install a custom device tree overlay?
*** Please note that this reply is generated by LLM automatically ***
To troubleshoot the issue with connecting an IMX477 camera module to the Jetson Orin 8GB with JetPack 6.2.1, let’s break down the steps you’ve taken and provide additional guidance.
Camera doesn’t appear on any I2C bus: This is a crucial step in verifying that the camera is not being detected by the system. The IMX477 camera module uses the I2C interface for communication, so it’s expected that it should appear on one of the I2C buses. Since it’s not being detected, it’s possible that there’s an issue with the camera module, the ribbon cable, or the CSI port on the Jetson Orin.
No dev/video devices are listed: This suggests that the camera is not being recognized by the system, which is consistent with the I2C detection issue.
Tried on CAM0: You’ve tried connecting the camera to the CAM0 interface, which is the correct interface for the IMX477 camera module.
Expect I2C detects even without device tree support: Yes, that’s correct. The I2C detection should work even without device tree support. However, device tree support is required for the camera to function properly.
To resolve the issue, you can try the following:
Verify the ribbon cable: Since you’ve mentioned that the ribbon cable is different due to the smaller CSI port on the Jetson Orin, double-check that the cable is properly connected and not damaged.
Check the camera module: Ensure that the camera module is functioning correctly and not damaged.
Install a custom device tree overlay: Yes, you will need to install a custom device tree overlay to support the IMX477 camera module on the Jetson Orin. You can find the device tree source code for the IMX477 camera module in the Jetson Linux kernel repository. You’ll need to compile the device tree and install it on your system.
Update the kernel: Make sure that your kernel is up-to-date, as newer kernel versions may include support for the IMX477 camera module.
In comparison to the Jetson Nano, the Jetson Orin has a different CSI port and may require a different device tree overlay. Additionally, the Jetson Orin has a more complex camera architecture, which may require additional configuration.
To further troubleshoot the issue, you can try the following:
Check the kernel logs: Look for any error messages related to the camera module in the kernel logs.
Use the i2cdetect command: Run the i2cdetect command to scan the I2C buses and see if the camera module is detected.
Use the v4l2-ctl command: Run the v4l2-ctl command to query the camera module and see if it’s recognized by the system.
By following these steps, you should be able to troubleshoot the issue and get the IMX477 camera module working on the Jetson Orin 8GB with JetPack 6.2.1.
*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***
> sudo journalctl -u nvargus-daemon --since "5 minutes ago" | grep -i camera
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: === NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections...=== gst-launch-1.0[3849]: Connection established (FFFF9962B840)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: ---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: ---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: (NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: (NvCamV4l2) Error ModuleNotPresent: (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: (NvOdmDevice) Error ModuleNotPresent: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 111)
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 382)
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 554)
Nov 10 21:55:38 ubuntu nvargus-daemon[868]: === gst-launch-1.0[3849]: CameraProvider initialized (0xffff94b1bad0)CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
By doing some initial checks, it seems like although you are setting width and height to 3840x2160, the driver is actually providing 4032x3040 which is what it actually reports.
If you check the file size in bytes, you will get exactly what is configured for Image Size in the driver:
wc -c < image_3840x2160.raw
24514560
And if you divide that by 2 bytes each pixel requires since we are dealing with RG10, and then you divide it once more by 4032 which should be actual width, you get 3040 which is the reported hight. This means that at least in terms of data captured you have it properly configured for 4K. Although if you are trying to capture smaller resolutions you might be still getting full 4K image.
As per the purple-ish image you reported as a result of 4K capture, it seems like a possible problem with the ISP configuration file. Do you have any custom ISP config file we could provide the NVIDIA board to improve color ?
Now, when it comes to the issue you reported when capturing full HD, can you provide a raw file for that scenario ?
best regards,
Andrew
Embedded Software Engineer at ProventusNova
Interesting.
That might be the issue for Full HD, given that if the Jetson capture subsystem is expecting full hd, but then for some reason the camera is providing 4K, then those type of issues can be observed.
One of my colleagues mentioned that he saw a similar error on a different forum, and this was the solution that the person we were supporting found to work for them. You might want to give it a try.
And for 4K I would suggest you try this ISP configuration file: camera_overrides.isp.gz (104.4 KB)
Note that I applied the same trick as you with the .gz file extension, please remove before use.
Also I would suggest you try one fix at the time.
I would first try the forum fix and then if 4K is still broke, you can try the config file.
Please keep me posted as you run the different tests.
best regards,
Andrew
Embedded Software Engineer at ProventusNova
Someone told me that The bypass is used by argus to send frames to ISP. When using argus, such as using nvarguscamerasrc with gstreamer, the bypass V4L control is set to 1.
When capturing from V4L interface, you would disable the bypass: