Skip to content

Thor: General Workability

Eric Apgar edited this page Dec 30, 2025 · 1 revision

How to work with the NVIDIA Jetson Thor.

KVM Switch Compatibility

KVM switches are used for connecting multiple pieces of hardware to a single mouse, keyboard, and monitor. If you use a KVM switch with the Thor, there's an issue where the USB ports (which are typically connected to a USB port on the KVM switch) have a setting that prevents them from working smoothly with the KVM switch.

Background

What’s happening is almost certainly USB hub power-management + “real disconnect” behavior from the KVM.

Most KVMs don’t keep a constant virtual keyboard/mouse attached; they act like a USB hub that disconnects from the currently-unselected host and reconnects when you switch back. On Jetson/Thor it’s common for the hub/port to end up in a low-power state (autosuspend / USB3 link power states) and not resume cleanly—so the HID devices look “dead” until you physically replug (which forces a full re-enumeration). NVIDIA’s Thor docs also note autosuspend is disabled by default for most devices, but not for hubs — and your KVM presents as a hub.

How to Fix

We disable autosuspend on the USB ports.

1. Check USB Ports

Terminal:

lsusb -t

Expected Output:

/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=tegra-xusb/4p, 480M
    |__ Port 003: Dev 002, If 0, Class=Wireless, Driver=rtk_btusb, 12M
    |__ Port 003: Dev 002, If 1, Class=Wireless, Driver=rtk_btusb, 12M
    |__ Port 004: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=tegra-xusb/4p, 20000M/x2
    |__ Port 003: Dev 002, If 0, Class=Hub, Driver=hub/4p, 10000M

2. Confirm Device Paths

Now we need to see the USB device paths (the 1-... / 2-... names) that correspond to those hubs.

Terminal:

ls -d /sys/bus/usb/devices/1-* /sys/bus/usb/devices/2-* 2>/dev/null

Expected Output:

/sys/bus/usb/devices/1-0:1.0  /sys/bus/usb/devices/1-4:1.0
/sys/bus/usb/devices/1-3      /sys/bus/usb/devices/2-0:1.0
/sys/bus/usb/devices/1-3:1.0  /sys/bus/usb/devices/2-3
/sys/bus/usb/devices/1-3:1.1  /sys/bus/usb/devices/2-3:1.0
/sys/bus/usb/devices/1-4

3. Disable Autosuspend

Terminal:

for d in 1-4 2-3; do
  echo "Setting $d..."
  echo on | sudo tee /sys/bus/usb/devices/$d/power/control
  if [ -f /sys/bus/usb/devices/$d/power/autosuspend_delay_ms ]; then
    echo -1 | sudo tee /sys/bus/usb/devices/$d/power/autosuspend_delay_ms
  fi
  echo -n "control="; cat /sys/bus/usb/devices/$d/power/control
done

4. Make the Change Permanent

Now we’ll make that change persistent, so you don’t have to run commands after every reboot or reconnect.

Terminal:

for d in 1-4 2-3; do
  echo "=== $d ==="
  cat /sys/bus/usb/devices/$d/{idVendor,idProduct,manufacturer,product} 2>/dev/null
done

Clone this wiki locally