Enable Full Graphics and Multimedia Support for NVIDIA Jetson AGX Orin Hardware

This tutorial describes how to install the NVIDIA binaries to eLxr Edge Pro 12.12.0.0 on the nVdia Jetson AGX Orin board, based on the NVIDIA Jetson 6.2.1 SDK. Use this procedure to enable full graphics and multimedia support for your eLxr 12 image.

Note

This is currently the only supported method for setting up eLxr 12 on NVIDIA Jetson AGX Orin hardware.

Before You Begin

  • You must have a NVIDIA Jetson AGX Orin hardware board with eLxr 12 installed

  • You must have an Ubuntu host, version 20.04 or newer

  • You must have a stable Internet connection and a USB Type-A to Type-C cable to connect to the device during the flashing process

Procedure

Perform the following procedure to prepare a new initrd that contains a new eLxr 12 rootfs with applied NVIDIA multimedia support. This includes the rootfs, eLxr kernel, NVIDIA-specific binaries, and relevant multimedia packages necessary for successful operation.

Set Up the Environment

The initial setup involves creating a workspace and obtaining the necessary software packages for installation.

  1. On your Linux host system, create a workspace directory.

    Substitute <workspace> in the following commands with the name of your local directory.

    # mkdir <workspace>
    # cd <workspace>
    
  2. Download the Jetson Linux binary package for the Jetpack 6.2.1.

    Warning

    Third-party license and agreements apply. We strongly recommend to consult with legal counsel as required.

    This package includes a bootloader, kernel image, NVIDIA Debian files and flash tools.

    # wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v4.4/release/Jetson_Linux_r36.4.4_aarch64.tbz2
    
  3. Download the elxr-tegra-12.12.0.0-arm64.tar.gz rootfs file.

    # wget https://downloads.elxr.dev/elxr-tegra-12.12.0.0-arm64.tar.gz
    

    Notice that the file arm64 architecture matches the Jetson AGX Orin hardware, and that the version 12.12.0.0 matches your eLxr 12 system. If you are using a different eLxr version, ensure that you download the version specific to your installation.

  4. Extract the contents of the Jetson_Linux_R36.4.4_aarch64.tbz2 archive.

    # tar -xf Jetson_Linux_R36.4.4_aarch64.tbz2
    
  5. Extract the contents of the elxr-tegra-12.12.0.0-arm64.tar.gz archive.

    # sudo tar xpf elxr-tegra-12.12.0.0-arm64.tar.gz -C Linux_for_Tegra/rootfs/
    

Prepare to Flash the Device

Before you flash the device, perform several preparation steps to ensure a successful installation.

  1. Fix compatibility issues in Jetson Linux R36.4.4 for eLxr 12.12.0.0 rootfs.

    # curl -fsSL https://gitlab.com/elxr/docs/user-documentation/-/raw/main/scripts/orin-jetson/jetson_elxr-r36.sh | bash
    

    Optionally, view the script output.

    ✅ Removed deprecated python /home/wruser/Documents/user/Linux_for_Tegra/tools/python-jetson-gpio_2.1.7ubuntu1_arm64.deb
    ℹ️  Processing Deb: nvidia-l4t-nvpmodel-gui-tools_36.4.4-20250616085344_arm64.deb
    ℹ️  Patching: DEBIAN/control
    ℹ️  Patching: usr/share/nvpmodel_indicator/nvpmodel_indicator.py
    ℹ️  Patching: usr/share/nvpmodel_indicator/nvpmodel_indicator.py
    ✅ Successfully patched: nvidia-l4t-nvpmodel-gui-tools_36.4.4-20250616085344_arm64.deb
    ℹ️  Processing Deb: nvidia-l4t-configs_36.4.4-20250616085344_arm64.deb
    ℹ️  Patching: etc/skel/.xsessionrc
    ℹ️  Patching: etc/skel/.xsessionrc
    ℹ️  Patching: etc/systemd/nvfb-early.sh
    ✅ Successfully patched: nvidia-l4t-configs_36.4.4-20250616085344_arm64.deb
    ℹ️  Processing Deb: nvidia-l4t-init_36.4.4-20250616085344_arm64.deb
    ℹ️  Patching: etc/systemd/nvfb.sh
    ✅ Successfully patched: nvidia-l4t-init_36.4.4-20250616085344_arm64.deb
    ℹ️  Patching: /home/wruser/Documents/user/Linux_for_Tegra/tools/l4t_create_default_user.sh
    ✅ Fixed create user for debian in /home/wruser/Documents/user/Linux_for_Tegra/tools/l4t_create_default_user.sh
    ℹ️  Patching: /home/wruser/Documents/user/Linux_for_Tegra/flash.sh
    ✅ Set Soc Display Handoff Mode to Never in /home/wruser/Documents/user/Linux_for_Tegra/flash.sh
    ℹ️  Patching: /home/wruser/Documents/user/Linux_for_Tegra/nv_tools/scripts/nv_customize_rootfs.sh
    ℹ️  Patching: /home/wruser/Documents/user/Linux_for_Tegra/nv_tools/scripts/nv_customize_rootfs.sh
    ℹ️  Patching: /home/wruser/Documents/user/Linux_for_Tegra/nv_tools/scripts/nv_customize_rootfs.sh
    ℹ️  Patching: /home/wruser/Documents/user/Linux_for_Tegra/nv_tools/scripts/nv_customize_rootfs.sh
    ✅ Fixed for XFCE, network service and GPU timeout in /home/wruser/Documents/user/Linux_for_Tegra/nv_tools/scripts/nv_customize_rootfs.sh
    ✅ All Setup Tasks Complete!
    
  2. On your Linux host, navigate to the <workspace>/Linux_for_Tegra directory.

    # cd <workspace>/Linux_for_Tegra
    
  3. Install NVIDIA prerequisities on your host.

    # sudo ./tools/l4t_flash_prerequisites.sh
    
  4. Remove conflicting files from the rootfs to avoid issues during the binary update.

    # sudo rm rootfs/dev/random rootfs/dev/urandom
    
  5. Apply the NVIDIA binaries into the rootfs.

    This script will unpack the NVIDIA kernel, and necessary Debian packages into the rootfs.

    # sudo ./apply_binaries.sh
    
  6. Run the following script to create the default user for the Jetson AGX Orin system.

    # sudo ./tools/l4t_create_default_user.sh -u <user_name> -p <password> -n <hostname>
    

    You can additionally include the -a for autologin and –accept-license options to bypass manual selection and entry.

  7. Copy the kernel image into the rootfs and l4t kernel directory.

    # sudo cp rootfs/boot/vmlinuz-*-orin-arm64 rootfs/boot/Image
    # sudo cp rootfs/boot/vmlinuz-*-orin-arm64 kernel/Image
    
  8. Run the NVIDIA script to update initrd.

    # sudo ./tools/l4t_update_initrd.sh
    

