Components installation error - Jetpack 4.3 on Jetson TX1

Hello everyone!

At the beginning I have to say that I’m beginner both in Linux and Jetson. I have some problems with installing Jetpack 4.3 on Jetson TX1 using SDKManager 1.0.1.5538

Software used:
Host - Ubuntu 18.04 (not VM)
Jetson - Ubuntu 16.04

I must say that I received Jetson with whole Developer Kit from university with previously installed Ubuntu and now I would like to install the latest Jetpack on it. Everything seems perfect up to the moment when SDKManager tries to connect via USB cable with Jetson. Jetson is running and opened on desktop. I try to connect with IP Address: 192.168.55.1

On host there is a statement:

Could not detect Nvidia Jetson device connected to USB. Verify that:

  1. is connected to this host machine with a USB cable.
  2. Jetson’s Ubuntu OS is up and running.
  3. Ubuntu ‘System configuration wizard’ is completed on the device.
    This can be validated by running the ‘lsusb’ command on your host, and look for “0955:7721” (NVIDIA Corp).

17:48:13 DEBUG : running command < [ lsusb | grep -c "0955:" -ne 1 ] >
17:48:13 INFO : command finished successfully
17:48:13 DEBUG : running command < [ lsusb | grep -c "0955:" -gt 1 ] >
17:48:13 DEBUG : command terminated with error
17:48:13 ERROR : Could not detect Nvidia Jetson device connected to USB. Verify that: 1. is connected to this host machine with a USB cable. 2. Jetson’s Ubuntu OS is up and running. 3. Ubuntu ‘System configuration wizard’ is completed on the device. This can be validated by running the ‘lsusb’ command on your host, and look for “0955:7721” (NVIDIA Corp). Or use the ‘Manual Setup’ instead.

When I use eth0 as an IP Address it says:

Cannot connect to the device via SSH. Validate that SSH serivce is running on the device or use the ‘Manual Setup’ instead.

18:17:03 DEBUG : running command < nc -z -vv -w 5 eth0 22 >
18:17:03 INFO : nc: getaddrinfo for host “eth0” port 22: Name or service not known
18:17:03 DEBUG : command terminated with error
18:17:03 ERROR : Cannot connect to the device via SSH. Validate that SSH serivce is running on the device or use the ‘Manual Setup’ instead.
18:17:14 DEBUG : running command < nc -z -vv -w 5 eth0 22 >
18:17:14 INFO : nc: getaddrinfo for host “eth0” port 22: Name or service not known
18:17:14 DEBUG : command terminated with error
18:17:14 ERROR : Cannot connect to the device via SSH. Validate that SSH serivce is running on the device or use the ‘Manual Setup’ instead.

Command lsusb cannot find my Jetson. Is it even possible to install components on Jetson without flashing new OS?

Thank you in advance for your help.

Some information to clarify may help. This isn’t in any particular order.

When flashing the Jetson must be in recovery mode. A TX1 development kit in recovery mode requires talking through the provided micro-B USB cable to the host PC (other brands of cables may work, but most “charger cables” do not expect data and have insufficient quality to work…the provided micro-B USB cable is always of good quality for data).

If the Jetson TX1 is in recovery mode and connected to your host PC, then this command should show output: “lsusb -d -955:7721”.

If recovery mode shows, then flash can start. If flash completes, then the Jetson will reboot to a regular login (you’d want an HDMI monitor and keyboard attached so you can see this and complete the first boot account setup).

Once rebooted and first boot account setup is done, then lsusb will no longer show anything since the Jetson is no longer in recovery mode. All optional packages are installed via ssh. Typically (on newer releases) the Jetson will pretend it is an ethernet device and router which the host PC will use for networking (virtual wired ethernet). The default address (if this is what happens) for the TX1 is 192.168.55.1, and the host PC will be assigned the address 192.168.55.100. If you run “ifconfig” on host and Jetson, then one of the network devices will have that address. A host could ping the Jetson with “ping 192.168.55.1”.

The actual wired ethernet could also be used via a common router, but you’d need to know the IP address and tell SDK Manager to use that address. “ifconfig” from the Jetson side would tell you what the address is for both the virtual wired (bridge, 192.168.55.1) and the ethernet for regular wired ethernet (something other than 192.168.55.1).

