Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
e750cd7
d4xx: hwmc return success on ioctl
Mar 20, 2024
cf7fe64
PR #189 from dmipx: d4xx: hwmc return success on ioctl
Nir-Az Mar 21, 2024
9dc4365
vi: channel: verify s/g callbacks for JP5.1.2
Mar 31, 2024
0663a91
PR #191 from dmipx: JP 5.1.2 vi s/g parm callbacks
Nir-Az Apr 1, 2024
60de23b
add more GHA builds
Nir-Az Apr 1, 2024
49fce0d
update build names
Nir-Az Apr 1, 2024
f6feb11
d4xx: bump to version 1.0.1.22
Apr 3, 2024
eb2657f
remove broken package
Nir-Az Apr 4, 2024
556c146
PR #193 from Nir-Az: Add GHA JP5.12 & JP6 builds
Nir-Az Apr 4, 2024
f4f590d
PR #195 from dmipx: D4xx ver 1.0.1.22
Nir-Az Apr 4, 2024
960472a
d4xx: return hwmc error code to lrs sdk.
Apr 1, 2024
b021b17
Merge pull request #192 from dmipx/hwmc-response-buffer
Nir-Az Apr 4, 2024
b82b6bb
Merge remote-tracking branch 'origin/master' into dev
Nir-Az Apr 7, 2024
41456c7
PR #200 from Nir-Az: merge master back to dev
Nir-Az Apr 8, 2024
c6284d2
add permissions to GHA flow
Nir-Az Apr 17, 2024
6cbc548
PR #203 from Nir-Az: Add permissions to GHA flow
Nir-Az Apr 18, 2024
0b99e99
jp5: tegra-i2c fix return value for tegra_i2c_change
May 13, 2024
a679ec4
PR #204 from dmipx: Tegra i2c patch
Nir-Az May 13, 2024
00ef0e4
d4xx: add recovery string to dfu device
May 20, 2024
c771904
Jetpack 6.0 offirical release support.
May 20, 2024
cd95945
jp6: fix nvidia-oot patch
May 22, 2024
d6b7649
jp6 official: Readme instructions
May 23, 2024
38c2e6f
jp6 - remove kernel image dependency for iio
May 23, 2024
7d047a1
jp6 - kernel config build iio as modules
May 26, 2024
9acac75
jp6 - fix jp5 build
May 26, 2024
06678a1
d4xx: improve commentary
May 27, 2024
3e7cdb7
PR #205 from dmipx: d4xx: add recovery string to dfu device
Nir-Az May 29, 2024
8e977c7
README: split documentation for each jp
May 30, 2024
0690e48
Update README_JP6.md
dmipx May 30, 2024
7a9e997
readme: R-TM branding
Jun 2, 2024
86d43e0
readme: update links and references
Jun 3, 2024
8fa4397
Update README_driver.md
dmipx Jun 3, 2024
49b4564
PR #206 from dmipx: Jetpack 6.0 official release support.
Nir-Az Jun 6, 2024
9535e99
readme fix
Arun-Prasad-V Jun 27, 2024
9beea21
readme: set modules and boot files location
Jun 25, 2024
c09b453
JP4 - updated manual build steps to remove BUILD_NUMBER env dependenc…
Arun-Prasad-V Jul 1, 2024
9380633
PR #211 from dmipx: readme: set modules and boot files location
Nir-Az Jul 1, 2024
55ccc03
Updated AE_SETPOINT_GET control's range
Arun-Prasad-V Jul 2, 2024
efc0149
PR #213 from Arun-Prasad-V: Updated AE_SETPOINT_GET control's range
Nir-Az Jul 2, 2024
ddcafa5
PR #212 from Arun-Prasad-V: readme fix
Nir-Az Jul 2, 2024
9dd602e
basic test infra
Arun-Prasad-V Jul 4, 2024
22e4d0f
added run_ci.py script
Arun-Prasad-V Jul 10, 2024
9b2d2d3
fixing typo
Arun-Prasad-V Jul 10, 2024
9793d82
Check FW version from DFU device info as well
Arun-Prasad-V Jul 11, 2024
bc82cc4
Porting stride alignment patch from JP 5.0.2 to 5.1.2 & 6.0
Arun-Prasad-V Jul 12, 2024
bd44de8
PR #217 from Arun-Prasad-V: Porting stride alignment patch from JP 5.…
Nir-Az Jul 16, 2024
8b96d30
Print test summary in console
Arun-Prasad-V Jul 16, 2024
a45edcc
printing pytest logs on console
Arun-Prasad-V Jul 23, 2024
29c0bb4
PR #214 from Arun-Prasad-V: basic test for validating fw version
Nir-Az Jul 23, 2024
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
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: C/C++ CI
name: Build JP 5.0.2

