Ubuntu version 22.04 for jetpack installation on old 2018 Jetson AGX Xavier 32GB Dev Kit

Device: Jetson AGX Xavier 32GB Developer Kit (released around 2018) - serial number 945-82972-0040-000 - link here.

The user manual suggests Ubuntu 16.04 or 18.04 for installation of Jetpack. I have Ubuntu 22.04 setup and would be hard to re-install 18.04 without backing up all of my data on my current machine, etc. The pdf of the user guide can be found here

Are versions of Ubuntu higher than 18.04 compatible with installation requirements of the device?

L4T is what actually gets flashed, and this is just an Ubuntu release with NVIDIA drivers. When being flashed the Jetson becomes a custom USB device understood by the custom driver, appropriately named the “driver package” (this is the actual flash software, and is run from a host PC on Linux). It used to be that all flashes were command line only, and then JetPack was introduced. Command line works on many hosts.

JetPack is a GUI on top of the flash software. This further limits the host which can be used, but it also adds a lot of features related to optional content and host setup. JetPack runs with SDK Manager, which is a smart network layer on top of JetPack, and enables a lot of automatic correct download and install. Strictly speaking, JetPack isn’t mandatory, but it is better if you can use it.

You cannot install an incorrect release of L4T (L4T R32.x is Ubuntu 18.04; L4T R35.x is Ubuntu 20.04), but you can set up for flash without JetPack if you are willing to do manual steps.

This is the URL for the various L4T releases, and you’d want R32.x or R35.x:
https://developer.nvidia.com/linux-tegra

Incidentally, when you pick the L4T release, you’ve paired it with a JetPack release (they are sort of tied together).

For all flashes your host filesystem type must be ext4 (non-Linux filesystem types are incapable of proper flash). If you have enough disk space (it is a lot required; more than double the size of the eMMC on your Jetson will be required), then this is the basic setup prior to flash:

  1. Download the “driver package”.
  2. Find an empty location and unpack this as a regular user.
  3. This would have produced subdirectory “Linux_for_Tegra/”. Most instructions are relative to that location.
  4. Download the “sample root filesystem”.
  5. Within “Linux_for_Tegra/rootfs/” unpack the sample rootfs with sudo.
  6. Go back to “Linux_for_Tegra/”, and then run “sudo ./apply_binaries.sh”. Basic setup is now complete to flash as many times as you want.

There is an optional “tools/l4t_create_default_user.sh” script. You can run that with sudo if you want to pre-create your admin user and complete the first boot setup (which includes admin user name and password). If you do this, then that will exist on every flash. Beware that you cannot ship default name/pass combinations as a final product in California.

At “Linux_for_Tegra/” examine the .conf files:
ls -l jetson*.conf

Each of those are an alias to a combination of carrier board model and module model. All of these, if you remove the .conf, are flash targets. A 32GB dev kit AGX Xavier corresponds to:

  • File jetson-agx-xavier-devkit.conf.
  • Target jetson-agx-xavier-devkit.

There are alternate tools if you are doing more advanced flashes. This includes initrd flash when using external boot devices.

An eMMC model (which a 32GB dev kit would be) would be a basic flash command like this:
sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1

This does not offer optional package install, so you would have to install things like CUDA manually…only the Jetson version works, so you’d have to have the right repo and know the name of the package to install.

Incidentally, if you want to log that flash, you could append " 2>&1 | tee log_name.txt" to the end of the command for posting it on forums:
sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1 2>&1 | tee log_flash.txt

The above should work on Linux PCs of different distributions if you have all of the correct components. If you were to read the requirements in documentation you might find a need for other tools such as QEMU. If you lack those tools, then installing the same ones that JetPack needs should fulfill this (you’d just be doing this manually).

1 Like

Thanks so much for the detailed instructions, that mostly clears up the question I had! :)

You said -

You cannot install an incorrect release of L4T (L4T R32.x is Ubuntu 18.04; L4T R35.x is Ubuntu 20.04),

Why not? Can’t I flash it (manually via the command line as you mentioned) with L4T r34.1 containing an Ubuntu v20.04 root file system (kernel release 5.10), when the host is running ubuntu 22.04 kernel release 6.5? After all, L4T is just a package I am downloading onto my host machine, and the file system that the L4T contains (based on ubuntu 20.04) goes to the target Jetson device, so the L4T version should not necessarily match the the host’s linux version/kernel release, right?

My host runs Ubuntu 22.04 with kernel release 6.5. As per what I understand by your statement above, the version of L4T I should download must have a file system based on the same ubuntu version, i.e. 22.04. The only L4T version available with support for ubuntu 22.04 based file system is 36.2.

Is my understanding correct?

Some of the installation / OTA payload generation scripts require the default Python to be Python 2.7.
As long as you install Python 2.7 and set your default Python to be 2.7 (through update-alternatives for example), it should work fine.

We regularly flash and even generate flashable images for AGX Xavier from Ubuntu 20.04, 22.04, Debian 12 and even Debian unstable.

That’s for Xavier generation devices.

For Orin devices and the new flashing script we are unfortunately still bound to Ubuntu 20.04 as we haven’t identified the issue preventing flashing to succeed on less obsolete systems. There seems to be something not correctly initializing the IPv6 link local config on the USB gadget interface used during flashing and relying on a default config that is not the same with newer kernels. Hope to have soon time to track this issue again so we won’t be required to keep an old Ubuntu 20.04 machine just for flashing Orins purpose. That’s only for Orin, not for Xavier.

Hope that helps.

Your filesystem must be ext4. Most Linux use this. I only mention because sometimes people try to use a VM on NTFS, or a VFAT formatted external drive. It’ll flash, and then it won’t work. Ubuntu 22.04 doesn’t have any difference in its filesystem type versus Ubuntu 14.04 or Fedora or CentOS or others. The filesystem type is quite different compared to a Mac or Windows installation, or default formatting on external media.

The restriction against Ubuntu 22.04 on the host PC is when flashing L4T R32.x onto the Jetson (using JetPack 4.x). You could flash using JetPack 5.x (L4T R35.x) if your host is 18.04 or 20.04. You can’t flash using an Ubuntu 22.04 host unless your JetPack release is 6.x+. That’s a JetPack limitation, not a Jetson limitation, and not a driver package limitation.

L4T is just data on the host PC, and isn’t really “installed” other than being unpacked on the host PC. That data is used to create the system image, and reflects the host PC filesystem type when the partition is generated (the driver package is used to create the filesystem based on the sample rootfs in combination with the NVIDIA drivers).

The Xavier Jetsons will not allow you to use JetPack 6 with L4T R36.x. New feature development is on L4T R35.x for Xavier, but ends before R36.x is reached. It is R36.x which is Ubuntu 22.04 based (22.04 on the Jetson; host is separate topic for this context). If you were to install Ubuntu 22.04 on an Xavier then you would have to modify boot and other content to make it work, and it would not be easy. L4T R36.x is the first release which is being designed to allow other content, but it only applies to Orin, and still requires the end user to do some work to adapt; the boot chain becomes more UEFI compatible which is why L4T R36.x might be able to adapt to other o/s…this is the purpose of the boot chain unification, but it is too late for Xavier.

We have several hundreds of AGX Xaviers that have been flashed by our production with R32.6.x and R32.7.x (JetPack 4) since upgrading to Ubuntu 22.04 hosts without any issue neither during flashing nor later in the field.

No issue either with flashing AGX Xaviers with R35.x.x from Ubuntu 22.04 hosts.

While it is not an official supported configuration, it works fine in our rootfs generation pipeline as well as in our production line (flashing).

If your flash methods don’t use the JetPack GUI, then you won’t find a restriction on using an Ubuntu 22.04 host to flash L4T R32.x. Command line flash won’t care. However, JetPack 4, if it worked on an Ubuntu 22.04 host via GUI, seems odd.

I am curious, are these actual dev kits? If not, then other software would most likely be used. Also, some releases might be available when starting with “sdkmanager --archivedversions”, but I have not tested how that might change host requirements. The internals of JetPack are unfortunately not public. Most of the time what I’d expect to see from JetPack is that it would say that there are no compatible flash targets if the host o/s is not approved for a given flash target. If JetPack 4 is working with an L4T R32.x flash from an Ubuntu 22.04 host PC, then that is new to me (perhaps NVIDIA changed something?), and in the past the GUI would outright refuse to flash under those circumstances.

Yes, you are correct we don’t use the GUI, only the standard tools coming with the BSP and custom tools above that.

Everything… dev kits, 3rd party carrier boards as well as in-house developed custom carrier boards.

You should be ok with Ubuntu 22.04 host PC since you are only using command line.

I went ahead and flashed it using the command line without the Jetpack GUI. It was not at all to tedious to do. I used the L4T r35.5, which is the latest L4T release that brings support for the AGX module. The later release r36.x which is the latest overall, does not bring support for AGX modules, but only the Orin modules.

The 35.x releases only come with Ubuntu 20.04, not 22.04.

Thanks for pointing me to L4T!

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.