找回密码
 立即注册
首页 业界区 安全 wsl2共享win10的USB设备

wsl2共享win10的USB设备

訾懵 2025-6-1 20:52:09
前言

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

1. windows安装 usbipd-win

usbipd-win 是一个开源项目,允许将 Windows 上的 USB 设备共享给 WSL。
打开 PowerShell 或命令提示符(以管理员身份运行)。
  1. winget install usbipd
复制代码
这里可能会遇到网络问题无法下载,可以去GitHub上面下载,或者开魔法都行。
确保 WSL 版本支持 USBIP 设备。需要使用 WSL 2,因为 WSL 1 不支持 USB 设备。
安装 WSL 2(如果尚未安装):
  1. wsl --install
  2. wsl --set-default-version 2
复制代码
2. 在 WSL2 的 Linux 发行版中安装 usbip 客户端工具。

打开 WSL2
更新包管理器并安装 usbip:
  1. sudo apt update
  2. sudo apt install linux-tools-virtual hwdata
  3. 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 设备:
  1. usbipd list
复制代码
找到你要共享的 USB 设备的 BUSID。
将设备绑定到 WSL:
  1. usbipd bind --busid = BUSID
复制代码
BUSID 替换为你在上一步中找到的设备总线 ID。
这里可能会遇到问题,比如你后台有运行杀毒软件,那么绑定就会被拦截。
比如我后台安装了火绒,所以绑定的时候就出现了报错:
  1. usbipd: warning: Unknown USB filter 'hrdevmon' may be incompatible with this software; 'bind --force' may be required.
  2. (base) PS C:\Windows\system32>
  3. (base) PS C:\Windows\system32> usbipd bind --busid=7-1
  4. usbipd: error: Access denied; this operation requires administrator privileges.
复制代码
可以查询到hrdevmon就是火绒的后台程序。
这里要么退出火绒,要么执行
  1. usbipd bind --busid = BUSID --force
复制代码
进行强制绑定。
绑定完成之后,电脑需要重启一下,然后在查询设备状态
  1. (base) PS C:\Windows\system32> usbipd list
  2. >>
  3. Connected:
  4. BUSID  VID:PID    DEVICE                                                        STATE
  5. 1-2    2717:5086  Redmi 电脑音箱, USB 输入设备                                  Not shared
  6. 4-11   0e8d:0616  RZ616 Bluetooth(R) Adapter                                    Not shared
  7. 4-15   0db0:0076  USB 输入设备                                                  Not shared
  8. 7-1    2b89:0234  UGREEN CM564 USB Audio, USB 输入设备                          Shared (forced)
  9. 7-4    0bda:4762  USB 输入设备                                                  Not shared
  10. 8-1    258a:0143  USB 输入设备                                                  Not shared
  11. 8-3    046d:c092  USB 输入设备                                                  Not shared
复制代码
可以看到已经被强制分享了。
4. 在 WSL 中连接到共享的 USB 设备:
  1. sudo usbip attach -r 127.0.0.1 -b <BUSID>
复制代码
这里通过127.0.0.1不一定能够成功绑定设备,如果不行,就使用你本机的IPV4地址即可。
5. 检查设备是否已连接

在 WSL 中,检查 USB 设备是否已成功连接。
  1. lsusb
复制代码
就可以看到分享的设备了:
1.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册