Cannot install Jetpack 4.3 SDK components over USB

I can’t connect via ssh (or ping) when trying to install the Jetpack 4.3 SDK components over USB.

I can flash the Xavier without issue. I get to the 50% mark where I then switch over to the Xavier and finish the configuration wizard. I do that and it boots up and I login. After connecting the Xavier to the host with the USB Type-C connector, the Xavier correctly reports the IP to be 192.168.55.1.

The host is running Ubuntu 18.04, which was upgraded from an older Ubuntu version. After the above steps, the host does not indicate an IP of 192.168.55.100. Therefore, I attempted to manually set a static host IP address as instructed in the README-usb-dev-mode.txt file. From what I’ve read elsewhere, because the host was upgraded from an older Ubuntu version, I need to do this by altering the /etc/network/interfaces file, rather than editing a file in the /etc/netplan/ directory.

This is my edited/update /etc/network/interfaces file:

auto eno2
iface eno2 inet static
        address 192.168.55.100
        netmask 255.255.255.0

After editing it I restarted the networking…

$ sudo ip a flush eno2
$ sudo systemctl restart networking.service

At this point, from the Xavier I can ping 192.168.55.1, and ssh into 192.168.55.1 (itself), but I can’t ping or ssh 192.168.55.1 (the host).
Similarly from the host, I can ping and ssh 192.168.55.100 (itself), but not 192.168.55.100 (the Xavier).
The cross-machine pings gives me “Destination Host Unreachable” errors.

This is the routing table of the host:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         modem.Home      0.0.0.0         UG    600    0        0 wlo1
25.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ham0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 wlo1
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlo1
192.168.55.0    0.0.0.0         255.255.255.0   U     0      0        0 eno2

This is the routing table of the Xavier:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    32766  0        0 l4tbr0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 l4tbr0
192.168.55.0    0.0.0.0         255.255.255.0   U     0      0        0 l4tbr0

When I attempt the installation from the SDK Manager I get:
“Cannot connect to the device via SSH. Validate that SSH service is running on the device.”

I’m at a loss as to what to try next. Can someone please offer some guidance?

@linuxdev, I see that you’ve helped on related questions. Perhaps you can help?

The route on each is correct. You might also show the ifconfig on both host and Jetson (after trying to use the network so error counts will be visible).

You said ping fails, so I wonder if there might be a firewall running on the host PC. Regardless, on the host PC, you might want to install nm-connection-editor and verify host side that the setup is correct (route is correct, but we don’t know about the actual interfaces).

Thanks, @linuxdev! Apologies in advance for any incorrect use of terminology in the response below. Networking is not my strong suit.

nm-connection-editor, when run on the host, showed only Wi-Fi connections. It did not even have an empty list of wired connections. No lists other than “Wi-Fi.” So again, it seems that NetworkManager on my Ubuntu 18.04 host is not in charge of wired connections, which is why I set the IP address in /etc/network/interfaces rather than in one of the /etc/netplan/ files.

But use of ifconfig indicates that the host is not using USB. On the Xavier, the ifconfig call indicates a USB device, usb0, associated with 192.168.55.1. On the host, however, 192.168.55.100 is associated with eno2. Of course, that’s what I set it to in /user/network/interfaces, so in future installs I’ll edit /user/network/interfaces to try to associate it with usb1 or some other USB device. (Though, no us# devices appear in the output from the ifconfig call on the host.)

In this case, however, I discovered a workaround which was simply to connect the Xavier to my local Ethernet network, let the router assign an address, and use that address when finishing the install from SDK Manager.

Thanks again!

One thing you would want to do is see if the MAC address of the virtual wired shows up when you go to add a new connection. Notice in the lower left is the “+” icon for adding, or the gear icon for examining and editing something which already exists. In most cases you identify the connection (or missing potential connection) via the MAC address. If the Jetson is up and running and able to provide a virtual wired DHCP response, and if on your host PC you are monitoring “dmesg --follow”, then at the moment of plugging in the cable you’ll see a log message on the host with a note of the MAC address. You’d use that MAC to try and add a new device on the host PC by any mechanism (in this case via “sudo nm-connection-editor” on the host PC).

If you plug in the cable and there is no log message, then something is wrong. You’d normally get a USB plugin event mentioned in dmesg --follow even if the virtual wired ethernet is not running. If the virtual wired ethernet is possible over the USB, then you’d also get a MAC address logged.

FYI, I too find it just more convenient to use the local ethernet router. Not only is it simpler, but gigabit is faster too. You might still be interested in following the above to see if a MAC shows up in case you need it in the future. You could actually enable both USB and ethernet port wired (though I’d always use the real ethernet port).

Thanks again, @linuxdev. Very helpful suggestions. I used "dmesg --follow" as you suggested, and did see the MAC address when plugging in the cable. I then used "nm-connection-editor" to create an ethernet connection for that MAC address, with DHCP. But then, on the Xavier, when I used "ifconfig" and "ip a" to look for the IP address, that MAC address was not among the ones in the returned info.

It could be that the router did not assign an address. Do you have admin access to the router? If so, then you should be able to see if the MAC is visible there, and whether or not an lease was assigned. I know on my own router I don’t allow an address to be assigned unless it is a known MAC, so depending on setup, perhaps you router is doing this too.

In terms of debugging as is, when you do run ifconfig for that interface, can you post the results? I’d like to see if it shows packets sent and received, and if so, errors.