Installing SDK Packages Through Terminal

Hi there,

I recently had to reflash my Nvidia Jetson Nano in FRC mode as through SDK Manager the “Flash Jetson OS” was stuck at 99.9%.

Since I have already flashed my device, I would like to install SDK packages such as CUDA and OpenCV. After going back on SDK Manager, it says that I have to flash my device again before installing those packages. This is a problem as the getting stuck at 99.9% problem still occurs and stops me from installing those packages on my device.

I’m wondering whether there is a way to install those packages through the terminal? I have many .deb files located in ~/Jetson/SDK manager.

Thanks!

If you started to flash, and this failed, then chances are you need to flash again. However, JetPack/SDK Manager tends to look like you need to flash, but in reality that is only a default. You can uncheck flash and just install packages.

In the most recent L4T R32.3.1 (JetPack/SDKM 4.3) the install uses “.deb” packages on NVIDIA’s repository server. For that release, if you know the name of a package you want, then you can add it with “sudo apt-get <package name>”.

You can use the “.deb” packages you find on the host PC as well, e.g., scp them to the Nano and use “dpkg” to install them. There are a lot of dependencies though, and so you may need to experiment to get them in the right order (if you use multiple package names with a single dpkg command, then this does make it easier).

The “apt” mechanism handles dependencies for you, so “apt-get” is easier in comparison to “dpkg” if you have the latest release R32.3.1 release (try “apt search cuda” or any other package name you are interested in to find packages).

NOTE: Often failed flashes are due to using a VM host. VMs do not handle USB correctly in many cases.

Hi there!

Thank you, I actually didn’t realise there was a skip flashing option. This solves my problem! I’m using Ubuntu dual-booted. I have an issue where SDK manager can’t connect to the device. I have isolated it to a network issue.

I’ve already check lsusb and that appears fine.

I’m living in university dorm at the moment and can’t connect the Jetson nano to a router via ethernet. I was wondering how I could go about connecting it to my PC? What sort of work around would you suggest?

Once the flash completes first boot login account setup is required, and so during flash I assume you have a keyboard/mouse so you can do this. Once this is complete it doesn’t actually matter which network you use.

The micro-B USB cable, when connected between a fully booted Jetson and a host PC, will “pretend” to be a network adapter and DHCP server. The result is that the host PC should obtain a new network over the micro-B USB. The PC will have address 192.168.55.100, and the Nano will have address 192.168.55.1. The host can “ping 192.168.55.1” to confirm this is working, and this should work for package additions.

I have to emphasize that this is over ssh and if first boot login account creation did not complete, then this will fail. Additionally, sometimes a host PC may be set up so security does not automatically allow this. Most of the time the USB ethernet will “just work”, but sometimes you will need to find the MAC address by monitoring “dmesg --follow” during plug in of the USB, and then using the host network setup to allow that MAC address to activate. If ping worked, then this won’t be an issue, but if ping failed, then this is possibly what is going on.

Hi, thanks for your diagnosis. Pinging doesn’t work for that device for ip address 192.168.55.1. Also from using ifconfig, the host doesn’t have ip address 192.168.55.100.

I’m not exactly sure how to find MAC address by monitoring “dmsesg – follow”. After finding the MAC address how could I use the host network setup to allow MAC address to activate?

“dmesg --follow” simply shows the kernel log, and as log lines are added, those too are displayed. Basically “display dmesg forever and look for updates”. If you run “dmesg --follow”, and then plug in the USB cable from the Jetson to the host PC, you should see some logging. Within that will be a hexadecimal (6-byte, thus 12 hex digits, perhaps with a “:” between bytes, or perhaps not) value (contrived example “ab:12:34:56:cd:78”). This is the MAC address.

Software such as “nm-connection-editor” (if you don’t have this then “sudo apt-get install network-manager-gnome”) refers to each device by the MAC address. Thus, if you saw a MAC address in the logs, and then run nm-connection-editor (or any Ubuntu network/firewall type admin software…nm-connection-editor is just one example), you should be able to find something associated with that MAC address. You then activate that MAC address and tell it to allow automatic network setup.

Found the MAC address, thanks!

As for the nm-connection-editor, I have tried to install it but it says “E: unable to locate package nm-connection-editor”. What should I do?

I’ve also tried looking into NetworkManager and it’s documentation. I see very little on how my MAC address relates to the documentation so I’m quite confused by that.

Could you please link me to detailed instructions on how to activate the MAC address? I’m very new to this…

Sorry, I gave the wrong package name originally (correcting that post). The package name is actually “network-manager-gnome”, and this contains “nm-connection-editor”. So check “sudo apt-get install network-manager-gnome”.

Hi there, I’ve just installed it and opened up the window by launching “nm-connection-editor”.

I’m not sure what to do from here, please help!

Okay, so after using “dmesg --follow” again, I realised that the MAC address I thought was originally for the Jetson is for something else…

I just want to double-check my setup. When I don’t use any jumper cables and connect USB to micro-USB, there is nothing which changes on the kernel log. I figured the only way for the kernel log to update is if I connect the FRC pins. This outputs only:

[90475.819808] usb 1-7: new high-speed USB device number 12 using xhci_hcd
[90475.840666] usb 1-7: New USB device found, idVendor=0955, idProduct=7f21, bcdDevice= 1.02
[90475.840671] usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[90475.840674] usb 1-7: Product: APX
[90475.840677] usb 1-7: Manufacturer: NVIDIA Corp.


Am I doing this right? The MAC address doesn’t appear, I think I got confused with another device’s MAC address.

Please give me detailed instructions, I’m very new to this!

You should see something like this as you plug in the USB (while looking at “dmesg --follow”, but this host is actually Fedora, so it may look a bit different):

[12718.226489] cdc_ether 1-11:1.5 usb0: register 'cdc_ether' at usb-0000:01:00.0-11, CDC Ethernet Device, 16:ea:e5:f1:38:5e
[12718.226521] usbcore: registered new interface driver cdc_ether
[12718.250765] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[12718.251349] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[12718.275469] cdc_ether 1-11:1.5 enp1s0f0u11i5: renamed from usb0

…in particular, note under cdc_ether “16:ea:e5:f1:38:5e”. This is a MAC address, and output is from a TX2, but what you should see would be nearly identical.

One source of confusion is that the micro-B USB may provide more than one virtual USB device. The “cdc_ether” is key to the specific log line you would be interested in.

Alternatively, you can run nm-connection-editor prior to inserting the cable, and then see if something new shows up. As long as the cdc_ether driver is available nm-connection-editor should see the new entry. Each time you plug in or disconnect you should see a change to the device list of nm-connection-editor.

If this does not happen, then I have to wonder if your installation is working correctly (perhaps the Nano is not running the ethernet over USB).