当前位置: 首页 > news >正文

wsl(3) -- USB使用

1. 简介

WSL1中可以直接使用Windows的串口,其对应关系就是COMx对应WSL的/dev/ttySx,例如COM2对应WSL的/dev/ttyS2。WSL2是不支持USB设备的,但可以通过usbipd-win程序将windows上的usb设备映射到wsl2中,参考微软官方文档连接 USB 设备。

2. usbipd安装和使用

  1. 前往https://github.com/dorssel/usbipd-win/releases下载usbipd-win.msi程序,我下载的是usbipd-win_4.3.0.msi大概4.55MB。
  2. 双击进行安装,安装后以管理员身份打开命令行终端。
# 列出所有外接usb设备
PS C:\Users\xflm> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
3-2    0a12:0001  Generic Bluetooth Radio                                       Not shared
3-4    1ea7:0064  USB 输入设备                                                  Not shared
4-1    1a86:7523  USB-SERIAL CH340 (COM5)                                       Not shared
4-5    1c4f:0002  USB 输入设备                                                  Not sharedPersisted:
GUID                                  DEVICE
# 选择要允许共享的USB设备,该步骤需要管理员权限,此时windows仍可以使用该USB设备
PS C:\Users\xflm> usbipd bind --busid 4-1
# 再次查看即可看到选择的设备已允许共享
PS C:\Users\xflm> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
3-2    0a12:0001  Generic Bluetooth Radio                                       Not shared
3-4    1ea7:0064  USB 输入设备                                                  Not shared
4-1    1a86:7523  USB-SERIAL CH340 (COM5)                                       Shared
4-5    1c4f:0002  USB 输入设备                                                  Not sharedPersisted:
GUID                                  DEVICE
# 此时需确保wsl的终端在打开着,该步骤不再需要管理员权限,此时windows将弹出该USB设备并挂载到wsl中,也即windows不能再使用该设备
PS C:\Users\xflm> usbipd.exe attach --wsl --busid 4-1
usbipd: info: Using WSL distribution 'Ubuntu-24.04' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Using IP address 172.18.32.1 to reach the host.
# 再次查看即可看到选择的设备已被映射
PS C:\Users\xflm> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
3-2    0a12:0001  Generic Bluetooth Radio                                       Not shared
3-4    1ea7:0064  USB 输入设备                                                  Not shared
4-1    1a86:7523  USB-SERIAL CH340 (COM5)                                       Attached
4-5    1c4f:0002  USB 输入设备                                                  Not sharedPersisted:
GUID                                  DEVICE
# 当不需要映射时,执行以下命令,USB设备将从wsl中弹出并重新挂载到windows中
PS C:\Users\xflm> usbipd.exe detach --busid 4-1
# # 再次查看即可看到选择的设备已取消映射
PS C:\Users\xflm> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
3-2    0a12:0001  Generic Bluetooth Radio                                       Not shared
3-4    1ea7:0064  USB 输入设备                                                  Not shared
4-1    1a86:7523  USB-SERIAL CH340 (COM5)                                       Shared
4-5    1c4f:0002  USB 输入设备                                                  Not sharedPersisted:
GUID                                  DEVICE

3. wsl加载串口驱动

wsl2安装的ubuntu24.04中已带了串口驱动,但是需要手动安装一下,不安装驱动是看不见串口设备的。

