目录
- 工具安装
- window安装usbipd工具
- WSL usbip安装
- Setup
- window(Version>=4.0.0)
- window(Version<4.0.0)
- WSL
- 卸载
自从windows推出的WSL功能,对广大的Linux和嵌入式开发者来说是巨大福利,基本可以媲美日常vmware虚拟机的替换。但WSL还是存在一些不足,其中两点比较重要:
- WSL环境如何访问宿主机的USB设备?
- WSL如何通过宿主机网卡访问外部设备?
做到这两点,基本可以跟vmware说Byebye,当然完全替代可能差点意思,毕竟WSL不是桌面系统,但进行大部分日常工作基本问题。
本文主要介绍第一点“WSL环境如何访问宿主机的USB设备?”
笔者使用环境为WSL2
,版本参考如下:
wsl --version
WSL 版本: 2.0.9.0
内核版本: 5.15.133.1-1
WSLg 版本: 1.0.59
MSRDC 版本: 1.2.4677
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.22621.2428
工具安装
window安装usbipd工具
-
usbipd下载安装:
这款工具从4.0.0从版本之后,使用的命令有所变化,这里需要看你下载哪个版本,
目前网上大部分教程都是旧版本的使用方法,大家这里要注意避坑,笔者因这个地方被折腾许久,本文会对两个版本的使用方法都进行讲解。
点击到[官网下载]并执行安装。
或者powershell下执行,会默认会安装最新版本。winget install --interactive --exact dorssel.usbipd-win
-
安装完成后,可以查看版本:
usbipd --version
WSL usbip安装
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20 # *为版本号
Setup
使用usbipd工具分>=4.0.0和<4.0.0版本,这里分开说明。
window(Version>=4.0.0)
-
管理员启动powershell(注意要**管理员权限**)
-
输入命令,查看usb列表,这里我使用的busid为6-1, 可以看到对应的usb设备状态为not shared。
usbipd list
- 将对应的usb设备共享,执行如下,可以看到状态变为shared
usbipd bind --busid 6-1
usbipd list
- 将usb设备附加到wsl中,可以看到状态变为attached,表示挂接成功。
usbipd attach --wsl --busid 6-1
usbipd list
window(Version<4.0.0)
如果usbipd版本小于4.0.0,需要增加wsl参数, 过程与上述类似,按如下方式:
- 管理员启动powershell(注意要管理员权限)
- 查看usb列表的busid
usbipd wsl list
- 将对应的usb busid挂接到wsl,执行后记得看下state状态是否正常。
usbipd wsl attach --busid <busid>
WSL
如果挂接上,wsl就可以正常使用usb了,执行lsusb
可以看到新增的设备以及新增的tty,这里的tty是我的usb串口设备。
至此,大功告成,愉快的玩耍起来吧 _
卸载
如果需要卸载改usb设备连接,在window执行。
```
usbipd detach --busid 6-1
usbipd unbind --busid 6-1
```