Jetson Orin Nano CSI Camera Integration Issues
Issue Overview
Users are experiencing difficulties integrating CSI cameras with the Nvidia Jetson Orin Nano developer kit, particularly when using custom carrier boards. The main symptom is the inability to generate the /dev/video0 device node, which is crucial for camera functionality. This issue occurs during the setup process and prevents users from utilizing the camera in their applications. The problem appears to be persistent across different attempts and configurations.
Key points:
- The issue affects custom carrier boards with 4-lane CSI camera configurations
- Users are unable to generate the /dev/video0 device node
- The problem persists even after modifying device trees and kernel configurations
- The issue is observed with Jetpack 6.0 and kernel version 5.15.136-tegra
Possible Causes
-
Incorrect device tree configuration: The camera nodes or device tree overlays may not be properly configured for the custom carrier board and specific camera model (e.g., IMX390).
-
Incompatible camera driver: The camera driver may not be compatible with the Jetson Orin Nano or the specific Jetpack version being used.
-
CSI lane configuration mismatch: The Orin Nano DevKit carrier board supports 4-lane camera only on the Cam0 slot, which may cause issues with custom boards using different configurations.
-
Kernel module loading issues: The necessary kernel modules for the camera driver may not be loading correctly.
-
Overlay application problems: The device tree overlay (DTBO) may not be applied correctly during the boot process.
-
Hardware connectivity issues: There could be problems with the physical connection between the camera and the custom carrier board.
Troubleshooting Steps, Solutions & Fixes
-
Verify camera compatibility:
- Ensure that the camera model (e.g., IMX390) is supported by the Jetson Orin Nano platform.
- Check the Nvidia documentation for a list of compatible cameras and their required configurations.
-
Review and update device tree configuration:
- Carefully examine the device tree file (e.g., tegra234-p3737-0000+p3701-0004-nv_csys.dts) to ensure it correctly defines the camera nodes.
- Make sure the camera nodes are properly enabled:
imx390_a@1b { status = "okay"; }; imx390_b@1c { status = "okay"; };
- Verify that the CSI lane configuration matches your hardware setup.
-
Create and apply a correct device tree overlay (DTBO):
- Follow the instructions in the Release Notes (r36.3) section 4.2. Device Registration to create a proper DTBO for your camera.
- Ensure the DTBO is placed in the correct directory:
JetPack_6.0_Linux_JETSON-AGX_RIN_TARGETS/Linux_for_Tegra/kernel/dtb/
- Modify the flashing command to include your custom DTBO:
sudo ./flash.sh jetson-orin-nano-devkit mmcblk0p1 -C "OVERLAY_DTB_FILE+=,<your-custom-dtbo-file>.dtbo"
-
Verify DTBO application:
- After booting, check if the DTBO has been applied correctly by examining relevant sysfs nodes. For example:
cat /proc/device-tree/cam_i2cmux/i2c@0/status
- The output should be "okay" if the DTBO is applied successfully.
- After booting, check if the DTBO has been applied correctly by examining relevant sysfs nodes. For example:
-
Check kernel module loading:
- Review the kernel boot log for any errors related to camera driver or module loading:
dmesg | grep -i camera dmesg | grep -i csi
- Ensure that the necessary camera and CSI-related modules are loaded:
lsmod | grep -i camera lsmod | grep -i csi
- Review the kernel boot log for any errors related to camera driver or module loading:
-
Manually load camera driver:
- If the driver is not loading automatically, try loading it manually:
sudo modprobe <camera_driver_name>
- Replace <camera_driver_name> with the appropriate driver for your camera (e.g., imx390).
- If the driver is not loading automatically, try loading it manually:
-
Disable conflicting DTBOs:
- If you’re using a custom camera, disable the default camera DTBO to prevent conflicts:
sudo sed -i 's/OVERLAY_DTB_FILE+=",tegra234-p3768-0000+p3767-0000-dynamic.dtbo"/#OVERLAY_DTB_FILE+=",tegra234-p3768-0000+p3767-0000-dynamic.dtbo"/' /etc/nv_tegra_release
- If you’re using a custom camera, disable the default camera DTBO to prevent conflicts:
-
Verify hardware connections:
- Double-check all physical connections between the camera and the custom carrier board.
- Ensure that the CSI lanes are correctly wired and that there are no loose connections.
-
Update Jetpack and camera drivers:
- Make sure you are using the latest version of Jetpack 6.0 and have the most up-to-date camera drivers installed.
-
Consult Nvidia documentation:
- Review the Jetson Linux Developer Guide, particularly the sections on camera integration and kernel adaptation:
https://docs.nvidia.com/jetson/archives/r36.3/DeveloperGuide/index.html
- Review the Jetson Linux Developer Guide, particularly the sections on camera integration and kernel adaptation:
If the issue persists after trying these steps, consider reaching out to Nvidia developer support or consulting with the manufacturer of your custom carrier board for further assistance.