一 windows usbipd安装
方法一、下面连接直接下载
下载完成 管理员打开windows powershell : 输入命令 winget install usbipd
方法二、下面连接选择.msi文件下载,运行下载的usbipd-win_x.msi程序文件
*安装成功,输入usbipd list 会列出全部windows的USB设备
参考:
Windows下linux 子系统 WSL2怎样使用usb串口(USBIPD-win4.0.0)-CSDN博客
https://blog.csdn.net/qq_27718231/article/details/140286286
二、将端口共享到wsl2中
1.usbipd list查看端口 busid 2-3
2.共享端口
usbipd bind --busid <BUSID>,完成后STATE 会变成shared 此步骤可能需要强制绑定 usbipd bind --force --busid <BUSID>,且此时《设备管理器-端口》已经看不到此COM口了,而是在《设备管理器-通用串行总线控制器》中显示USBIP Shared Device
3.WSL2 连接端口
usbipd attach --wsl --busid <BUSID>,完成后STATE 会变成attached
4. 此时已经将com口共享到了wsl2中,wsl2中通过lsusb 可以查看到 对应vid 和pid的串口设备
-
wsl ls -l /dev/tty* 应该可以看到多出ttyUSB* 或者ttyACM*,如果未显示可能没有对应加载驱动
image.png
三、解决wsl2 没有出现ttyUSB设备*
1.内核模块是否加载
usbserial内核模块是否已加载。在WSL中,你可以通过lsmod | grep usbserial命令来检查。如果未加载,你可以尝试手动加载该模块,使用
modprobe usbserial命令。
2.重新加载ch341驱动:
l cd /lib/modules/xxx/kernel/drivers/usb/serial
l ls 查看CH341驱动,如果没有需要自行安装参考https://blog.csdn.net/jdy_lyy/article/details/105354682
l modprobe ch341.ko
l ls /dev/tty* 此时USBx出现了,成功,胜利了耶
https://blog.csdn.net/jdy_lyy/article/details/105354682
https://blog.csdn.net/slimmm/article/details/136847178
四 启动容器
因为串口已经共享到了wsl2发行版中了,所以启动容器的时候不用额外映射。
1.启动容器 docker run -itd --name rdma-engine-v1 -dp 8103:8103 -e TZ=Asia/Shanghai --privileged=true 0dda76e48eda
2.进入容器docker exec -it rdma-engine-v1 bash
3.ls -l tty* 可以直接查看到ttyUSB0 容器中可以直接访问
4.运行脚本,连接串口成功
五 解绑
usbipd detach --busid $busid
usbipd unbind --busid $busid