Welcome to IMX 415 Camera Module repository
1. Camera Driver Course
Jetson Orin IMX415 Camera Driver Tutorial
Jetson Orin IMX415 Camera Driver Tutorial1. Scope of Application2. Repository File Description3. Pre-installation Confirmation4. Copy Files to Orin4.1 Copy from PC via SCP4.2 Confirm the Files Have Arrived on the Orin5. Back Up the Original Files6. Install the Device Tree and Driver7. Check the extlinux Configuration7.1 Direct Overwrite Configuration7.2 jetson-io.py Configuration8. Reboot9. Check Whether the Driver Is Loaded10. View Kernel Logs11. Check the Camera Device Node12. Test the Image Stream13. FAQ13.1 nv_imx415 Is Not Loaded13.2 Driver Loaded but No /dev/video*13.3 dmesg Permission Issue13.4 nv_imx415 Shows Used by: 013.5 Overlay Not Loaded After Boot13.6 Switch Back to the Original Configuration14. Notes
Tip: If you need to install a bracket, insert all 4 screws at the same time first, then tighten them.
Notes:
Contact surface position: The metal contacts at the end of the ribbon cable must face the spring contacts or contact array inside the FFC connector.
Blue reinforcement board: The blue reinforcement board is usually located on the non-contact surface of the ribbon cable. In standard installation, the metal contacts and the blue board are usually on opposite sides of the ribbon cable.
Silkscreen marking: The side of the ribbon cable with silkscreen text (such as AWM-20624) is usually the back. During installation, it should face away from the contact surface (the gold or silver metal part).
The metal must face toward the PCB side, otherwise the ribbon cable may burn out.
Then connect the other end to the metal contacts of the motherboard.


Note: The IMX415 has a DIP switch on its side called IR-CUT, which controls the infrared function. When set to the ON position, infrared is enabled and the image appears reddish — this is normal. When set to the OFF position, infrared is disabled and the image shows normal colors.

1. Scope of Application
This tutorial applies to the Jetson Orin environment corresponding to the repository:
- Kernel version:
5.15.148-tegra. - Boot method: extlinux.
- Carrier board/device tree: Based on
kernel_tegra234-p3768-0000+p3767-0005-nv-super-modify.dtband the HDR40 configuration in the repository. - Camera: IMX415, 4-lane MIPI CSI.
Do not directly apply the precompiled files to other kernel versions or other carrier boards. The vermagic of nv_imx415.ko must be 5.15.148-tegra.
If you are using our latest factory image, no action is required. If you are using an old image or another image and want to use the IMX415 camera, follow this guide.
2. Repository File Description
Files required:
jetson_orin/├── boot/│ ├── extlinux/│ │ └── extlinux.conf│ └── tegra234-p3767-camera-p3768-imx415-C-4lane.dtbo└── lib/ └── modules/ └── 5.15.148-tegra/ └── updates/ └── drivers/ └── media/ └── i2c/ └── nv_imx415.koCorresponding installation locations:
| File | Target path on Orin |
|---|---|
tegra234-p3767-camera-p3768-imx415-C-4lane.dtbo | /boot/ |
extlinux.conf | /boot/extlinux/ |
nv_imx415.ko | /lib/modules/5.15.148-tegra/updates/drivers/media/i2c/ |
3. Pre-installation Confirmation
Run on the Orin terminal:
xxxxxxxxxxuname -rMust output:
xxxxxxxxxx5.15.148-tegraConfirm that the original boot configuration and base device tree exist:
xxxxxxxxxxls -l /boot/extlinux/extlinux.confls -l /boot/dtb/kernel_tegra234-p3768-0000+p3767-0005-nv-super-modify.dtbIt is normal if this kernel_tegra234-p3768-0000+p3767-0005-nv-super-modify.dtb file is different; you should operate based on your actual files.
Confirm that the camera is connected to the Orin's 4-lane MIPI CSI interface, and that the FPC ribbon cable direction is correct and locked firmly.
There are 2 ways to configure this. For details, refer to the files in the corresponding downloaded folder. The operations are roughly the same, but they differ in the final configuration step.

4. Copy Files to Orin
4.1 Copy from PC via SCP
Assuming the Orin's IP is 192.168.11.99 and the user is jetson:
xscp jetson_orin/boot/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbo jetson@192.168.11.99:/home/jetson/Desktop/scp jetson_orin/boot/extlinux/extlinux.conf jetson@192.168.11.99:/home/jetson/Desktop/scp jetson_orin/lib/modules/5.15.148-tegra/updates/drivers/media/i2c/nv_imx415.ko jetson@192.168.11.99:/home/jetson/Desktop/You can refer to the file transfer tutorial to transfer files. The purpose of this step is mainly to transfer the files to your board for easy operation. Transfer them to the corresponding directories, and adjust the commands in the following steps based on your actual paths.
4.2 Confirm the Files Have Arrived on the Orin
xxxxxxxxxxls -l /home/jetson/Desktop/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbols -l /home/jetson/Desktop/extlinux.confls -l /home/jetson/Desktop/nv_imx415.ko5. Back Up the Original Files
Back up before modifying the boot configuration:
xxxxxxxxxxsudo cp /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.bakIf the target file already exists, back it up first as well:
xxxxxxxxxxif [ -f /boot/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbo ]; then sudo cp /boot/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbo /boot/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbo.bakfiif [ -f /lib/modules/5.15.148-tegra/updates/drivers/media/i2c/nv_imx415.ko ]; then sudo cp /lib/modules/5.15.148-tegra/updates/drivers/media/i2c/nv_imx415.ko /lib/modules/5.15.148-tegra/updates/drivers/media/i2c/nv_imx415.ko.bakfi6. Install the Device Tree and Driver
xxxxxxxxxxsudo cp /home/jetson/Desktop/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbo /boot/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbosudo cp /home/jetson/Desktop/extlinux.conf /boot/extlinux/extlinux.confsudo cp /home/jetson/Desktop/nv_imx415.ko /lib/modules/5.15.148-tegra/updates/drivers/media/i2c/nv_imx415.kosudo depmod -asudo modprobe nv_imx4157. Check the extlinux Configuration
7.1 Direct Overwrite Configuration
View the configuration file:
xxxxxxxxxxcat /boot/extlinux/extlinux.confFocus on confirming:
xxxxxxxxxxDEFAULT JetsonIOAnd that the JetsonIO section contains:
xxxxxxxxxxFDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0005-nv-super-modify.dtbOVERLAYS /boot/tegra234-p3767-camera-p3768-imx415-C-4lane.dtboThe OVERLAYS line must not be commented out, must not be another overlay, and the path must match the file under /boot/.
The kernel_tegra234-p3768-0000+p3767-0005-nv-super-modify.dtb file must be consistent with the file in the boot folder. For example, if the file on the Orin board in the picture is called kernel_tegra234-p3768-0000+p3767-0000-nv-super.dtb, you need to change your FDT line to FDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0000-nv-super.dtb, otherwise the device tree configuration file cannot be loaded. In severe cases, the system may even fail to boot.

7.2 jetson-io.py Configuration
Enter the following command in the terminal:
xxxxxxxxxxsudo /opt/nvidia/jetson-io/jetson-io.py

Use the arrow keys to select Configure Jetson 24pin CSI Connector, then press Enter to enter configuration:

Select Configure for compatible hardware, then press Enter to enter configuration:

Select Camera IMX219 Dual, then press Enter to enter configuration:

Select Save pin changes, then press Enter to enter configuration:

Select Save and reboot to reconfigure pins, then wait for the system to reboot:

8. Reboot
xxxxxxxxxxsudo rebootIf JetsonIO appears in the boot menu, select it; if only the default item boots automatically, confirm that DEFAULT JetsonIO is in effect.
9. Check Whether the Driver Is Loaded
After reboot, run:
xxxxxxxxxxlsmod | grep -E 'nv_imx415|tegra_camera'Expected output is similar to:
xxxxxxxxxxnv_imx415 20480 0tegra_camera 217088 4 nv_imx415,nvhost_isp5,nvhost_nvcsi_t194,nvhost_vi5The 0 after nv_imx415 indicates that there is currently no camera stream, which is normal. The Used by value only changes after a video stream is opened.
View module information:
xxxxxxxxxxmodinfo nv_imx415 | grep -E 'filename|vermagic|depends'Should show:
xxxxxxxxxxfilename: /lib/modules/5.15.148-tegra/updates/drivers/media/i2c/nv_imx415.kodepends: tegra-cameravermagic: 5.15.148-tegra SMP preempt mod_unload modversions aarch6410. View Kernel Logs
xxxxxxxxxxdmesg | grep -Ei 'imx415|nvcsi|vi5|isp5|tegra-camera'If the following appears:
xxxxxxxxxxdmesg: read kernel buffer failed: Operation not permittedIt means the current user has no direct permission to read dmesg. Use sudo:
xxxxxxxxxxsudo dmesg | grep -Ei 'imx415|nvcsi|vi5|isp5|tegra-camera'If sudo dmesg still fails, you can temporarily disable the dmesg restriction:
xxxxxxxxxxsudo sysctl kernel.dmesg_restrict=0sudo dmesg | grep -Ei 'imx415|nvcsi|vi5|isp5|tegra-camera'You can also view the kernel logs:
xxxxxxxxxxjournalctl -k -b | grep -Ei 'imx415|nvcsi|vi5|isp5|tegra-camera'11. Check the Camera Device Node
xxxxxxxxxxls /dev/video*
12. Test the Image Stream
First find the device number corresponding to the IMX415, then test using the following method:
xxxxxxxxxxnvgstcapture-1.0

13. FAQ
13.1 nv_imx415 Is Not Loaded
Load it manually:
xxxxxxxxxxsudo modprobe nv_imx415If it fails, check:
xxxxxxxxxxls -l /lib/modules/5.15.148-tegra/updates/drivers/media/i2c/nv_imx415.kosudo depmod -amodinfo nv_imx415 | grep vermagicIf the kernel version is not 5.15.148-tegra, you need to find an nv_imx415.ko that matches that kernel; do not use the precompiled file in the repository directly.
13.2 Driver Loaded but No /dev/video*
The most common causes are that the overlay did not take effect or the sensor probe failed. Check:
xxxxxxxxxxcat /boot/extlinux/extlinux.confls -l /boot/tegra234-p3767-camera-p3768-imx415-C-4lane.dtbosudo dmesg | grep -Ei 'imx415|tegra-vi|nvcsi|isp5'You can also check whether the imx415 node appears in the device tree:
xxxxxxxxxxfind /proc/device-tree -iname '*imx415*'If dmesg shows an I2C probe failure, first check the ribbon cable, camera power supply, and interface direction.
13.3 dmesg Permission Issue
Use:
xxxxxxxxxxsudo dmesgIf it still reports Operation not permitted:
xxxxxxxxxxsudo sysctl kernel.dmesg_restrict=0This setting is restored after reboot and is only used for temporary log viewing.
13.4 nv_imx415 Shows Used by: 0
This is normal. 0 means the module is loaded but no application is currently opening a camera stream; it does not mean the sensor is not recognized. Run v4l2-ctl or a GStreamer capture once and check again.
13.5 Overlay Not Loaded After Boot
Confirm that neither the DEFAULT JetsonIO line nor the OVERLAYS line in /boot/extlinux/extlinux.conf is commented out, and confirm that the corresponding dtbo filename and path match exactly. A reboot is required after modification.
13.6 Switch Back to the Original Configuration
Restore the backup:
xxxxxxxxxxsudo cp /boot/extlinux/extlinux.conf.bak /boot/extlinux/extlinux.confsudo reboot14. Notes
- The dtbo in the repository is prepared for
p3767/p3768, HDR40 configuration, and 4-lane IMX415. Do not use it directly on other carrier boards. nv_imx415.kodepends ontegra-camera, sotegra_cameramust be loaded.- Always back up before modifying extlinux to avoid the Orin failing to boot normally.