window宿主机+wsl2+linux docker 实现串口映射

一 windows usbipd安装

方法一、下面连接直接下载

usbipd-win:Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2. - GitCode

下载完成 管理员打开windows powershell : 输入命令 winget install usbipd

方法二、下面连接选择.msi文件下载,运行下载的usbipd-win_x.msi程序文件

Releases · dorssel/usbipd-win

*安装成功,输入usbipd list 会列出全部windows的USB设备

image.png

参考:

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


image.png

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的串口设备


image.png
  1. 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.运行脚本,连接串口成功

五 解绑

  1. usbipd detach --busid $busid

  2. usbipd unbind --busid $busid

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容