Flash the Device

Now that the host environment is ready, you need to flash the Jetson AGX Orin device with the prepared files.

  1. Boot the NVIDIA board into Recovery Mode.

    1. Connect the NVIDIA Jetson AGX Orin Developer Kit to the host PC with the bundled USB Type-A to Type-C cable (See the nVidia Dev Kit).

    2. Make sure you put the Type-C plug of the cable into the USB Type-C port next to 40-pin connector for flashing.

    3. While holding the middle Force Recovery button (2), press, then release the POWER button. This will turn on the Jetson dev kit in Force Recovery Mode.

  2. Run the following script on the Linux host to initiate the flash process.

    # sudo ./flash.sh jetson-agx-orin-devkit internal
    

    This process may take several minutes to complete. Once finished, the device will automatically reboot with the newly installed software.

First Boot Configuration

After flashing, several configuration steps are necessary during the first boot.

To prevent kernel packages from being overwritten after sudo apt update && sudo apt upgrade, run the following command.

# sudo apt-mark hold nvidia-l4t-bootloader nvidia-l4t-display-kernel nvidia-l4t-kernel nvidia-l4t-kernel-dtbs nvidia-l4t-kernel-headers nvidia-l4t-kernel-oot-headers nvidia-l4t-kernel-oot-modules

Install Multimedia Packages

Install the following multimedia packages:

# sudo apt-get update
# sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
# sudo apt-get install nvidia-l4t-gstreamer

Note

The gstreamer installation creates a new initrd, which is harmless and you can safely ignore.

Install Additional Software

To enhance the functionality of your Jetson AGX Orin device, you can install additional software packages.

Docker

Install Docker to enable containerized applications on your device.

Run the following command to install:

# sudo apt-get install docker.io

Once installation completes, add your user to the Docker group to allow running Docker commands without sudo.

# sudo usermod -aG docker <user_name>

CUDA

Install CUDA to enable GPU-accelerated computing on your Jetson AGX Orin device.

Follow the instructions at the NVIDIA developer website: CUDA Downloads.

The general installation steps include:

# wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/sbsa/cuda-keyring_1.1-1_all.deb
# sudo dpkg -i cuda-keyring_1.1-1_all.deb
# sudo apt-get update
# sudo apt-get -y install cuda-toolkit-13-1

After installation completes, you may need to configure environment variables to use CUDA in your applications.

Known Issues and Fixes

Despite careful installation and configuration, you may encounter certain issues:

  • The image has hardcoded partition in the kernel parameters for SD card only. It will not work with a USB drive.

  • Display and mouse will not work on first boot since NVIDIA binaries are not in the initial image. Serial console access is required.

  • Camera is not supported.

  • New initrd creation during gstreamer installation can be ignored.

Troubleshooting

This section provides guidance for resolving common problems.

Boot Failure After Firmware Upgrade

If your device fails to boot after a firmware upgrade, it may be due to the nvfb.service issue mentioned earlier. To resolve this:

  • Use recovery mode to access the filesystem

  • Check if nvfb.service is causing issues by examining system logs

  • If necessary, rename or remove the problematic service file

  • Restore from backup if available

Network Configuration Issues

Network problems can manifest in various ways. Troubleshooting steps include:

  • Verify physical connections to ensure cables are properly connected

  • Check network interface configuration in the interfaces file

  • Ensure DNS settings are correct in /etc/resolv.conf

  • Test connectivity with ping and other network diagnostic tools

Graphics Issues

If you experience graphics-related problems:

  • Verify the correct drivers are installed using the nvidia-smi command

  • Check X server configuration in /etc/X11/xorg.conf if present

  • Examine X server logs in /var/log/Xorg.0.log for error messages

NVIDIA Support Resources

For additional assistance, refer to these valuable resources: