【经验分享】在WSL中使用USB设备

news2024/7/2 3:43:38

具体步骤:

首先在windows中安装 USBIP 工具,在GitHub上下载安装包并根据README文档的说明进行操作:

下载链接:https://github.com/dorssel/usbipd-win/releases

同时在 WSL Linux 端也需要安装编译内核所需的库和工具,为后续做准备:

$ sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev autoconf libudev-dev libtool

打开wsl ubuntu终端使用命令:uname -r得到版本号,同时根据版本号使用管理员模式新建目录

screenshot_image.png

$ sudo mkdir /usr/src/5.15.90.1-microsoft-standard-WSL2

同时我们去GitHub下载一份wsl内核源码:https://github.com/microsoft/WSL2-Linux-Kernel/releases

这里的版本就是你使用命令 uname -r 得到的版本号,建议可以先手动安装压缩包,然后使用vscode连接wsl,把文件拖拽到wsl下

然后解压到指定路径下(这部分注意区分版本号,不要一昧照搬命令):

$ sudo tar -xzvf WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1.tar.gz -C /usr/src/5.15.90.1-microsoft-standard-WSL2/

$ cd /usr/src/5.15.90.1-microsoft-standard-WSL2/
$ sudo mv WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1/* ./ && sudo rm -r WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1

然后将内核的一些配置信息复制到当前文件夹下:

$ sudo cp /proc/config.gz config.gz
$ sudo gunzip config.gz
$ sudo mv config .config

接着我们执行menuconfig命令打开图形化菜单

$ sudo make menuconfig

进入如下路径:> Device Drivers > USB support

下面是一些必须的添加项,一般默认都是选中的,不过最好还是检查下:

Device Drivers -> USB Support
Device Drivers -> USB Support -> USB announce new devices
Device Drivers -> USB Support -> USB Modem (CDC ACM) support
Device Drivers -> USB Support -> USB/IP
Device Drivers -> USB Support -> USB/IP -> VHCI HCD
Device Drivers -> USB Serial Converter Support
Device Drivers -> USB Serial Converter Support -> USB FTDI Single port Serial Driver

同时记得关闭 Device Drivers -> USB Support -> USB/IP -> Debug messages for USB/IP这一选项,否则调试信息会非常影响你的使用体验

另外也可以添加你具体所需的USB模块勾选上,保存退出后执行内核编译

$ sudo make -j8 

内核编译期间发生报错:

screenshot_image.png

这主要是由于系统缺少dwarves软件包导致的,我们使用apt命令安装并继续执行编译:

$ sudo apt install dwarves

$ sudo make -j8 && sudo make modules_install -j8 && sudo make install -j8

发现又产生了报错:

screenshot_image.png

查找资料似乎说明的是这仅仅是个警告,我通过禁用BTF的调试信息解决了这个问题

$ sudo vi .config

# 找到宏`CONFIG_DEBUG_INFO_BTF`并将value改为 `n`

安装内核时发生报错:

screenshot_image.png

解决方式有两种:

  • 1.可以选择在.config中禁用宏CONFIG_X86_X32
  • 2.找到合适的binutils版本使其能够编译

我选择的是第一种,根据我在网上找到的说法是:

# 除非您想要它并且拥有它的用户空间,否则 X32 并不是特别有用。请注意,X32 是 64 位的 x32 ABI,它是编译为在 64 位长模式下运行的“32 位”短指针代码,与真正的本机 32 位二进制/ABI 支持不同。这是一种具有非常具体的利基的特殊模式。

# 您可以在内核配置中禁用[CONFIG_X86_X32](https://cateee.net/lkddb/web-lkddb/X86_X32.html)或获取具有 elf32_x86_64 目标支持的 binutils。如何获取 binutils 取决于您的发行版。

所以我选择禁用宏CONFIG_X86_X32,之后继续执行命令:

$ sudo make modules_install -j8
$ sudo make install -j8

screenshot_image.png

之后就可以选择编译 USBIP 工具了:

$ cd tools/usb/usbip
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make install -j8

复制工具库位置,以便 usbip 工具可以获取到:

$ sudo cp libsrc/.libs/libusbip.so.0 /lib/libusbip.so.0

安装 usb.ids 以便显示 USB 设备的名称:

$ sudo apt-get install hwdata

重启WSL:

$ wsl --shutdown

下面进行测试是否成功:
打开powershell:

$ usbipd wsl list

假设我们需要在wsl使用的 usb 设备为 ST-Link Debug, USB 大容量存储设备, USB 串行设备 (COM3),设备id为 0483:374b

我们使用命令附加设备到 wsl2 中

$ usbipd wsl attach --hardware-id "0483:374b"

screenshot_image.png

此时我们打开一个 wsl 终端,使用命令 lsusb 即可看到附加到 wsl 的设备

screenshot_image.png

然后我们再次回到 powershell ,执行 usbipd wsl list命令,可以看到此时的 usb 设备已经成功添加到 wsl 了

screenshot_image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1137049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微信小程序】实现投票功能(附源码)

一、Vant Weapp介绍 Vant Weapp 是一个基于微信小程序的组件库,它提供了丰富的 UI 组件和交互功能,能够帮助开发者快速构建出现代化的小程序应用。Vant Weapp 的设计理念注重简洁、易用和高效,同时提供灵活的定制化选项,以满足开发…

电动汽车租赁平台【EV Mobility】申请875万美元纳斯达克IPO上市

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于美国的电动汽车租赁平台【EV Mobility】近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为(EVMO) &#xff0c…

举个栗子!Quick BI 技巧(3):创建趋势分析表

上一期举个栗子为数据粉们分享了如何简单几步创建柱线图,有一些数据想了解如何在 Quick BI 中制作趋势分析表。 趋势分析表由趋势分析图和趋势分析明细表组成,可以通过趋势分析图查看指标的宏观趋势,通过趋势分析表查看指标详情,…

macOS Sonoma 14.1正式版(23B74)发布(可下载黑白苹果镜像)

系统介绍 黑果魏叔苹果今天为 macOS Sonoma 推出了 14.1 版本更新,魏叔发现,本更新主要改善了 Apple Music 界面,设置中新增保修状态,并修复了多项错误内容。 根据苹果的新说明,这次的 Mac 更新不仅提供了一系列的改善…

博睿数据亮相GOPS全球运维大会上海站!

10月26日,博睿数据携核心产品新一代一体化智能可观测平台 Bonree ONE 亮相第二十一届 GOPS 全球运维大会上海站,展示博睿数据在智能运维领域的科技实力与创新成果。同时,博睿数据AIOps首席专家兼产品总监贺安辉在AIOps最佳实践及解决方案专场…

User CSS 在性能优化方面的实践

目录 前言 1. 减少重绘和回流 1.1 用法 1.2 代码示例 1.3 理解 2. 使用CSS精灵 2.1 用法 2.2 代码示例 2.3 理解 3. 压缩CSS文件 3.1 用法 3.2 代码示例 3.3 理解 4. 使用媒体查询进行响应式设计 4.1 用法 4.2 代码示例 4.3 理解 5. 使用CSS预处理器和构建工…

物联网AI MicroPython传感器学习 之 MDL0025心率传感器

学物联网,来万物简单IoT物联网!! 一、产品简介 PulseSensor(MDL0025) 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指或耳垂等处,通过导线连接可将采集到的模拟信号传输给HaaS开发版用来转…

[java进阶]——HashMap的底层实现原理和源码分析,另附几个高频面试题

🌈键盘敲烂,年薪30万🌈 目录 一、底层数据结构 二、底层原理及源码分析 2.1 继承关系 2.2 成员变量 2.3 构造方法 2.4 重要的成员方法 2.4.1 put()方法 三、高频面试题 一、底层数据结构 JDK8以后底层使用 数组链表红黑树的数据结构&am…

贝锐花生壳内网穿透推出全新功能,远程业务连接更安全

贝锐旗下内网穿透兼动态域名解析品牌花生壳目前推出了全新的“访问控制”功能,可精确设置访问权限,充分保障信息安全,满足更多用户安全远程访问内网服务的需求。 通过这一功能,可实现指定时间、IP、地区等条件下才能远程访问映射的…

【C++】继承 ⑬ ( 虚继承原理 | 虚继承解决继承二义性问题 | 二义性产生的原因分析 )

文章目录 一、虚继承原理1、虚继承解决继承二义性问题2、二义性产生的原因分析3、虚继承原理 二、代码示例 - 虚继承原理1、完整代码示例2、执行结果 一、虚继承原理 1、虚继承解决继承二义性问题 继承的二义性 : 如果 一个 子类 ( 派生类 ) 继承多个 父类 ( 基类 ) , 这些父类…

【【萌新的FPGA学习之FIFO的介绍】】

萌新的FPGA学习之FIFO的介绍 FIFO first in first out FIFO 的作用更多的是 缓冲与缓存 或者FIFO 也常被用来使用为 FIFO 本质上是由 RAM 加读写控制逻辑构成的一种先进先出的数据缓冲器,其与普通存储器 RAM 的 区别在于 FIFO 没有外部读写地址线,使用起…

接口自动化测试方案

1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX,XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试…

数据隐私保护与合规性:现代企业的数据安全策略

第一章:引言 在当今数字化时代,数据已经成为企业最宝贵的资源之一。然而,伴随着大规模数据收集和处理的增加,数据隐私保护和合规性问题也日益凸显。本文将深入探讨数据隐私保护和合规性对现代企业的重要性,并提供一些…

重大突破!国内首个ASIL D认证MCU在底盘域量产上车

中国本土车规级MCU再次实现了重要突破。 近日,芯驰科技的高性能车规MCU——E3搭载在明然科技悬架控制器(CDC)批量下线,并且成功在奇瑞瑞虎9、星途瑶光等车型上正式量产,成为了国内首个应用在主动悬架的车规控制芯片。…

行业追踪,2023-10-26

自动复盘 2023-10-26 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

干货很干:5个有效引流方法,让客户找上门

如何才能把用户引流到私域?是很多老板,店主,线上创业者的卡点,今天分享5个实用方法: ✅线下导流 ✅巧用搜索 ✅同行互推 ✅社群引流 ✅内容输出 所以引流不仅需要知道方法,还需要知道底层逻辑,也…

分布式事务(Seata)——Seata分布式事务XA模式、AT模式、TCC模式的介绍和对比 结合案例分析AT模式和XA模式【源码】

前言 事务(TRANSACTION)是一个不可分割的逻辑单元,包含了一组数据库操作命令,并且把所有的命令作为一个整体向系统提交,要么都执行、要么都不执行。 事务作为系统中必须考虑的问题,无论是在单体项目还是在分布式项目中都需要进行…

从零开始:开发知识付费小程序的入门指南

当下,知识付费小程序成为了一个独具潜力的领域。本篇文章将为您提供一份从零开始的知识付费小程序开发入门指南,让您能够进入这个领域并开始赚取您的专业知识。 第一步:什么是知识付费小程序? 知识付费小程序是一种基于微信小程…

数据创建与数据管理

原文:Dataset Creation and Curation Introduction to Data-Centric AI 为监督学习创建数据集需要样本以及样本的标签。课程专注于分类任务,但是把这些原理运用到其它监督学习的任务也是可以的。 数据收集 寻找训练数据时的关键问题: 1.…

c#学习相关系列之构造函数

目录 一、构造函数的作用 二、构造函数的特征 三、三种构造函数介绍 1、实例构造函数 2、静态构造函数 3、私有构造函数 一、构造函数的作用 构造函数用来创建对象,并且可以在构造函数中对此对象进行初始化。构造函数具有与类相同的名称,它通常用来…