wsl(3) -- USB使用
1. 简介
WSL1中可以直接使用Windows的串口,其对应关系就是COMx
对应WSL的/dev/ttySx
,例如COM2
对应WSL的/dev/ttyS2
。WSL2是不支持USB设备的,但可以通过usbipd-win
程序将windows上的usb设备映射到wsl2中,参考微软官方文档连接 USB 设备。
2. usbipd安装和使用
- 前往https://github.com/dorssel/usbipd-win/releases下载
usbipd-win.msi
程序,我下载的是usbipd-win_4.3.0.msi大概4.55MB。 - 双击进行安装,安装后以管理员身份打开命令行终端。
# 列出所有外接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. 补充现象
- 将USB设备拔出重新插入电脑时,如果设备之前是
Shared
或Attached
状态,则会保持在Shared
状态,如果想重新给wsl使用,则需要在windows终端上重新执行usbipd attach --wsl -busid <设备id>
命令。 - 没有驱动的设备也可以被
usbipd list
识别,也可以正常映射到wsl中,如果wsl中有驱动,则可以正常使用。
上一篇:wsl(2) – ubuntu24.04配置
下一篇:wsl(4) – 编译驱动模块
目录:wsl – 集合
7. 参考
Windows 10 linux 子系统 WSL 使用串口
Linux笔记:串口通讯工具minicom基础使用
连接 USB 设备
相关文章:
wsl(3) -- USB使用
1. 简介 WSL1中可以直接使用Windows的串口,其对应关系就是COMx对应WSL的/dev/ttySx,例如COM2对应WSL的/dev/ttyS2。WSL2是不支持USB设备的,但可以通过usbipd-win程序将windows上的usb设备映射到wsl2中,参考微软官方文档连接 USB …...

从原理到代码:如何通过 FGSM 生成对抗样本并进行攻击
从原理到代码:如何通过 FGSM 生成对抗样本并进行攻击 简介 在机器学习领域,深度神经网络的强大表现令人印象深刻,尤其是在图像分类等任务上。然而,随着对深度学习的深入研究,研究人员发现了神经网络的一个脆弱性&…...

从零开始学习OMNeT++系列第一弹——OMNeT++的介绍与安装
最近由于由于工作上的需求,接了一个网络仿真的任务。于是开始调研各个仿真平台,然后根据目前的需求和网络上公开资料的多少,决定使用omnet这个网络仿真平台。现在也是刚开始学习,所以决定记录一下从零开始的这个学习过程。因为虽然…...

Cluster Explanation via Polyhedral Descriptions
通过多面体描述进行聚类解释 本文关注聚类描述问题,即在给定数据集及其聚类划分的情况下,解释这些聚类的任务。我们提出了一种新的聚类解释方法,通过在每个聚类周围构建一个多面体,同时最小化最终多面体的复杂性或用于描述的特征…...
爬虫设计思考之一
爬虫设计思考之一 经常做爬虫的人对于技术比较的执着,尤其是本身从事的擅长的技术领域,从而容易忽视与之相近或者相似的技术。因此我建议大家在遇到此类问题的时候,可以采用对比分析的方式来理解。 本次的思考是基于国内最大的中文搜索引擎百…...
解决centos 删除文件后但空间没有释放
一、问题描述:磁盘空间不足,清理完垃圾日志以后磁盘空间还是没有释放 查看磁盘空间 [rootxwj-qt-65-44 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G …...
微软SCCM:企业级系统管理的核心工具
目录 摘要 1. 引言 2. SCCM的基本概念 2.1 什么是SCCM? 2.2 SCCM的历史 3. SCCM的架构 3.1 中心服务器 3.2 数据库 3.3 管理点(Management Point) 3.4 分发点(Distribution Point) 3.5 客户端代理 3.6 报告服务 4. SCCM的核心功能 4.1 软件部署与管理 4.2 操…...

RTSP作为客户端 推流 拉流的过程分析
之前写过一个 rtsp server 作为服务端的简单demo 这次分析下 rtsp作为客户端 推流和拉流时候的过 A.作为客户端拉流 TCP方式 1.Client发送OPTIONS方法 Server回应告诉支持的方法 2.Client发送DESCRIPE方法 这里是从海康摄像机拉流并且设置了用户名密码 Server回复未认证 3.客…...

【MySQL 07】内置函数
目录 1.日期函数 日期函数使用场景: 2.字符串函数 字符串函数使用场景: 3.数学函数 4.控制流函数 1.日期函数 函数示例: 1.在日期的基础上加日期 在该日期下,加上10天。 2.在日期的基础上减去时间 在该日期下减去2天 3.计算两…...

《深度学习》OpenCV 背景建模 原理及案例解析
目录 一、背景建模 1、什么是背景建模 2、背景建模的方法 1)帧差法(backgroundSubtractor) 2)基于K近邻的背景/前景分割算法BackgroundSubtractorKNN 3)基于高斯混合的背景/前景分割算法BackgroundSubtractorMOG2 3、步骤 1)初…...
机器学习(1):机器学习的概念
1. 机器学习的定义和相关概念 机器学习之父 Arthur Samuel 对机器学习的定义是:在没有明确设置的情况下,使计算机具有学习能力的研究领域。 国际机器学习大会的创始人之一 Tom Mitchell 对机器学习的定义是:计算机程序从经验 E 中学习&#…...

