记录原因:想在WSL下使用HackRF,但是WSL并不具备连接USB设备的功能,查阅资料有一些教程提供的源码安装后使用USB的,但是过程都较为繁琐,我自己也没弄明白。最后在微软官网的WSL教程里找到了详细的USB设备连接方法在此做一下记录。
参考资料:
WSL官方文档–连接USB设备
CSDN-WSL2连接调用USB设备
系统配置
- Windows 11
- Ubuntu 20.04
- WSL2内核版本5.15.90.1
步骤
Windows 下操作
安装usbipd
- 转到 usbipd-win 项目的最新发布页。
- 选择 .msi 文件,该文件将下载安装程序。
- 运行下载的 usbipd-win_x.msi 安装程序文件。
Linux 下操作
在 Ubuntu 上,运行以下命令:
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
配置添加USB设备
上述操作仅完成了软件的安装,还需要配置添加USB设备到Linux,注意在附加 USB 设备之前,请确保 WSL 命令行已打开。
-
通过以管理员模式打开 PowerShell 并输入以下命令
usbipd wsl list
,列出所有连接到 Windows 的 USB 设备:
图中的HackRF我已经成功连接到了Linux,它的状态就会改变否则就是显示Not attached。 -
选择要附加到 WSL 的设备总线 ID,然后运行
usbipd wsl attach --busid <busid>
命令。busid这里改为需要添加设备的BUSID。
-
打开 Ubuntu(或首选的 WSL 命令行),使用
lsusb
命令列出附加的 USB 设备:
我再次使用hackrf命令就可以看到设备了。成功连接
注意事项:
每次关闭wsl或者与usb设备断开连接后,需要重新连接设备
有两种重新连接USB设备的方法:
- 运行管理员模式PowerShell,usbipd命令连接;
- Ubuntu的bash界面连接,输入以下指令:
usbip list -r $HOSTNAME.local #查看已连接过的设备信息,如记得busid,该命令非必须执行命令
sudo usbip attach -r $HOSTNAME.local -b <busid> #连接USB设备,注意替换<busid>