Jetson AGX Orin Setup

This guide covers the required steps to set up an NVIDIA Jetson AGX Orin. The Jetson runs NVIDIA Jetson Linux, an Ubuntu-based distribution with drivers and utilities optimized for the Jetson hardware.

The installation guide aims to be self-contained. However, the following resources are generally useful for developers working with the NVIDIA Jetson Orin platform:

OS Installation

There are three ways to install/upgrade the Jetson OS. We recommend using the pre-built image.

2. SDK Manager

Download and install the SDK Manager and follow the SDK Manager Documentation.

Note

These instructions require an Ubuntu Host 20.04 or 22.04, or a CentOS/RedHat system. They will not work on other systems or virtual machines unless you do not use USB connections or tunnel them properly to the VM. The software disconnects multiple times during flashing, which can cause issues on many VMs.

3. SDK Manager Docker Container

For advanced users, the SDK Manager is also available as a Docker container. See the Container Documentation for details.

Post-Installation Setup

Note

The following steps can also be executed via:

./scripts/configure-system.agx-orin.sh

Update packages and install dependencies:

sudo apt update
sudo apt dist-upgrade -y
sudo apt install -y apt-utils coreutils git-core git cmake build-essential \
    bc libssl-dev python3 python3-pip ninja-build ca-certificates curl pandoc

Download the Sionna Research Kit:

cd ~ # We assume sionna-rk is cloned in the home directory
git clone --recurse-submodules https://github.com/NVlabs/sionna-rk.git

Docker Installation

Install Docker from the official Docker repository:

# Add Docker's official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker, plugins, and NVIDIA container runtime
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin nvidia-container

# Add user to docker group
sudo usermod -aG docker $USER
# Log out and log in again for changes to take effect

Configure Docker service:

# Create Docker service override
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
Environment="DOCKER_INSECURE_NO_IPTABLES_RAW=1"
EOF

# Restart Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

Set the following environment variables on your profile:

export SRK_PLATFORM="AGX Orin"
export SRK_THREAD_POOL="6,7,8,9,10,11"
export SRK_UE_THREAD_POOL="4,5"

TensorRT Installation

Install TensorRT and monitoring tools:

sudo apt install -y cuda-toolkit nvidia-l4t-dla-compiler tensorrt

# Add trtexec alias for convenience
echo 'alias trtexec=/usr/src/tensorrt/bin/trtexec' >> ~/.bash_aliases

# Install jetson-stats monitoring tool
sudo python3 -m pip install -U jetson-stats

# Show system stats
jtop

Quectel Modem Compatibility

If you want to connect a Quectel modem via USB to the Jetson AGX Orin, you need to build a custom kernel with SCTP support and the qmi_wwan kernel module. Note that this is only needed if the Orin acts as user equipment (UE).

This can be automatically done by running the following command:

./scripts/build-custom-kernel.sh
./scripts/install-custom-kernel.sh

This will build and install the custom kernel (see Custom Jetson Linux Kernel for details). Reboot the system for the changes to take effect.

Orin Nano

The Jetson Orin Nano can also be used with the Sionna Research Kit. The setup is similar to the AGX Orin, but with different configuration values due to its 6-core CPU (vs 12 on AGX Orin).

Use the Orin Nano configuration script:

./scripts/configure-system.orin-nano.sh

Key differences from AGX Orin:

  • Power mode: Uses mode 2 (25W) instead of mode 0 (unlimited)

  • Thread pools: SRK_THREAD_POOL="2,3,4,5" and SRK_UE_THREAD_POOL="2,3,4,5"

Version Information

Check OS version:

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"

Check Jetson Linux & JetPack version:

cat /etc/nv_tegra_release
# R36 (release), REVISION: 3.0, GCID: 36923193, BOARD: generic, EABI: aarch64, DATE: Fri Jul 19 23:24:25 UTC 2024
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia