wsl2共享win10的USB设备

前言

做项目需要在wsl当中应用一个麦克风设备,已知wsl默认无法访问主机的usb设备。所以需要借助工具usbipd-win

步骤

1. windows安装 usbipd-win

usbipd-win 是一个开源项目,允许将 Windows 上的 USB 设备共享给 WSL。
打开 PowerShell 或命令提示符(以管理员身份运行)。

winget install usbipd

这里可能会遇到网络问题无法下载,可以去GitHub上面下载,或者开魔法都行。

确保 WSL 版本支持 USBIP 设备。需要使用 WSL 2,因为 WSL 1 不支持 USB 设备。
安装 WSL 2(如果尚未安装):

wsl --install
wsl --set-default-version 2

2. 在 WSL2 的 Linux 发行版中安装 usbip 客户端工具。

打开 WSL2
更新包管理器并安装 usbip:

sudo apt update
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*/usbip 20

3. 将 USB 设备连接到 WSL

通过 usbipd-win 将 Windows 上的 USB 设备共享给 WSL。

在 Windows 中查看当前连接的 USB 设备:

usbipd list

找到你要共享的 USB 设备的 BUSID。
将设备绑定到 WSL:

usbipd bind --busid = BUSID

BUSID 替换为你在上一步中找到的设备总线 ID。

这里可能会遇到问题,比如你后台有运行杀毒软件,那么绑定就会被拦截。
比如我后台安装了火绒,所以绑定的时候就出现了报错:

usbipd: warning: Unknown USB filter 'hrdevmon' may be incompatible with this software; 'bind --force' may be required.
(base) PS C:\Windows\system32>
(base) PS C:\Windows\system32> usbipd bind --busid=7-1
usbipd: error: Access denied; this operation requires administrator privileges.

可以查询到hrdevmon就是火绒的后台程序。
这里要么退出火绒,要么执行

usbipd bind --busid = BUSID --force

进行强制绑定。

绑定完成之后,电脑需要重启一下,然后在查询设备状态

(base) PS C:\Windows\system32> usbipd list
>>
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-2    2717:5086  Redmi 电脑音箱, USB 输入设备                                  Not shared
4-11   0e8d:0616  RZ616 Bluetooth(R) Adapter                                    Not shared
4-15   0db0:0076  USB 输入设备                                                  Not shared
7-1    2b89:0234  UGREEN CM564 USB Audio, USB 输入设备                          Shared (forced)
7-4    0bda:4762  USB 输入设备                                                  Not shared
8-1    258a:0143  USB 输入设备                                                  Not shared
8-3    046d:c092  USB 输入设备                                                  Not shared

可以看到已经被强制分享了。

4. 在 WSL 中连接到共享的 USB 设备:

sudo usbip attach -r 127.0.0.1 -b <BUSID>

这里通过127.0.0.1不一定能够成功绑定设备,如果不行,就使用你本机的IPV4地址即可。

5. 检查设备是否已连接

在 WSL 中,检查 USB 设备是否已成功连接。

lsusb

就可以看到分享的设备了:
image

posted @ 2025-03-14 22:34  笑眯眯办大事  阅读(657)  评论(0)    收藏  举报