0. Pixel3 在Ubuntu22下Android12源码拉取 + 编译
0. Pixel3 在Ubuntu22下Android12源码拉取 编译 原文地址: http://www.androidcrack.com/index.php/archives/3/ 1. 前言 这是一个非常悲伤的故事, 因为一个意外, 不小心把之前镜像的源码搞坏了. 也没做版本管理,恢复不了了. 那么只能说是重新做一次. 再者以前的镜像太老旧…...
ip经过多个服务器转发会网速变慢吗
会的,IP经过多个服务器转发时,网速通常会变慢,主要原因包括: 增加的延迟: 每经过一个服务器,数据包就需要额外的时间进行处理和转发。这种处理时间和网络延迟会累积,导致整体延迟增加。 带宽限制…...
mongodb通过mongoimport导入JSON文件数据
目录 一、概念 二、mongoimport导入工具 三、导入命令 一、概念 MongoDB是一个流行的开源文档数据库,它支持JSON格式的文档,非常适合存储和处理大量的非结构化数据。在实际应用中,我们经常需要将大量的数据批量导入到MongoDB中。mongoimpo…...

【Qt】控件概述 (1)
控件概述 1. QWidget核心属性1.1核心属性概述1.2 enable1.3 geometry——窗口坐标1.4 window frame的影响1.4 windowTitle——窗口标题1.5 windowIcon——窗口图标1.6 windowOpacity——透明度设置1.7 cursor——光标设置1.8 font——字体设置1.9 toolTip——鼠标悬停提示设置1…...

ping基本使用详解
在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为: 用来检测网络的连通情况和分析网络速度根据域名得到服务器 IP根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。我们通常会用它来直接 ping ip 地址,来测试网络的连…...

Win10之解决:设置静态IP后,为什么自动获取动态IP问题(七十八)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...

【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)
目录 一、简介一句话简介作者、引用数、时间论文地址开源代码地址 二、摘要三、引言四、整体架构(用一个例子来阐明)场景例子:核心点: 五、方法 (架构各部分详解)5.1 模型1. RAG-Sequence Model2. RAG-Toke…...
踩坑spring cloud gateway /actuator/gateway/refresh不生效
版本 java version: 17 spring boot: 3.2.x spring cloud: 2023.0.3 现象 参考Spring Cloud Gateway -> Actuator API -> Refreshing the Route Cache 说明,先修改routes配置再调用/actuator/gateway/refresh,接口返回200 status,但…...

【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程
目录 1 KEIL(MDK-ARM) 5 Project工程设置 2 MCU和嵌入式软件包的选择 3 Code Generator 3.1 STM32Cube Firmware Library Package 3.2 Generated files 3.3 HAL Settings 3.4 Template Settings 4 Advanced Settings 5 自动生成的KEIL(MDK-ARM) 5 Project工程目录 结…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...