on:
push:
Expand All @@ -8,6 +8,8 @@ on:
pull_request:
branches: ['**']

permissions: read-all

jobs:
build:

Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/build-jp512.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Build JP 5.1.2

on:
push:
branches:
- master
- dev
pull_request:
branches: ['**']

permissions: read-all

jobs:
build:

runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v3
- name: setup workspace
run: yes | ./setup_workspace.sh 5.1.2
- name: apply patches
run: git config --global user.email "builder@example.com" && git config --global user.name "builder" && ./apply_patches.sh apply 5.1.2
- name: build
run: ./build_all.sh 5.1.2
25 changes: 25 additions & 0 deletions .github/workflows/build-jp6.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Build JP 6.0

on:
push:
branches:
- master
- dev
pull_request:
branches: ['**']

permissions: read-all

jobs:
build:

runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3
- name: setup workspace
run: yes | ./setup_workspace.sh 6.0
- name: apply patches
run: git config --global user.email "builder@example.com" && git config --global user.name "builder" && ./apply_patches.sh apply 6.0
- name: build
run: ./build_all.sh 6.0
230 changes: 20 additions & 210 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,231 +1,41 @@
# Intel® RealSense™ camera driver for GMSL* interface

# D457 MIPI on Jetson AGX Xavier
The RealSense MIPI platform driver enables the user to control and stream RealSense 3D MIPI cameras.
# D457 MIPI on NVIDIA® Jetson AGX Xavier™ and AGX Orin™
The RealSense MIPI platform driver enables the user to control and stream RealSense 3D MIPI cameras.
The system shall include:
* Jetson platform (Currently Supported JetPack versions are: 6.0, 5.1.2, 5.0.2, 4.6.1)
* NVIDIA® Jetson platform (Currently Supported JetPack versions are: 6.0, 5.1.2, 5.0.2, 4.6.1)
* RealSense De-Serialize board (https://store.intelrealsense.com/buy-intel-realsense-des457.html)
* NVIDIA® 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 (e.g. https://store.intelrealsense.com/buy-intel-realsense-depth-camera-d457.html)

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

![image](https://user-images.githubusercontent.com/64067618/216807681-ed679a79-71d6-43ab-bfde-e0abb019b72d.png)


## Jetson AGX Xavier board setup
# Documentation

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

## Build kernel, dtb and D457 driver

The developers can set up the source code with NVIDIA's Jetson git repositories by using the provided setup script:

```
# Using setup script, recommended for developers. If JetPack version is not given, default version will be chosen.
./setup_workspace.sh [JetPack_version]
```

Or download Jetson Linux source code tarball from
- [JetPack 6.0-DP BSP sources](https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v2.0/sources/public_sources.tbz2)
- [JetPack 5.1.2 BSP sources](https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v4.1/sources/public_sources.tbz2)
- [JetPack 5.0.2 BSP sources](https://developer.nvidia.com/embedded/l4t/r35_release_v1.0/sources/public_sources.tbz2)
- [JetPack 4.6.1 BSP sources](https://developer.nvidia.com/embedded/l4t/r32_release_v7.1/sources/t186/public_sources.tbz2)

```
# JetPack 6.0
mkdir -p l4t-gcc/6.0
cd ./l4t-gcc/6.0
wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v2.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_v2.0/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

# JetPack 5.1.2
mkdir -p l4t-gcc/5.1.2
cd ./l4t-gcc/5.1.2
wget https://developer.nvidia.com/embedded/jetson-linux/bootlin-toolchain-gcc-93 -O aarch64--glibc--stable-final.tar.gz
tar xf aarch64--glibc--stable-final.tar.gz
cd ../..
wget https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v4.1/sources/public_sources.tbz2
tar xjf public_sources.tbz2
cd Linux_for_Tegra/source/public
tar xjf kernel_src.tbz2

# JetPack 5.0.2
mkdir -p l4t-gcc/5.0.2
cd ./l4t-gcc/5.0.2
wget https://developer.nvidia.com/embedded/jetson-linux/bootlin-toolchain-gcc-93 -O aarch64--glibc--stable-final.tar.gz
tar xf aarch64--glibc--stable-final.tar.gz --strip-components 1
cd ../..
wget https://developer.nvidia.com/embedded/l4t/r35_release_v1.0/sources/public_sources.tbz2
tar xjf public_sources.tbz2
cd Linux_for_Tegra/source/public
tar xjf kernel_src.tbz2

# JetPack 4.6.1
mkdir -p l4t-gcc/4.6.1
cd ./l4t-gcc/4.6.1
wget http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
tar xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz --strip-components 1
cd ../..
wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.1/sources/t186/public_sources.tbz2
tar xjf public_sources.tbz2
cd Linux_for_Tegra/source/public
tar xjf kernel_src.tbz2
```

Apply D457 patches and build the kernel image, dtb and D457 driver.

```
# if using setup script
./apply_patches.sh [--one-cam | --dual-cam] apply [JetPack_version]

# or, if using direct download method
# ./apply_patches_ext.sh [--one-cam | --dual-cam] ./Linux_for_tegra/source/public [JetPack_version]
# for JP6.0, source path is ./Linux_for_tegra/source :
# ./apply_patches_ext.sh ./Linux_for_tegra/source 6.0

Note: The `--one-cam` and `--dual-cam` option applies only for JetPack 5.0.2,
compatible with adapter: https://store.intelrealsense.com/buy-intel-realsense-des457.html.
By setting the `--one-cam` option it builds DT with only camera on GMSL link A (default).
By setting the `--dual-cam` option it builds DT with dual cameras on GMSL link A and B.
The default is to single camera configuration for JetPack 5.0.2.

# build kernel, dtb and D457 driver
# install dependencies
sudo apt install build-essential bc flex bison
# method 1: build kernel Debian packages
./build_all_deb.sh [--no-dbg-pkg] [JetPack_version] [JetPack_source_dir]
# method 2: build kernel and modules only
./build_all.sh [JetPack_version] [JetPack_source_dir]

# remove our patches from JetPack kernel source code if using setup script
# ./apply_patches.sh reset [JetPack_version]
```

Debian packages will be generated in `images` folder.

## Install kernel and D457 driver to Jetson Orin
<details>
<summary>JP6.0 build results</summary>

- kernel image (not modified): `images/6.0/rootfs/boot/Image`
- dtb overlay: `images/6.0/rootfs/boot/tegra234-camera-d4xx-overlay.dtbo`
- oot modules: `images/6.0/rootfs/lib/modules/5.15.122-tegra/extra`

Following steps required:

1. Copy entire directory `images/6.0/rootfs/lib/modules/5.15.122-tegra/extra/` from host to `/lib/modules/5.15.122-tegra/extra/` on Orin
2. Copy `tegra234-camera-d4xx-overlay.dtbo` from host to `/boot/tegra234-camera-d4xx-overlay.dtbo` on Orin
3. Run $ `sudo /opt/nvidia/jetson-io/jetson-io.py`
1. Configure Jetson AGX CSI Connector
2. Configure for compatible hardware
3. Jetson RealSense Camera D457
4. $ `sudo depmod`
5. $ `echo "d4xx" | sudo tee /etc/modules-load.d/d4xx.conf`
4. Reboot

Copy them to the right places:
- NVIDIA® Jetson AGX Orin™ board setup - AGX Orin™ [JetPack 6.0](./README_JP6.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)

```
scp -r images/6.0/rootfs/boot/tegra234-camera-d4xx-overlay.dtbo nvidia@10.0.0.116:~/
scp -r images/6.0/rootfs/lib/modules/5.15.122-tegra/extra nvidia@10.0.0.116:~/
# RealSense metadata patched kernel modules
scp -r images/6.0/rootfs/lib/modules/5.15.122-tegra/kernel/drivers/media/v4l2-core/videodev.ko nvidia@10.0.0.116:~/
scp -r images/6.0/rootfs/lib/modules/5.15.122-tegra/kernel/drivers/media/usb/uvc/uvcvideo.ko nvidia@10.0.0.116:~/
# Kernel Image with SENSOR_HID support for RealSense USB cameras with IMU
scp -r images/6.0/rootfs/boot/Image nvidia@10.0.0.116:~/
```
## NVIDIA® Jetson AGX Xavier™ and AGX Orin™ board setup

on target:

```
sudo cp ~/tegra234-camera-d4xx-overlay.dtbo /boot/
# backup:
sudo tar -cjf /lib/modules/$(uname -r)/modules_$(uname -r)_extra.tar.bz2 /lib/modules/$(uname -r)/extra
sudo cp -r ~/extra /lib/modules/$(uname -r)/
# enable RealSense metadata:
sudo cp uvcvideo.ko /lib/modules/5.15.122-tegra/kernel/drivers/media/usb/uvc/uvcvideo.ko
sudo cp videodev.ko /lib/modules/5.15.122-tegra/kernel/drivers/media/v4l2-core/videodev.ko
# backup kernel (better to have additional boot entry in extlinux.conf)
sudo cp /boot/Image /boot/Image.orig
sudo cp Image /boot/Image
```

Enable d4xx overlay:

With Jetson-IO tool:
`sudo /opt/nvidia/jetson-io/jetson-io.py`

1. Configure Jetson AGX CSI Connector
2. Configure for compatible hardware
3. Jetson RealSense Camera D457

With command line

`sudo /opt/nvidia/jetson-io/config-by-hardware.py -n 2="Jetson RealSense Camera D457"`

Expected:
```
nvidia@ubuntu:~$ sudo /opt/nvidia/jetson-io/config-by-hardware.py -n 2="Jetson RealSense Camera D457"
Configuration saved to /boot/tegra234-camera-d4xx-overlay.dtbo.
Reboot system to reconfigure.
```
Enable d4xx autoload:

`echo "d4xx" | sudo tee /etc/modules-load.d/d4xx.conf`

`sudo depmod`

---

</details>

## Install kernel and D457 driver to Jetson AGX Xavier

1. Install the kernel and modules

1.1 If building with `build_all_deb.sh`

Copy the Debian package `linux-image-5.10.104-d457_5.10.104-d457-1_arm64.deb` to the Jetson AGX Xavier board and install with `sudo dpkg -i linux-image-5.10.104-d457_5.10.104-d457-1_arm64.deb`. The header, libc-dev, dbg and firmware packages are optional.

1.2 If building with `build_all.sh`

The necessary files are:

- kernel image `images/<JetPack_version>/arch/arm64/boot/Image`
- dtb `images/<JetPack_version>/arch/arm64/boot/dts/nvidia/tegra194-p2888-0001-p2822-0000.dtb`, or `images/4.6.1/arch/arm64/boot/dts/tegra194-p2888-0001-p2822-0000.dtb` for JetPack 4.6.1.
- D457 driver `images/<JetPack_version>/drivers/media/i2c/d4xx.ko`
- UVC Video driver `images/<JetPack_version>/drivers/media/usb/uvc/uvcvideo.ko`
- V4L2 Core Video driver `images/<JetPack_version>/drivers/media/v4l2-core/videobuf-core.ko`
- V4L2 VMalloc Video driver `images/<JetPack_version>/drivers/media/v4l2-core/videobuf-vmalloc.ko`

And copy them to the right places:
```
sudo cp Image /boot
sudo cp tegra194-p2888-0001-p2822-0000.dtb /boot/dtb
sudo cp d4xx.ko /lib/modules/5.10.104-tegra/kernel/drivers/media/i2c/
sudo cp uvcvideo.ko /lib/modules/5.10.104-tegra/kernel/drivers/media/usb/uvc/
sudo cp videobuf-core.ko /lib/modules/5.10.104-tegra/kernel/drivers/media/v4l2-core/
sudo cp videobuf-vmalloc.ko /lib/modules/5.10.104-tegra/kernel/drivers/media/v4l2-core/
sudo depmod
```
Please follow the [instruction](https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html) to flash JetPack to the Jetson AGX Xavier with NVIDIA SDK Manager or other methods NVIDIA provides. Make sure the board is ready to use.

2. Edit `/boot/extlinux/extlinux.conf` primary boot option's LINUX/FDT lines to use built kernel image and dtb file:
**NOTE** : On Jetsons with modified factory setup modifications to build and deploy steps should be made by developer.

```
LINUX /boot/Image-5.10.104-d457
FDT /usr/lib/linux-image-5.10.104-d457/tegra194-p2888-0001-p2822-0000.dtb
```
# JetPack build

3. Make D457 I2C module autoload at boot time: `echo "d4xx" | sudo tee /etc/modules-load.d/d4xx.conf`
- [JetPack 6.0](./README_JP6.md#build-environment-prerequisites)
- [JetPack 5.1.2](./README_JP5.md#build-kernel-dtb-and-d457-driver)
- [JetPack 5.0.2](./README_JP5.md#build-kernel-dtb-and-d457-driver)
- [JetPack 4.6.1](./README_JP4.md#build-kernel-dtb-and-d457-driver)

After rebooting Jetson, the D457 driver should work.
### Verify driver after installation
- Driver API manual page [Driver API page](./README_driver.md)

**NOTE**

Expand Down
Loading
Loading