Since ssh is used for package transfers from host to Jetson, if there is no first boot account setup, then all additions will fail…ssh requires that account to log in to. Other than the Jetson rebooting itself and showing up on the HDMI monitor it may not be obvious that it self-rebooted.

In releases prior to L4T R32.3.1 (which is what JetPack/SDKM 4.3 flashes) the only way to add the optional packages was through JetPack/SDKM. This is still the recommended method of initial install, but if you know the packages you need, then for this release (for the first time of all releases) you can use “apt-get” commands to add those packages.

It looks like JetPack/SDKM wants to always flash, but you can in fact tell JetPack/SDKM to not flash, and to do nothing but install packages. Just uncheck flash operations.

If the Jetson is not in recovery mode, then there is no risk of accidentally flashing, and only package modification is allowed. If you are in recovery mode, then there is no risk of changing anything until you actually flash…recovery mode itself does not cause changes, but does make the Jetson capable of being flashed.

“Manual setup” is a reference to manually entering a wired ethernet address other than 192.168.55.1. Otherwise there isn’t any difference. Wired ethernet may actually be a bit faster since it is gigabit, but the micro-B USB is limited to 480Mb/s (and actual rate is much slower…480 is the rate without any overhead).

The host PC and the Jetson should both have network access, at least once the Jetson has finished flashing and has rebooted.

1 Like

Thank you for your fast reply, really appreciate that.

So which solution will be the best for me? Is it possible to install only Jetpack components (not whole OS) in recovery mode? Because I saw that during sending data via USB while using SDKManager, Jetson should be opened on desktop. Is it true? Or should I install it trying connect both devices through ethernet?

Recovery mode has no ability other than flashing raw data, e.g., overwriting partitions. The package installs use a running operating system and will not work with a recovery mode Jetson, and thus cannot be flashed directly. You could sort of “cheat” and have your own rootfs image which already has that software (such as from a clone of a system which already has this installed); or perhaps use something like QEMU to run package installs on the sample rootfs inside the “Linux_for_Tegra/rootfs/” directory of the host PC as if it is a running system prior to using that for filesystem generation.

If you already have used JetPack 4.3 (which installs L4T R32.3.1 on the Jetson), then what happens if you run this?

sudo apt-get update
sudo apt-get install nvidia-jetpack

R32.3.1 is the first release offering content from the standard “apt-get” mechanism via “.deb” packages on an NVIDIA server. If this works, then check out “sudo apt search cuda”. Any package you find there can be installed via the usual “sudo apt-get install <some package name>”.

Unfortunately, on my Jetson there is tegra release version R28. So I cannot install packages through terminal. Probably I have installed Jetpack 3.1 on it.

I think the method with QEMU will be too difficult for me. So maybe I’ll try to work with installed version of Jetpack.

There is no possibility to write Jetpack 4.3 to the SD Card on host PC and then put it into Jetson? It won’t work?

The following might not be useful to you if you only want these packages installed on the host side, but there is something of an “in between” possibility if you can flash and then manually copy packages to the running Jetson, even on R28.x series. SD card is one way to copy this (scp may be faster/easier).

If JetPack/SDK Manager has downloaded files, e.g., you started to use JetPack to install packages, then the downloaded “.deb” files or other content should be available in “~/Downloads/nvidia/sdkm_downloads/”. Look for the “aarch64” packages or “arm64” packages, and then copy them over to the Jetson. JetPack would have downloaded these, but you can probably name the ones you are interested in via the “sudo dpkg -i package1 package2 packag3 …” command (where the “package1 through package n” are just the file names of the “.deb” files).

You may run into dependencies and experimenting with order of install can be a bit of a pain. However, if you start with any repo “.deb”, then “cuda” files, chances are the more of the next steps will work. As a trick, you can name more than one “.deb” on a single “dpkg -i” command and order of listing on a single dpkg line will be automatically handled. Thus if for example you have five files, and you know there is some dependency there, then installing one file at a time requires you to know install order…but installing all five at once would not have any issue of install order.