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.10.0.0 on the nVdia Jetson AGX Orin board, based on the NVIDIA Jetson 6.0 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, with the the qemu-user-static package installed

    Note

    The create_default_user.sh script in this procedure requires Ubuntu version 20.04 or newer to work successfully

  • 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.0 GA from the NVIDIA developer website at: https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/release/Jetson_Linux_R36.3.0_aarch64.tbz2.

    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_v3.0/release/Jetson_Linux_R36.3.0_aarch64.tbz2
    
  3. Extract the contents of the Jetson_Linux_R36.3.0_aarch64.tbz2 archive.

    # tar -xvf Jetson_Linux_R36.3.0_aarch64.tbz2
    
  4. Download the elxr-tegra-12.10.0.0-arm64.tar.gz rootfs file.

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

    Notice that the file arm64 architecture matches the Jetson AGX Orin hardware, and that the version 12.10.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.

  5. Copy the elxr-tegra-12.10.0.0-arm64.tar.gz file to the <workspace>/Linux_for_Tegra/rootfs directory and extract from there.

    # cd <workspace>/Linux_for_Tegra/rootfs
    # cp ../../elxr-tegra-12.10.0.0-arm64.tar.gz .
    
  6. Extract the rootfs with sudo permission.

    # sudo tar -xvf <eLxr rootfs.tar.gz>
    

Prepare to Flash the Device

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

  1. Remove conflicting files from the rootfs to avoid issues during the binary update.

    # sudo rm rootfs/dev/random rootfs/dev/urandom
    
  2. Remove packages that are no longer required to avoid potential conflicts during flashing.

    # rm ./nv_tegra/l4t_deb_packages/nvidia-l4t-nvpmodel-gui-tools_36.3.0-20240506102626_arm64.deb
    # rm ./tools/python-jetson-gpio_2.1.7ubuntu1_arm64.deb
    
  3. Apply the NVIDIA binaries.

    On your Linux host, navigate to the <workspace>/Linux_for_Tegra directory.

    # cd <workspace>/Linux_for_Tegra
    
  4. 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
    
  5. 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.

  6. Remove the nvfb.service to prevent boot issues.

    # sudo mv rootfs/etc/systemd/system/multi-user.target.wants/nvfb.service rootfs/etc/systemd/system/multi-user.target.wants/nvfb.service.orig
    
  7. Copy the kernel image into the rootfs and l4t kernel directory.

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

    # cd <workspace>/Linux_for_Tegra
    # 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), insert the USB Type-C power supply plug into the USB Type-C port above the DC jack. 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.

    # cd <workspace>/Linux_for_Tegra
    # sudo ./nvsdkmanager_flash.sh
    

    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.

  1. When booting with the display connected, apply the following commands, required for the first boot only. For details, see https://forums.developer.nvidia.com/t/jetpack-6-0-with-kernel-6-7-8-no-display-output-after-uefi/285369/8?u=robertogs2.

  2. Enter BIOS Setup to set SOC Display Hand-Off Mode to Never.

    • From the main menu, select Reset to restart the board and enter the UEFI/BIOS Setup menu.

    • During startup, press ESCAPE to enter Setup.

    • From the main BIOS window, select Device Manager > NVIDIA Configuration > Boot Configuration > SOC Display Hand-Off Mode > Never.

    • Press F10, then select Y to save the modified settings.

    • Return to the main menu, then select Reset to restart the board.

  3. Update module dependencies.

    Once the board boots to the Linux prompt, run the following commands to update the module list, which is not updated properly in the downloaded package. This command is only required on the first boot.

    # sudo depmod -a
    # sudo reboot
    

    The board will restart. Log in at the prompt to continue.

  4. Add your default user to the lightdm group to ensure the user will have access to the GUI for login and use.

    # sudo usermod -aG lightdm <user_name>
    
  5. Open the /home/username/.xsession in an editor and comment-out lines 85 through 95. This is necessary to ensure compatibility when the gnome-shell package is not installed.

  6. In bash shell, set the necessary environment variables.

    # export DISPLAY=:0
    # export PATH=$PATH:/usr/sbin
    
  7. To enable Internet access on the device, you must update your network configuration files.

    1. Open the /etc/network/interfaces file in an editor.

      # sudo nano /etc/network/interfaces
      

      Add or modify the network interface configuration according to your network requirements.

    2. Open the /etc/resolv.conf file and add a nameserver your Jetson AGX Orin device can access.

      nameserver <actual_nameserver_ip>
      

    Note

    You must replace <actual_nameserver_ip> with a valid nameserver IP address that your device can reach.

  8. Install the following multimedia packages:

    # sudo apt-get update
    # sudo apt-get upgrade
    # sudo apt-get install libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad libgstreamer-plugins-base1.0-dev  libgstreamer-plugins-bad1.0-dev gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-ugly gstreamer1.0-libav libv4l-dev libegl1-mesa-dev
    

    You may receive various perl localization warnings which you can safely ignore. If you get an E: Unmet dependencies, try ‘apt –fix-broken install error with no packages, run the following commands to resolve it:

    # sudo apt --fix-broken install
    # 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/ubuntu2204/arm64/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

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

  • Ensure your user is in the correct groups (lightdm, video)

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

NVIDIA Support Resources

For additional assistance, refer to these valuable resources: