Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ The system shall include:

# Documentation

- NVIDIA® Jetson AGX Orin™ board setup - AGX Orin™ [JetPack 6.x](./README_JP6.md) setup guide
- NVIDIA® Jetson AGX Orin™ board setup - AGX Orin™ [JetPack 6.0](./README_JP6.0.md) setup guide
- NVIDIA® Jetson AGX Xavier™ board setup - AGX Xavier™ [JetPack 5.x.2](./README_JP5.md) setup guide
- NVIDIA® Jetson AGX Xavier™ board setup - AGX Xavier™ [JetPack 4.6.1](./README_JP4.md) setup guide
- Build Tools manual page [Build Manual page](./README_tools.md)
Expand All @@ -29,7 +29,8 @@ Please follow the [instruction](https://docs.nvidia.com/sdk-manager/install-with

# JetPack build

- [JetPack 6.x](./README_JP6.md#build-environment-prerequisites)
- [JetPack 6.0](./README_JP6.0.md#build-environment-prerequisites)
- [JetPack 6.2](./README_JP6.2.md#build-environment-prerequisites)
- [JetPack 5.x.2](./README_JP5.md#build-kernel-dtb-and-d457-driver)
- [JetPack 4.6.1](./README_JP4.md#build-kernel-dtb-and-d457-driver)

Expand Down
320 changes: 320 additions & 0 deletions README_JP6.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,320 @@
# Intel® RealSense™ camera driver for GMSL* interface

# D457 MIPI on NVIDIA® Jetson AGX Orin™ JetPack 6.x
The Intel® RealSense™ MIPI platform driver enables the user to control and stream RealSense™ 3D MIPI cameras.
The system shall include:
* NVIDIA® Jetson™ platform Supported JetPack versions are:
- [6.2 production release](https://developer.nvidia.com/embedded/jetpack-sdk-62)
- [6.1 production release](https://developer.nvidia.com/embedded/jetpack-sdk-61)
- [6.0 production release](https://developer.nvidia.com/embedded/jetpack-sdk-60)
* RealSense™ [De-Serialize board](https://store.intelrealsense.com/buy-intel-realsense-des457.html)
* Jetson AGX Orin™ Passive adapter board from [Leopard Imaging® LI-JTX1-SUB-ADPT](https://leopardimaging.com/product/accessories/adapters-carrier-boards/for-nvidia-jetson/li-jtx1-sub-adpt/)
* RS MIPI camera [D457](https://store.intelrealsense.com/buy-intel-realsense-depth-camera-d457.html)

![orin_adapter](https://github.com/dmipx/realsense_mipi_platform_driver/assets/104717350/524e3eb6-6e6b-41cf-9562-9c0f920dd821)


> Note: This MIPI reference driver is based on RealSense™ de-serialize board. For other de-serialize boards, modification might be needed.

### Links
- Intel® RealSense™ camera driver for GMSL* interface [Front Page](./README.md)
- NVIDIA® Jetson AGX Orin™ board setup - AGX Orin™ [JetPack 6.0](./README_JP6.0.md) setup guide
- NVIDIA® Jetson AGX Xavier™ board setup - AGX Xavier™ [JetPack 5.x.2](./README_JP5.md) setup guide
- NVIDIA® Jetson AGX Xavier™ board setup - AGX Xavier™ [JetPack 4.6.1](./README_JP4.md) setup guide
- Build Tools manual page [Build Manual page](./README_tools.md)
- Driver API manual page [Driver API page](./README_driver.md)

## NVIDIA® Jetson AGX Orin™ board setup

Please follow the [instruction](https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html) to flash JetPack to the NVIDIA® Jetson AGX Orin™ with NVIDIA® SDK Manager or other methods NVIDIA provides. Make sure the board is ready to use.



## Build environment prerequisites
```
sudo apt-get install -y build-essential bc wget flex bison curl libssl-dev xxd tar
```
## Build NVIDIA® kernel drivers, dtb and D457 driver

1. Clone [realsense_mipi_platform_driver](https://github.com/IntelRealSense/realsense_mipi_platform_driver.git) repo.
2. The developers can set up build environment, ARM64 compiler, kernel sources and NVIDIA's Jetson git repositories by using the setup script.
3. Apply patches for kernel drivers, nvidia-oot module and tegra devicetree.
4. Build project
5. Apply build results to target (Jetson).
6. Configure target.

Assuming building for 6.0. One can also build for 6.1, 6.2 just replace the last parameter.
```
git clone --branch dev --single-branch https://github.com/IntelRealSense/realsense_mipi_platform_driver.git
cd realsense_mipi_platform_driver
./setup_workspace.sh 6.0
./apply_patches.sh 6.0
./build_all.sh 6.0
```
Note: dev_dbg() log support will not be enabled by default. If needed, run the `./build_all.sh` script with `--dev-dbg` option like below.
```
./build_all.sh --dev-dbg 6.0
```



## JetPack manual build - cross compile x86-64 (CI deploy)

[NVIDIA® JetPack 6.2: Jetson Linux 36.4.3](https://developer.nvidia.com/embedded/jetson-linux-r3643)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is 6.0 doc

1. Download Jetson Linux Driver Package - [JetPack 6.2 BSP sources](https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v4.3/release/jetson_linux_r36.4.3_aarch64.tbz2)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same

2. Download Toolchain ARM64 compiler - [Bootlin Toolchain gcc 11.3](https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/toolchain/aarch64--glibc--stable-2022.08-1.tar.bz2)
3. Apply patches for kernel drivers, nvidia-oot module and tegra devicetree.
4. Build cross-compile project on host (Build PC) or natively on target (Jetson).
5. Apply build results to target (Jetson).
6. Configure target.

```
# JetPack 6.0
mkdir -p l4t-gcc/6.x
cd ./l4t-gcc/6.x
wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/toolchain/aarch64--glibc--stable-2022.08-1.tar.bz2 -O aarch64--glibc--stable-final.tar.bz2
tar xf aarch64--glibc--stable-final.tar.bz2 --strip-components 1
cd ../..
wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v4.3/sources/public_sources.tbz2
tar xjf public_sources.tbz2
cd Linux_for_Tegra/source
tar xjf kernel_src.tbz2
tar xjf kernel_oot_modules_src.tbz2
tar xjf nvidia_kernel_display_driver_source.tbz2
cd ../..

./apply_patches_ext.sh 6.0 Linux_for_Tegra/source

cp ./nvidia-oot/Makefile Linux_for_Tegra/source
cp ./kernel/kernel-jammy-src/Makefile Linux_for_Tegra/source/kernel

# build kernel, dtb and D457 driver
./build_all.sh 6.0 ./Linux_for_Tegra/source
```
Note: dev_dbg() log support will not be enabled by default. If needed, run the `./build_all.sh` script with `--dev-dbg` option like below.
```
./build_all.sh --dev-dbg 6.0 ./Linux_for_Tegra/source
```

## Archive JetPack 6.x build results (optional)
For 6.0 the kernel version is 5.15.136-tegra.
- kernel image : `images/6.0/rootfs/boot/Image`
- dtb: `images/6.0/rootfs/boot/dtb/tegra234-p3737-0000+p3701-0000-nv.dtb`
- dtb overlay: `images/6.0/rootfs/boot/tegra234-camera-d4xx-overlay.dtbo`
- dtb dual camera overlay: `images/6.0/rootfs/boot/tegra234-camera-d4xx-overlay-dual.dtbo`
- kernel modules: `images/6.0/rootfs/lib/modules/5.15.136-tegra`

## Backup JetPack 6.0 boot configuration and drivers (optional)
```
echo "Backup boot configuration"
sudo cp /boot/tegra234-p3737-0000+p3701-0000-nv.dtb /boot/tegra234-p3737-0000+p3701-0000-nv-bkp.dtb
# Note: If using a production board and not a dev kit copy the relevant dtb file below
sudo cp /boot/tegra234-p3737-0000+p3701-0005-nv.dtb /boot/tegra234-p3737-0000+p3701-0005-nv-bkp.dtb
```

## Deploy build results on Jetson target
On build host, copy build results to the right places.
Assuming user 'nvidia' on Jetson with ip: `10.0.0.116` (if building natively on Jetson use $USER@localhost):

```
# Configuration files
tar czf rootfs.tar.gz -C images/6.2/rootfs boot lib
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect path reference: This file is for JetPack 6.0, but the tar command references 'images/6.2/rootfs'. It should reference 'images/6.0/rootfs' instead.

Suggested change
tar czf rootfs.tar.gz -C images/6.2/rootfs boot lib
tar czf rootfs.tar.gz -C images/6.0/rootfs boot lib

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Co-Pilot is right

scp rootfs.tar.gz [email protected]:
```

## Install kernel drivers, extra modules and device-tree to Jetson AGX Orin

Following steps required:

1. Copy build artifacts:
If you build locally use those commands:
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected grammar: 'use those commands' should be 'use these commands'.

Suggested change
If you build locally use those commands:
If you build locally use these commands:

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right again

```
sudo cp -r ./images/6.0/rootfs/lib/modules/5.15.136-tegra /lib/modules/.
sudo cp ./images/6.0/rootfs/boot/tegra234-camera-d4xx-overlay.dtbo /boot/.
sudo cp ./images/6.0/rootfs/boot/dtb/tegra234-p3737-0000+p3701-0000-nv.dtb /boot/dtb/.
sudo cp ./images/6.0/rootfs/boot/Image /boot/
```
In case of scp copy from host use this commands:
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected grammar: 'use this commands' should be 'use these commands'.

Suggested change
In case of scp copy from host use this commands:
In case of scp copy from host use these commands:

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same

```
tar xf rootfs.tar.gz
sudo cp -r ./lib/modules/5.15.136-tegra /lib/modules/.
sudo cp ./boot/tegra234-camera-d4xx-overlay.dtbo /boot/.
sudo cp ./boot/dtb/tegra234-p3737-0000+p3701-0000-nv.dtb /boot/dtb/.
sudo cp ./boot/Image /boot/
```
2. Run $ `sudo /opt/nvidia/jetson-io/jetson-io.py`, to exit choose save & reboot:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to make sure why it didn't work when I ran this readme on a clean machine

1. Configure Jetson AGX CSI Connector
2. Configure for compatible hardware
3. Choose appropriate configuration:
i. Jetson RealSense Camera D457
ii. Jetson RealSense Camera D457 dual
5. Choose to save & reboot

3. Enable and run depmod scan for "extra" & "kernel" modules
```
# enable extra & kernel modules
# original file content: cat /etc/depmod.d/ubuntu.conf -- search updates ubuntu built-in
sudo sed -i 's/search updates/search extra updates kernel/g' /etc/depmod.d/ubuntu.conf
# update driver cache
sudo depmod
echo "d4xx" | sudo tee /etc/modules-load.d/d4xx.conf
```
4.
Verify bootloader configuration
Comment on lines +162 to +163
Copy link

Copilot AI Nov 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step 4 heading is incomplete. The line '4.' should include the full description on the same line as 'Verify bootloader configuration' for consistency with other numbered steps.

Suggested change
4.
Verify bootloader configuration
4. Verify bootloader configuration

Copilot uses AI. Check for mistakes.
```
cat /boot/extlinux/extlinux.conf
----<CUT>----
LABEL JetsonIO
MENU LABEL Custom Header Config: <CSI Jetson RealSense Camera D457>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0000-nv.dtb
APPEND ${cbootargs} root=PARTUUID=bbb3b34e-......
OVERLAYS /boot/tegra234-camera-d4xx-overlay.dtbo
----<CUT>----
```
On Jetson target (user home folder) assuming backup step was followed:

### Verify driver loaded - on Jetson:
- Driver API manual page [Driver API page](./README_driver.md)

```
nvidia@ubuntu:~$ sudo dmesg | grep tegra-capture-vi
[ 9.357521] platform 13e00000.host1x:nvcsi@15a00000: Fixing up cyclic dependency with tegra-capture-vi
[ 9.419926] tegra-camrtc-capture-vi tegra-capture-vi: ep of_device is not enabled endpoint.
[ 9.419932] tegra-camrtc-capture-vi tegra-capture-vi: ep of_device is not enabled endpoint.
[ 10.001170] tegra-camrtc-capture-vi tegra-capture-vi: subdev DS5 mux 9-001a bound
[ 10.025295] tegra-camrtc-capture-vi tegra-capture-vi: subdev DS5 mux 12-001a bound
[ 10.040934] tegra-camrtc-capture-vi tegra-capture-vi: subdev DS5 mux 13-001a bound
[ 10.056151] tegra-camrtc-capture-vi tegra-capture-vi: subdev DS5 mux 14-001a bound
[ 10.288088] tegra-camrtc-capture-vi tegra-capture-vi: subdev 13e00000.host1x:nvcsi@15a00000- bound
[ 10.324025] tegra-camrtc-capture-vi tegra-capture-vi: subdev 13e00000.host1x:nvcsi@15a00000- bound
[ 10.324631] tegra-camrtc-capture-vi tegra-capture-vi: subdev 13e00000.host1x:nvcsi@15a00000- bound
[ 10.325056] tegra-camrtc-capture-vi tegra-capture-vi: subdev 13e00000.host1x:nvcsi@15a00000- bound

nvidia@ubuntu:~$ sudo dmesg | grep d4xx
[ 9.443608] d4xx 9-001a: Probing driver for D45x
[ 9.983168] d4xx 9-001a: ds5_chrdev_init() class_create
[ 9.989521] d4xx 9-001a: D4XX Sensor: DEPTH, firmware build: 5.15.1.0
[ 10.007813] d4xx 12-001a: Probing driver for D45x
[ 10.013899] d4xx 12-001a: D4XX Sensor: RGB, firmware build: 5.15.1.0
[ 10.025787] d4xx 13-001a: Probing driver for D45x
[ 10.029095] d4xx 13-001a: D4XX Sensor: Y8, firmware build: 5.15.1.0
[ 10.041282] d4xx 14-001a: Probing driver for D45x
[ 10.044759] d4xx 14-001a: D4XX Sensor: IMU, firmware build: 5.15.1.0

```

### Known issues
- Camera not recognized
Verify I2C MUX detected. If "probe failed" reported, replace extension board adapter (LI-JTX1-SUB-ADPT).
```
nvidia@ubuntu:~$ sudo dmesg | grep pca954x
[ 3.933113] pca954x 2-0072: probe failed
```

- Configuration with jetson-io tool system fail to boot with message "couldn't find root partition"
Verify bootloader configuration
`/boot/extlinux/extlinux.conf`
Sometimes configuration tool missing APPEND parameters. Duplicate `primary` section `APPEND` line to `JetsonIO` `APPEND` section, verify it's similar.

Example Bad:
```
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=634b7e44-aacc-4dd9-a769-3a664b83b159 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 nv-auto-config

LABEL JetsonIO
MENU LABEL Custom Header Config: <CSI Jetson RealSense Camera D457 dual>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0000-nv.dtb
INITRD /boot/initrd
APPEND ${cbootargs}
OVERLAYS /boot/tegra234-camera-d4xx-overlay-dual.dtbo
```
Example Good:
```
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=634b7e44-aacc-4dd9-a769-3a664b83b159 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 nv-auto-config

LABEL JetsonIO
MENU LABEL Custom Header Config: <CSI Jetson RealSense Camera D457 dual>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0000-nv.dtb
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=634b7e44-aacc-4dd9-a769-3a664b83b159 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 nv-auto-config
OVERLAYS /boot/tegra234-camera-d4xx-overlay-dual.dtbo
```
- Configuration tool jetson-io terminates without configuration menu.
verify that `/boot/dtb` has only one dtb file
```
nvidia@ubuntu:~$ ls /boot/dtb/
kernel_tegra234-p3737-0000+p3701-0000-nv.dtb
```

- kernel does not recognize the I2C device
```
# Make sure which Jetson Carrier board is used:
# p3701-0000 → Dev kit carrier board
# p3701-0005 → Production carrier board or custom carrier
# if you have the *0005* board, replace the relevant dtb file in in the instructions above

Example:
sudo cat /proc/device-tree/compatible

Output:
nvidia,p3701-0000
```
### Notes
- With the introduction of meta data support for depth IR starting from release r/1.0.1.27, calibration format streaming requires a separate DTB that disables meta data since the camera does not metadata in calibration mode.
- If calibration is needed, it's recommended to add `d457_calib` boot option as shown below.

```
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=634b7e44-aacc-4dd9-a769-3a664b83b159 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 nv-auto-config

LABEL JetsonIO
MENU LABEL Custom Header Config: <CSI Jetson RealSense Camera D457 dual>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0000-nv.dtb
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=634b7e44-aacc-4dd9-a769-3a664b83b159 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 nv-auto-config
OVERLAYS /boot/tegra234-camera-d4xx-overlay-dual.dtbo

LABEL JetsonIO_calib
MENU LABEL Custom Header Config: <CSI Jetson RealSense Camera D457 dual - Calibration>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3737-0000+p3701-0000-nv.dtb
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=634b7e44-aacc-4dd9-a769-3a664b83b159 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb video=efifb:off console=tty0 nv-auto-config
OVERLAYS /boot/tegra234-camera-d4xx-overlay-dual.calib.dtbo
```

- To generate `tegra234-camera-d4xx-overlay.calib.dtbo` and `tegra234-camera-d4xx-overlay-dual.calib.dtbo` on the Host build system, replace the contents of the below files:
`tegra234-camera-d4xx-overlay.dts` by the contents of `tegra234-camera-d4xx-overlay.calib.dts`

`tegra234-camera-d4xx-overlay-dual.dts` by the contents of `tegra234-camera-d4xx-overlay-dual.calib.dts`

- Reset and reapply patches and rebuild driver:
```
./apply_patches.sh 6.0 reset

./apply_patches.sh 6.0

./build_all.sh 6.0
```

- Deploy 2 DTBO files on the Jetson:
- In `./images/6.0/rootfs/boot/` folder, locate and rename the following DTBO files:
- Rename `tegra234-camera-d4xx-overlay.dtbo` to `tegra234-camera-d4xx-overlay.calib.dtbo`
- Rename `tegra234-camera-d4xx-overlay-dual.dtbo` to `tegra234-camera-d4xx-overlay-dual.calib.dtbo`
- Copy the two DTBO files from the build Host to `/boot/` on the Jetson.

---
Loading