WSL2使用串口
WSL2使用串口
在WSL2中串口无法直接使用,需要访问串行端口或 USB 设备时,可以通过USBIPD-WIN 项目为 WSL 2 提供 USB 设备支持。
本文源自微软官网WSL教程,
配置要求
Win11 (版本号22000及以上,Win10请参考官方教程:Win10连接USB设备官方教程
需要具有 x64/x86 处理器的机器。 (usbipd-win 目前不支持 Arm64)。
已安装 Linux 发行版并设置为 WSL 2。
运行 Linux 内核 5.10.60.1 或更高版本。
可通过uname -a查看
安装usbipd-win
Windows环境中需要安装 usbipd 工具
直接下载 .msi 双击运行即可
WSL
在Ubuntu的终端中,运行以下指令:
1 | sudo apt install linux-tools-5.4.0-77-generic hwdata |
其他系统的请参考 官方教程
连接设备
配置好后需要手动连接USB设备
windows中
接入USB,在PowerShell命令行界面
1 | usbipd wsl list #查看设备列表 |
结果应如下
这里报错,提示需要升级
然后重新运行上面代码
这里已经显示连接到了Ubuntu中了
wsl
运行查看设备
1 | lsusb |
这里已经有了设备了
如果没有可以回去检查usbipd wsl list
打印列表,查看状态是否连接上
关闭串口就会断开连接(不确定),每次使用都要在windows中将其连接到wsl中
设置权限
检查连接成功后,运行编写好的串口程序,打印出了可用串口,我们连接的就是 ttyUSB0
打开串口进行操作时,会出现以下报错
这是因为权限不够,不能访问串口
解决方案
到/etc/udev/rules.d/ 目录下查看文件,发现没有 70-ttyusb.rules
,新建一个
1 | cd /etc/udev/rules.d/ |
在文件中写入以下内容
1 | KERNEL=="ttyUSB*", OWNER="root", GROUP="root", MODE="0777" |
重启udev
1 | sudo /etc/init.d/udev restart |
测试
测试前先确定USB是连接上了的
1 | ls -l /dev/ttyUSB0 |
返回: crwxrwxrwx 1 root root 188, 0 Apr 25 10:27 /dev/ttyUSB0 即成功
再次运行程序,没有报错,信息也成功发送到了下位机
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Eureka!
评论