# 这个文件记录了可以使用modprobe命令安装的驱动模块
$ cat /lib/modules/5.15.153.1-microsoft-standard-WSL2/modules.dep
kernel/drivers/block/nbd.ko:
kernel/drivers/net/bonding/bonding.ko:
kernel/drivers/net/dummy.ko:
kernel/drivers/net/vrf.ko:
kernel/drivers/usb/serial/usbserial.ko:
kernel/drivers/usb/serial/ch341.ko: kernel/drivers/usb/serial/usbserial.ko
kernel/drivers/usb/serial/cp210x.ko: kernel/drivers/usb/serial/usbserial.ko
kernel/drivers/usb/serial/ftdi_sio.ko: kernel/drivers/usb/serial/usbserial.ko
kernel/net/netfilter/xt_CT.ko:
kernel/net/netfilter/xt_bpf.ko:
kernel/net/netfilter/xt_u32.ko:
kernel/net/ipv4/ipip.ko: kernel/net/ipv4/tunnel4.ko
kernel/net/ipv4/tunnel4.ko:
kernel/net/ipv6/sit.ko: kernel/net/ipv4/tunnel4.ko
# 安装ch341驱动,需要管理员权限
$ sudo modprobe ch341
# 可以查看已安装的驱动模块
$ lsmod
Module                  Size  Used by
ch341                  20480  0
usbserial              36864  1 ch341
# 可以看到串口设备已存在
$ ls /dev/ttyUSB0

4. 安装命令行串口助手

minicom是一个命令行版本的串口助手。

# 安装陈程序
$ sudo apt install minicom
# 打开串口,即可正常收发,使用CTRL+A再按Z退出minicom
$ minicom -D /dev/ttySUSB0 -b 115200

5. 编写udev rule

创建sudo vi /etc/udev/rules.d/serial.rules,内容如下。这里的vid/pid是在usbipd list中看到的,这句话表示对于该类型的设备,加载ch341驱动,同时设置设备的访问权限为0666,即允许任意角色访问。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", RUN+="/sbin/modprobe ch341", MODE="0666"

6. 补充现象

  1. 将USB设备拔出重新插入电脑时,如果设备之前是SharedAttached状态,则会保持在Shared状态,如果想重新给wsl使用,则需要在windows终端上重新执行usbipd attach --wsl -busid <设备id>命令。
  2. 没有驱动的设备也可以被usbipd list识别,也可以正常映射到wsl中,如果wsl中有驱动,则可以正常使用。

上一篇:wsl(2) – ubuntu24.04配置
下一篇:wsl(4) – 编译驱动模块
目录:wsl – 集合

7. 参考

Windows 10 linux 子系统 WSL 使用串口
Linux笔记:串口通讯工具minicom基础使用
连接 USB 设备

http://www.lryc.cn/news/452261.html

相关文章:

  • 从原理到代码:如何通过 FGSM 生成对抗样本并进行攻击
  • 从零开始学习OMNeT++系列第一弹——OMNeT++的介绍与安装
  • Cluster Explanation via Polyhedral Descriptions
  • 爬虫设计思考之一
  • 解决centos 删除文件后但空间没有释放
  • 微软SCCM:企业级系统管理的核心工具
  • RTSP作为客户端 推流 拉流的过程分析
  • 【MySQL 07】内置函数
  • 《深度学习》OpenCV 背景建模 原理及案例解析
  • 机器学习(1):机器学习的概念
  • 0. Pixel3 在Ubuntu22下Android12源码拉取 + 编译
  • ip经过多个服务器转发会网速变慢吗
  • mongodb通过mongoimport导入JSON文件数据
  • 【Qt】控件概述 (1)
  • ping基本使用详解
  • Win10之解决:设置静态IP后,为什么自动获取动态IP问题(七十八)
  • 【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)
  • 踩坑spring cloud gateway /actuator/gateway/refresh不生效
  • 【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程
  • 计算机毕业设计 Java酷听音乐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Java的学习(语法相关)
  • 简单的springboot 编写Socket服务接口
  • 【Android 源码分析】Activity短暂的一生 -- 目录篇 (持续更新)
  • VS Code使用Git Bash终端
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.mapset(模拟实现)
  • 【C++】多态(下)
  • 基于四种网络结构的WISDM数据集仿真及对比:Resnet、LSTM、Shufflenet及CNN
  • 【蚂蚁HR-注册/登录安全分析报告】
  • 【分布式微服务云原生】详解Redis的主从模式,主服务器挂了如何从多个从服务器选出新的主服务器
  • Android Context是什么?有很多的context他们之间有什么区别?什么时候该使用哪个?