前言
做项目需要在wsl当中应用一个麦克风设备,已知wsl默认无法访问主机的usb设备。所以需要借助工具usbipd-win
步骤
1. windows安装 usbipd-win
usbipd-win 是一个开源项目,允许将 Windows 上的 USB 设备共享给 WSL。
打开 PowerShell 或命令提示符(以管理员身份运行)。这里可能会遇到网络问题无法下载,可以去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 设备:找到你要共享的 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 设备是否已成功连接。就可以看到分享的设备了:
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |