usbipd-win Frans van Dorsselaer
winget install --id=dorssel.usbipd-win -e
Host locally connected USB devices to other (possibly virtual) machines.
usbipd-win is a software tool designed to share locally connected USB devices with other machines, including virtual environments such as Hyper-V guests and WSL 2. This solution enables seamless resource sharing without requiring physical device access on the target machine.
Key Features:
- Hosts USB devices for remote access via TCP/IP.
- Installs as a Windows service (usbipd) for persistent operation.
- Includes command-line tools for managing device sharing with administrator privileges.
- Configures firewall rules to secure communication between host and client machines.
- Supports WSL 2 integration, allowing direct device attachment from the Windows CLI.
Audience & Benefit:
Ideal for IT professionals, developers, and organizations utilizing Hyper-V or WSL 2 environments. This tool streamlines USB resource sharing across physical and virtual systems, enhancing productivity and flexibility in development workflows.
Installable via winget, usbipd-win provides a robust solution for integrating USB devices into modern computing infrastructure.
README
usbipd-win
Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2.
How to install
This software requires Microsoft Windows 10 (x64 or ARM64) / Microsoft Windows Server 2019, version 1809 or newer; it does not depend on any other software.
Run the installer (.msi) from the latest release on the Windows machine where your USB device is connected.
Alternatively, use the Windows Package Manager:
winget install usbipd
This will install:
- A service called
usbipd
(display name: USBIP Device Host).
You can check the status of this service using the Services app from Windows. - A command line tool
usbipd
.
The location of this tool will be added to thePATH
environment variable. - A firewall rule called
usbipd
to allow all local subnets to connect to the service.
You can modify this firewall rule to fine tune access control.
> [!NOTE] > If you are using a third-party firewall, you may have to reconfigure it to allow > incoming connections on TCP port 3240.
How to use
> [!TIP] > See the wiki on how to enable tab completion for PowerShell.
Share Devices
By default devices are not shared with USBIP clients. To lookup and share devices, run the following commands with administrator privileges:
usbipd --help
usbipd list
usbipd bind --busid=
Sharing a device is persistent; it survives reboots.
> [!TIP] > See the wiki for a list of tested devices.
Connecting Devices
Attaching devices to a client is non-persistent. You will have to re-attach after a reboot, or when the device resets or is physically unplugged/replugged.
Non-WSL 2
From another (possibly virtual) machine running Linux, use the usbip
client-side tool:
usbip list --remote=
sudo usbip attach --remote= --busid=
> [!NOTE] > Client-side tooling exists for other operating systems such as Microsoft Windows, but not as part of this project.
WSL 2
You can attach the device from within Windows with the following command, which does not require administrator privileges:
usbipd attach --wsl --busid=
> [!TIP]
> Update WSL 2 with wsl --update
to get the latest kernel, which supports most USB devices.
> See the wiki on how to add drivers
> for USB devices that are not supported by the default WSL 2 kernel.
GUI
See the wiki for a list of GUI and IDE integration tools in case you prefer that over a CLI.
How to remove
Uninstall via Add/Remove Programs or via Settings/Apps.
Alternatively, use the Windows Package Manager:
winget uninstall usbipd