This is the repository for OPAL Jetson out-of-tree kernel modules.
Every branch is versioned by its Linux4Tegra distribution (e.g. l4t-r36.5 aka Jetpack 6.2.2 is the current stable release).
-
The
generic/l4t_*branches contain non-camera-platform-specific modifications:-
The
hwpm,nvethernetrm,build/nvidia-publicandhardware/nvidia/tegra/nv-publicsubmodules all track the upstream repos from Nvidia Gitlab. -
nvidia-oottracks thel4t/l4t_<distro>branch of the OPAL fork of nvidia-oot. This branch generally tracks the nvidia upstream repo. -
h
ardware/nvidia/t23x/nv-publictracks theapl/l4t_<distro>branch in the OPAL fork of nvidia-t23x-public-dts. We generally don't maintain separate branches for each camera platform because the separate DTBs don't conflict with each other (and this reduces the branch confusion).
-
-
The
vc/l4t_*branches are specific to the odometry nano.-
The kernel module from the Vision Components MIPI driver is added commited directly to this repo.
-
nvidia-oot/uses thevc/l4t_*branch which includes OOT changes from VC. -
VC-specific DTBs are included in the shared hardware/nvidia/t23x/nv-public
-
-
The
trisect/l4t_*branches are specific to the Trisect subsea camera.-
The kernel module for the Allied Vision Alvium CSI2 cameras is added as a submodule.
-
nvidia-ootuses theavt/l4t_*branch which includes OOT changes from Antmicro and AVT. -
Antmicro / Allied Vision-specific DTBs are included in the shared hardware/nvidia/t23x/nv-public
-
-
Clone this repository including all submodules
git clone --recurse-submodules https://github.com/apl-ocean-engineering/opal-jetson-driver-release.git
or:
git clone https://github.com/apl-ocean-engineering/opal-jetson-driver-release.git git submodule update --init -
Download the Jetson Linux driver package (BSP) and cross compiler (registration with Nvidia required). The driver package / BSP must match your version of Jetpack:
-
Extract the driver package in this directory:
tar -xvf Jetson_Linux_r*.tbz2 -
Extract the kernel headers from the driver package in the
Linux_for_Tegra/kerneldirectory:cd Linux_for_Tegra/kernel/ tar -xvf kernel_headers.tbz2 -
Extract the cross compiler in this directory:
cd ../../ tar -xvf x-tools.tbz2 -
Set the appropriate environment variables:
source setup.sh -
Build everything:
make modules dtbs install
-
Build a distributable package
install.tar.bz2:make package
At this point the rebuilt kernel modules -- including both the new VC modules and a few customized versions of NVidia camera handler modules -- and additional device tree overlays can be installed onto a Jetson.
This can be done either by building a new set of images and flashing them to the device (essentially replacing the install process done through SDK Manager), or by installing them on an already-running module. For simplicity, my focus is the latter ....
-
Copy
install.tar.bz2to the device (called 'nano' in this case):scp -r install.tar.bz2 nano:~ -
Log into the device, and run the install script:
ssh nano tar xvf install.tar.bz2 cd install && ./install.sh -
Instruct the bootloader to apply the device tree overlay on startup. This can be done manually by editing the
/boot/extlinux/extlinux.conffile, though thejetson-iowrapper can be used to automated the process, either graphically with:sudo /opt/nvidia/jetson-io/jetson-io.py
or
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n 2="Camera VCMIPI Dual"Which instructs the scripts to install the overlay "Camera VCMIPI Dual" (this name is baked into the overlay file
tegra234-p3767-camera-p3768-vc_mipi-dual-imx.dtbo) for header "2" (the CSI Camera header).- Confirm the changes have created a new entry in
/boot/extlinux/extlinux.confA new entry something likethe following should exist (the args may vary)
DEFAULT JetsonIO LABEL JetsonIO MENU LABEL Custom Header Config: <CSI Allied Vision Alvium Dual> LINUX /boot/Image FDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0000-nv.dtb INITRD /boot/initrd APPEND ${cbootargs} root=PARTUUID=8ee022d3-6e8b-4ecf-9e37-1946eacdc6f6 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0 nv-auto-config OVERLAYS /boot/tegra234-p3767-camera-p3768-alvium-dual.dtbo- Reboot
- Confirm the changes have created a new entry in
Please be aware that all code revisions not explicitly listed in the Github Release section are considered a Beta Version.
For Beta Versions, the following applies in addition to the GPLv2 License:
THE SOFTWARE IS PRELIMINARY AND STILL IN TESTING AND VERIFICATION PHASE AND IS PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS AND IS BELIEVED TO CONTAIN DEFECTS. THE PRIMARY PURPOSE OF THIS EARLY ACCESS IS TO OBTAIN FEEDBACK ON PERFORMANCE AND THE IDENTIFICATION OF DEFECTS IN THE SOFTWARE, HARDWARE AND DOCUMENTATION.