14

I am trying to attach a USB device to my Ubuntu 20.04 distribution running under WSL2.

The problem is that when I run the usbip command, it gives the following message:

WARNING: usbipd not found for kernel 5.10.16.3-microsoft

  You may need to install the following packages for this specific kernel:
    linux-tools-5.10.16.3-microsoft-standard-WSL2
    linux-cloud-tools-5.10.16.3-microsoft-standard-WSL2

  You may also want to install one of the following packages to keep up to date:
    linux-tools-standard-WSL2
    linux-cloud-tools-standard-WSL2

I tried doing:

$ sudo apt install linux-tools-5.10.16.3-microsoft-standard-WSL2

... but that doesn't work. It returns the following:

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-tools-5.10.16.3-microsoft-standard-WSL2
E: Couldn't find any package by glob 'linux-tools-5.10.16.3-microsoft-standard-WSL2'

I have been Googling how to install them, but I can't find anything about this.

NOTES:

  • Ubuntu installation has been installed around 2 months ago.
  • I am using WSL2
  • uspip is called by usbipd wsl attach -b 2-2 from PowerShell because I am trying to attach a USB device to Ubuntu
  • Kernel version 5.10.16.3-microsoft-standard-WSL2

2 Answers 2

7

From the WSL2 USB/IP Prerequisites, you'll need the WSL2 5.10.60.1 kernel or higher. That's the first release that added USB/IP support.

Assuming that you are running Windows 11, you can simply wsl --update from an Administrator PowerShell in order to pull in the latest. Then wsl --shutdown and restart.

You could also build your own from the WSL2 kernel sources (making sure to specify the WSL2 kernel config options), but most people won't need to go this route.

Note that if you are running Windows 10, different directions will apply.

Continue following the directions on the previously linked doc, and you'll see that the packages you need installed are:

sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip $(command -v ls /usr/lib/linux-tools/*/usbip | tail -n1) 20

At that point, the PowerShell usbipd wsl attach should work.

7
  • I used undocumented method and it works from inside of Ubuntu, but suddenly it doesn't work with PowerShell, I want ask where are linux-tools installed? PS: I am using Windows 10 Commented Dec 30, 2021 at 19:08
  • @comand100vip Ah, that's a good point. I'll take out that "undocumented" part, since that won't work with the usbipd command in PowerShell (I run it all manually). You'll need to sudo visudo and add /usr/lib/linux-tools/5.4.0-77-generic to the beginning of the secure_path. Commented Dec 30, 2021 at 19:16
  • Almost, but after asking for password (in powershell) it prompts: libusbip: error: udev_device_new_from_subsystem_sysname failed usbip: error: open vhci_driver usbipd: error: Failed to attach device with ID '2-2'. Edit: I want note that I heard that windows "disconnect" sound. Commented Dec 30, 2021 at 19:28
  • @comand100vip Hmm. So just to make sure I've got the right understanding -- sudo usbip attach ... works from inside Ubuntu, but usbipd wsl attach ... from Administrator PowerShell asks for a password, then gives that error? Commented Dec 30, 2021 at 19:31
  • Yes, (it ask for password in both scenarios) and I really don't know why. Commented Dec 30, 2021 at 19:38
2

Always use the updated version of the kernel > 5.10.60.1.

But it seems like you are calling the usbipd utility from WSL which cases the package errors.

For attaching the usb devices to WSL, always call usbipd wsl attach --busid <busid> from powershell terminal and NOT from WSL terminal.

Maybe this blog will help.

2
  • A couple of notes -- First, while I absolutely encourage additional answers to questions when they provide new and useful info, the problem here was that the kernel in use was 5.10.16.3. That was already covered in my answer from last year. Second, it's absolutely possible to use the usbip command inside WSL/Ubuntu to connect to the usbipd daemon running on Windows. In fact, you must do so if you are using a different distribution than the one that that is currently set as default. usbipd wsl attach ... is really just calling wsl usbip ... behind the scenes anyway. Commented Aug 22, 2022 at 23:52
  • I totally forgot that the command was meant to be used on Powershell, thanks a lot! Commented Dec 30, 2023 at 18:56

You must log in to answer this question.