Error when trying to run Jetson TX2

You have a few options. Let me first ask which you prefer:

  • You can install Ubuntu 18.04 to replace Ubuntu 20.04 on the host PC.
  • You can add another boot option and also add Ubuntu 18.04 if you have enough disk space.
  • You can try flashing on command line (usually quite reliable), but this involves more detailed steps, and you would be on your own to manually use “apt-get” commands to try to install any optional software you want, e.g., CUDA. This isn’t actually all that bad, and you could try this before changing your host PC.
  • I cannot recommend any VM, but if you know how to configure them, they have the possibility of working. I have no way to provide instructions for that, and you’d need to find someone who understands USB setup on that exact brand of VM. WSL2 is so problematic I would never recommend it unless you are an expert and already know how to install replacement Linux kernels on WSL2.

The requirement to not use Ubuntu 20.04 is due to what is being flashed, and not because of sdkmanager. Skipping the GUI sdkmanager and JetPack allows command line flashing without those limitations.

How much total disk space would i need for the second option because that one seems the most simple

also coulld i just download ubuntu 18.04 onto the host monitor which runs ubuntu 20.04 and put it in a usb drive and plug that into the tx2?

You need a minimum of 50 GB of space after everything else is installed. I don’t know how much Ubuntu itself takes, plus JetPack/SDK Manager. I’m going to say that I would not be comfortable without at least a 250 GB space.

Plugging a thumb drive into the Jetson will have no effect. Jetsons don’t have a BIOS, and JetPack and the flash software must run on a desktop PC’s 64-bit amd64/x86_64 CPU architecture. The Jetson is the wrong architecture, so even if it had a BIOS, then the thumb drive boot would still fail. The flash software must run on a separate PC while the Jetson is in recovery mode.

ok makes sense I don’t have that type of space so could you walk me through the third option as much as you can

Is this a dev kit? Or does it use a third party carrier board? I will answer for a dev kit, but if you have a third party carrier board, then there are changes needed for device tree.

On your Ubuntu 20.04 host PC, go to the L4T release page, and then to the release which matches your current system (found with “head -n 1 /etc/nv_tegra_release”). In the case of nothing on the system already, then you pick the most recent release which is compatible with your TX2 hardware (so an R32.x release, whatever is currently the newest):
https://developer.nvidia.com/linux-tegra

From there you will download the “driver package” and the “sample root filesystem”.

Find an empty directory on your host PC. Unpack the driver package without using sudo. This produces a “Linux_for_Tegra/” subdirectory. Go there. You will then see a “rootfs/” subdirectory to that directory. Go to that. Now unpack the “sample root filesystem” using sudo. Now cd back to “Linux_for_Tegra/”. Prepare the rootfs via this command:
sudo ./apply_binaries.sh

Optionally, if you want to set up the first boot account before flashing, and have this exist on every flashed system, then you can also do that:
sudo ./tools/l4t_create_default_user.sh

All of that is done only once. From then on you can flash. If you had used JetPack, then all of that (other than l4t_create_default_user.sh) would have been done automatically (even the download part).

Since I assume this is a “jetson-tx2” target. At “Linux_for_Tegra/”, notice a lot of “*.conf” files. Many of these are symbolic links (acting like an alias) to other files. Those “other files” are named after a “not so descriptive” module model, plus a carrier board model. This determines some of the content of a flash, e.g., it can change boot content and device tree. When you use the target “jetson-tx2”, then it really uses “jetson-tx2.conf”. The alias “jetson-tx2.conf” might point at “p2771-0000-devkit.conf”, which is more or less a specification. Because a TX2 dev kit does not have an optional carrier board, you won’t find the final file naming a more complex product number. A related model is the TX2 industrial, which is target “jetson-tx2i.conf”, and this in turn is an alias to a more complicated model pair p2771-3489-ucm1.conf". That’s actually unimportant, but I wanted to suggest that the gist of knowing what to flash is to look at the .conf files and find one which matches your hardware. For you, it is probably just “jetson-tx2” (there might at times be an alias “jetson-tx2-devkit”).

The eMMC is designated as “/dev/mmcblk0”, and the rootfs partition designation is “/dev/mmcblk0n1p1”. This is the command line flash, and assumes the Jetson is correctly connected via USB and is in recovery mode:
sudo ./flash.sh jetson-tx2 mmcblk0p1

If something fails, you could log this flash with a simple modification (it doesn’t hurt to save a copy of the flash anyway):
sudo ./flash.sh jetson-tx2 mmcblk0p1 2>&1 | tee log_flash.txt

There are possibly some packages you’ll need to add on the host PC if something is “missing” during flash. If flash fails for this reason, you just use apt-get to install this to the host PC. You have reset the recovery mode before a second flash operation, so perhaps you would hold recovery pins shorted (there is a nice button on the TX2 dev kit), and momentarily power reset (then let go of the recovery pin).

If something is still wrong, the attach the flash log to the forum.

Note that you will need to log in to the Jetson itself to add optional content, e.g., CUDA.

Yes I am using the nividia dev kit

To flash on command line, since your release of Ubuntu host PC is not going to allow sdkmanager to download what you want, go to the relevant L4T release URL (you’d use the most recent R32.x):
https://developer.nvidia.com/linux-tegra

From there download both the “driver package” and the “sample root filesystem”.

Find an empty directory, probably something in your home, e.g., you could:

cd
# if not already there:
mkdir nvidia
cd nvidia
# Name something after L4T version. I'll assume R32.7.4:
mkdir r32-7-4
cd r32-7-4
  • In that location, as a regular user (not with sudo), unpack the driver package. This will produce subdirectory “Linux_for_Tegra/”. Almost everything is done from that location.
  • Now go to “Linux_for_Tegra/rootfs/”. You now unpack the sample rootfs using sudo.
  • Now cd back to “Linux_for_Tegra/”. Run this command:
    sudo ./apply_binaries.sh
  • Optionally create the first boot account setup prior to flashing:
    sudo ./tools/l4t_create_default_user.sh

All of the above is needed only once. From now on you can flash that content on command line.

A dev kit TX2 would be flashed like this after connecting the correct USB cable to a recovery mode Jetson:
sudo ./flash.sh jetson-tx2 mmcblk0p1

If you ever need to flash and save the flash log (which I recommend at least once for future reference):
sudo ./flash.sh jetson-tx2 mmcblk0p1 2>&1 | tee log_flash.txt

Now you can boot and reach the full operating system and GUI. You can now choose to use apt for updates, and perhaps to add CUDA or other packages you are interested in (if you use JetPack, then this is done for you over ssh).

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