WSL(Ubuntu)连接 Windows 的 USB 设备(完结)
前言
最近使用 Linux 通过串口与设备通信,之前使用 Linux 都是在 VMware 里创建虚拟机,该平台下若有串口通信需求,有专门的按键功能切换很方便。
但切换了 WSL2 (windows 的 linux 子系统,配置很方便)后,因为是纯命令行操作,就带来了点串口通信的麻烦。
目前 WSL2 官方没有提供相应的命令行来设置串口通信(WSL1 支持)。但总有大佬出来解决问题,所谓大佬栽树,我乘凉。
安装 package
两个安装方法,自选,我选的是第二个。
- github 获取,安装 usbipd-win 项目。
- 也可使用 Windows 程序包管理器程序 (winget) 来安装 usbipd-win 项目。 如果已安装 winget,只需使用命令
winget install --interactive --exact dorssel.usbipd-win安装 usbipd-win 即可。 如果省略了--interactive,winget 可能会立即重启计算机(如果这是安装驱动程序所必需的操作)。- 这将安装:
- 名为 usbipd 的服务(显示名称:USBIP 设备主机)。 可使用 Windows 中的“服 务”应用检查此服务的状态。
- 命令行工具 usbipd。 此工具的位置将添加到 PATH 环境变量。
- 名为 usbipd 的防火墙规则,用于允许所有本地子网连接到服务。 可修改此防火墙规则以微调访问控制。
附加 USB 设备
以 管理员模式 打开 PowerShell 和 WSL2 (也就是 Windows 和 WSL2 的终端)。

在 PowerShell 里输入
usbipd list把接到 windows 上的 USB 设备列出来,方便看 USB-id(后面命令需要用到)。

在附加 USB 设备之前,必须使用命令
usbipd bind先共享设备(必须要做),从而允许它附加到 WSL2。运行命令后,再次使用命令 usbipd list 验证设备是否已共享。(后面的设备状态变成 Shared)

然后就可以附加 USB 设备了(注意,只要 USB 设备连接到 WSL,Windows 将无法使用它)。使用命令
usbipd attach --wsl -b 2-1附加 USB 设备,附加到 WSL2 后,WSL2 运行的分发版本(也就是你 WSL 安装的 linux 系统,我的是 Ubuntu )可以使用 USB 设备。 使用usbipd list验证设备是否已附加。

在 WSL 中检查下是否正常附加上 USB 设备,使用
lsusb命令列出附加的 USB 设备。运行一个使用到 USB 串口的 RUST 程序,可以正常运行说明可以了。

应该可以看到刚刚附加的设备,并且能够使用常规 Linux 工具与之交互。根据你的应用程序,可能还需要配置 udev 规则以允许非根用户访问设备。WSL 中完成设备使用后,在 PowerShell(Windows) 里
usbipd detach --busid <busid>物理断开 USB 设备,才能在 Windows 里使用这个 USB 设备(这个是微软推荐的做法)。或者粗暴点,直接把设备拔了,重新插一下,效果也一样。但是不知道有没有啥负面影响(目前还没发现)。
参考
WSL(Ubuntu)连接 Windows 的 USB 设备(完结)的更多相关文章
- ubuntu 连接windows远程桌面 &&rdesktop 退出全屏模式
参考:http://www.asgone.net/ubuntu-connect-windows-remote-desktop/ 呵呵,使用上了ubuntu,怎么接连上我的服务器的远程桌面呢,找了找帮助 ...
- Ubuntu 连接手机 不识别设备 -- 解决办法
1.usb线连接手机,输入命令 $ lsusb Bus 004 Device 002: ID 8087:8000 Intel Corp. Bus 004 Device 001: ID 1d6b:000 ...
- remote desktop connect btw Mac, Windows, Linux(Ubuntu) Mac,Windows,Linux之间的远程桌面连接
目录 I. 预备 II. Mac连接Windows III. Windows连接Mac IV. Windows连接Ubuntu V. Mac连接Ubuntu VI. Ubuntu连接Mac VII, ...
- usb设备运行不正常的解决方法(转)
add by zhj:上午鼠标还用的好好的,下午就不能用了,插上之后提示“跟这台计算机连接的一个usb设备运行不正常”,尼玛,什么情况?我今天没安装软件啊,换了个USB接口也不行,在另一台电脑上试还是 ...
- C# 实现自定义的USB设备与上位机进行通信(上位机部分)
因为以前没用过USB,对USB也不了解,于是上网查了很多资料,不过网上的资料都是零零散散,不清不楚的,于是我自己总结了一下,下面几个链接是网上这么多零散资料里,我觉得比较有参考意义的. USB设备连接 ...
- AD域控制器通过组策略禁止USB设备
问题:域环境下如何禁用USB口设备? 第一种:用传统的办法,在Bios中禁用USB. 第二种: 微软技术支持回答:根据您的需求, Windows识别USB设备主要通过两个文件,一个是Usbstor.p ...
- WSL Ubuntu 18.04 LTS + VS Code
WSL Ubuntu 18.04 LTS + VS Code WSL(Windows Subsystem for Linux)使得Windows用户能够在Windows系统上使用原生的Linux环 ...
- Ubuntu物理机中解决VirtualBox虚拟机无法连接USB设备的问题
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=611 问题描述: 在安装完VirtualBox的USB控制器扩展(关于在VirtualBox中安装USB控制器扩展的 ...
- 通过 xshell 连接 ubuntu on windows(WSL)
装上 ubuntu on windows 后,默认要先打开 cmd, 再运行 bash 进入 ubuntu 的 shell. 但是这个shell很难看,配色不好就算了,还存在各种复制粘贴麻烦. 默认没 ...
- Ubuntu/Windows下利用“HIDAPI”库函数实现与Hid类USB设备通信
一.背景: 最近在做的一个项目需要使用USB传递数据,对USB理解不是很深,USB的系统驱动编写则更是天方 夜谭,因此将设备配置成HID类设备成为了首选.其最大的好处在于,LINUX/Windows系 ...
随机推荐
- el-submenu 设定title不显示
原因为 插槽中有空格 slot=" title" 修改为 slot="title"即可
- Python批量分割Excel后逐行做差、合并文件的方法
本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件,首先依据某一列数据的特征截取我们需要的数据,随后对截取出来的数据逐行求差,并基于其他多个文件夹中同样大量 ...
- frp_v0.37.1内网穿透,内网服务公网用不求人
前言: 公司内网无法访问,出差又需要用到公司内网进行办公,苦恼了好一阵.这时候想到了内网穿透,这就不得不提到几年前被安利的frp,一看GitHub竟然已经5年了,网上估计大把教程了. 那么什么是frp ...
- Angular 18+ 高级教程 – Angular 的局限 の Query Elements
前言 熟悉 Angular 的朋友都知道,Angular 有非常多的局限,许多事情它都做不好,打开 Github 一堆 2016 - 2017 的 Issues,时至今日都没有解决. 原因也很简单 - ...
- 队列之ring_buffer优雅实现--附个人代码理解
1. 下面张贴实现该队列仅需的两个头文件:ring_buffer_iterator.h 和 fifo_iterator.h ring_buffer_iterator.h 1 /* 2 * 3 * Th ...
- CSP-S 2023
T1 直接 \(10^{5}\) 枚举状态就过了,合法的非零差分数量只可能为 \(1,2\)(\(0\) 相当于没转,按照题意 "都不是正确密码" 是不符的) 需要注意的是形如 0 ...
- 10-04 NOIP模拟赛
10-04 NOIP模拟赛 喜提80+30+10=120分 T1 水管(flow) 题目描述 某国有 \(n\) 个城市,水利调配非常有问题,这导致部分地区出现严重的缺水,而部分地区却全年洪灾泛滥.政 ...
- android中的render线程是什么?
在 Android 中,Render 线程(也称为渲染线程)是一个专门用于处理 UI 绘制和动画的线程.它的主要职责是确保用户界面在屏幕上流畅且高效地呈现.这个线程的引入是为了将渲染任务从主线程(UI ...
- Android dtbo(3) 编译和验证
您可以使用设备树编译器 (DTC) 编译设备树源文件.不过,在将叠加层 DT 应用于目标主 DT 之前,您还应该通过模拟 DTO 的行为来验证结果. 1. 通过DTC进行编译 构建主 DT .dts ...
- Linux 进程调度之schdule主调度器
考虑到文章篇幅,在这里我只讨论普通进程,其调度算法采用的是CFS(完全公平)调度算法. 至于CFS调度算法的实现后面后专门写一篇文章,这里只要记住调度时选择一个优先级最高的任务执行 一.调度单位简介 ...