Jetson Xavier Development Kit not recognized via USB when in recovery mode

I have the problem that the Jetson Xavier Development kit is not recognized over usb.
I’m running Ubuntu 18.04 on my host. I connect the Xavier with the included USB-C to USB3.0 cable. I use the USB-C connector on the front, next to the power LED. I connect the USB3.0 to a USB3.0 port on my desktop. I start the Xavier (from power off) into recovery mode by holding down the middle button, then also holding down the power button, and I release both.

lsusb is not listing the device. If I run dmesg --follow and replug the usb cable, I get

[ 7404.494007] usb 1-1: new full-speed USB device number 54 using xhci_hcd
[ 7404.622065] usb 1-1: device descriptor read/64, error -71
[ 7404.857933] usb 1-1: device descriptor read/64, error -71
[ 7405.094047] usb 1-1: new full-speed USB device number 55 using xhci_hcd
[ 7405.221978] usb 1-1: device descriptor read/64, error -71
[ 7405.457955] usb 1-1: device descriptor read/64, error -71
[ 7405.566099] usb usb1-port1: attempt power cycle
[ 7406.218030] usb 1-1: new full-speed USB device number 56 using xhci_hcd
[ 7406.218312] usb 1-1: Device not responding to setup address.
[ 7406.426352] usb 1-1: Device not responding to setup address.
[ 7406.633924] usb 1-1: device not accepting address 56, error -71
[ 7406.762036] usb 1-1: new full-speed USB device number 57 using xhci_hcd
[ 7406.762213] usb 1-1: Device not responding to setup address.
[ 7406.970049] usb 1-1: Device not responding to setup address.
[ 7407.177956] usb 1-1: device not accepting address 57, error -71
[ 7407.178027] usb usb1-port1: unable to enumerate USB device

Interestingly, if I start the Xavier in normal mode (not recovery) lsusb finds it without problems and lists it as

Bus 002 Device 008: ID 0955:7020 NVidia Corp.

But in this state I cannot flash it unfortunately.

If I boot up the Xavier normally and then try the “automatic setup” mode in the SDK Manager it loses the connection after a few seconds (probably because it puts it into recovery mode then) and the above dmesg message is seen again.

Any hints to what I could do?

Recovery mode turns the USB into a custom USB device, whereas a fully booted Jetson makes available virtual devices, e.g., a virtual ethernet useful for networking. The fact that regular boot works tends to say the USB hardware is working, whereas it sounds like recovery mode has a signal quality or other physical issue. Having one work, but another fail is unusual and interesting to see it.

I am curious, on the host PC, when you use the USB-C with a fully booted Xavier, see what the host sees with the tree view of “lsusb -t”. You’ll notice that wherever one of the devices shows up it eventually branches back to a “root_hub”. Note which root_hub it branches to, shutdown the Jetson, put the Jetson in recovery mode, and plug the Jetson back in. See if anything shows on that root_hub. Probably not, but if you have a different USB-C port on your host PC, plug in to that other port and see if this changes. If it does, then note if the root_hub changed. If it does not, then try similar with an external USB-C HUB.

Basically I am trying to get different combinations of cables and/or ports and how the wires route (and this influences signal quality). The signal quality will change depending on a number of things, but having a separate HUB would be the biggest influence. Often individual ports on a PC are to the same root_hub, but sometimes those ports go to a different root_hub. An external HUB would be guaranteed as a separate HUB instead of being a different port on one HUB, but you could get lucky and have two root_hubs for two ports on your PC.

I found out that the USB3.0 port at the front of my host PC is able to recognize the Xavier in normal boot, but not in recovery boot, and vice versa for a USB3.0 port at the back. Weird, but I’m happy I was able to flash it.