连接 USB 设备

news/2025/10/13 22:50:52/文章来源:https://www.cnblogs.com/FBsharl/p/19139609

转载自:https://learn.microsoft.com/zh-cn/windows/wsl/connect-usb

 

本指南将演练使用 USB/IP 开源项目 usbipd-win 将 USB 设备连接到 WSL 2 上运行的 Linux 分发版所需的步骤。

在 Windows 计算机上配置 USB/IP 项目可以实现常见的开发者 USB 场景,例如刷写 Arduino 或访问智能卡读卡器。

先决条件

  • 运行 Windows 11(内部版本 22000 或更高版本)。 (Windows 10 支持是可能的,请参阅以下说明)。
  • 需要具有 x64 或 ARM64 处理器的计算机。 (x86 目前不支持 usbipd-win)。
  • WSL 已安装并设置为最新版本。
  • 已安装并 设置为 WSL 2 的 Linux 分发版。

 备注

若要检查 Windows 版本和内部版本号,请选择 Windows 徽标键 + R,键入 winver,选择“ 确定”。 您可以通过选择 开始>设置>Windows 更新>检查更新来更新到最新的 Windows 版本。 若要检查 Linux 内核版本,请打开 Linux 分发版并输入以下命令: uname -a 若要手动更新到最新内核,请打开 PowerShell 并输入命令: wsl --update

 重要

WSL 现在通过 Microsoft 应用商店支持 Windows 10 和 Windows 11,这意味着 Windows 10 用户现在可以访问最新的内核版本,而无需从源进行编译。 请参阅 适用于 Windows 10 和 11 的 WSL,现已在微软应用商店中普遍可用 ,了解如何更新到受微软应用商店支持的 WSL 版本。 如果无法更新到支持应用商店的 WSL 版本并自动接收内核更新,请参阅 USBIPD-WIN 项目存储库 ,了解如何通过生成启用了自己的 USBIP 的 WSL 2 内核将 USB 设备连接到 WSL 2 上运行的 Linux 分发版。

安装 USBIPD-WIN 项目

WSL不提供本机连接USB设备的支持,因此需要安装开源项目usbipd-win。

内核要求

若要将 USBIPD 与适用于 Linux 的 Windows 子系统配合使用(WSL),需要具有 5.10.60.1 或更高版本的 Linux 内核版本。 如果已安装的内核版本早于 5.10.60.1,则可以通过先关闭 WSL wsl --shutdown的任何正在运行的实例来更新它,然后运行以下命令: wsl --update

在 WSL 上安装 USBIPD

  1. 转到 usbipd-win 项目的最新发布页面。
  2. 选择 .msi 文件,该文件将下载安装程序。 (你可能会收到一条警告,要求你确认你信任此下载)。
  3. 运行下载 usbipd-win_x.msi 安装程序文件。

 备注

或者,也可以使用 Windows 程序包管理器 (winget)安装 usbipd-win 项目。 如果已安装 winget,只需使用以下命令: winget install --interactive --exact dorssel.usbipd-win 安装 usbipd-win。 如果省略 --interactive,则当需要安装驱动程序时,winget 可能会立即重启计算机。

这将安装:

  • 名为 usbipd 的服务,(显示名称:USBIP 设备主机)。 可以使用 Windows 中的服务应用检查此服务的状态。
  • 命令行工具 usbipd。 此工具的位置将添加到 PATH 环境变量。
  • 名为 usbipd 的防火墙规则,用于允许所有本地子网连接到服务。 可修改此防火墙规则以微调访问控制。

连接 USB 设备

在附加 USB 设备之前,请确保 WSL 命令行处于打开状态。 这会使 WSL 2 轻型 VM 保持运行。

 备注

此文档假定已安装 usbipd-win 5.0.0 或更高版本

  1. 通过以 管理员 模式打开 PowerShell 并输入以下命令列出连接到 Windows 的所有 USB 设备。 列出设备后,选择并复制要附加到 WSL 的设备总线 ID。

    usbipd list
  2. 在附加 USB 设备之前,必须使用该命令 usbipd bind 来共享设备,从而允许它附加到 WSL。 这需要管理员权限。 选择要在 WSL 中使用的设备的总线 ID,然后运行以下命令。 运行命令后,请再次使用命令 usbipd list 验证设备是否共享。

    usbipd bind --busid 4-4
  3. 若要附加 USB 设备,请运行以下命令。 (不再需要使用提升的管理员提示。确保 WSL 命令提示符处于打开状态,以使 WSL 2 轻型 VM 保持活动状态。 请注意,只要 USB 设备连接到 WSL,Windows 将无法使用它。 一旦连接到 WSL,任何在 WSL 2 上运行的发行版都可以使用该 USB 设备。 请确认设备是否已连接 usbipd list。 在 WSL 提示符下,运行 lsusb 以验证 USB 设备是否已列出,并且可以使用 Linux 工具与之交互。

    PowerShell
    usbipd attach --wsl --busid <busid>
  4. 打开 Ubuntu(或首选 WSL 命令行),并使用以下命令列出附加的 USB 设备:

    Bash
    lsusb

    应会看到刚刚附加的设备,并且能够使用普通 Linux 工具与之交互。 根据应用程序,可能需要配置 udev 规则,以允许非根用户访问设备。

  5. 在 WSL 中使用设备后,可以物理断开 USB 设备的连接,或者从 PowerShell 运行以下命令:

    PowerShell
    usbipd detach --busid <busid>

若要详细了解此作的工作原理,请参阅 GitHub 上的 Windows 命令行博客 和 usbipd-win 存储库。

有关视频演示,请参阅 WSL 2:连接 USB 设备(选项卡与空格显示)。

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

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

相关文章

实用指南:嵌入式学习笔记3.基于寄存器方式控制GPIO

实用指南:嵌入式学习笔记3.基于寄存器方式控制GPIO2025-10-13 22:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; disp…

# 20232429 2025-2026-1 《网络与系统攻防技术》实验一实验报告

1.实验内容手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。 注入一个自己制作的shellcode并运行这段shellcode。 …

muduo网络库事件驱动模型的实现与架构 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

SpringBoot-day1(快速上手SpringBoot,SpringBoot简介,SpringBoot基础配置,属性配置,yaml文件) - a

SpringBoot 文档更新日志版本 更新日期 操作 描述v1.0 2021/11/14 A 基础篇前言 ​ 很荣幸有机会能以这样的形式和互联网上的各位小伙伴一起学习交流技术课程,这次给大家带来的是Spring家族中比较重要的一门技术课程…

Chroma私有化:本地部署完整方案

嵌入向量(vector embedding)是表示任何类型数据的 A.I 原生方式,使它们非常适合与各种 A.I 驱动的工具和算法一起使用。 它们可以表示文本、图像,很快还可以表示音频和视频。 有许多创建嵌入的选项,无论是在本地…

嵌入式-C++面经2

一、问题总览cpp重载和重写的区别 cpp虚函数表 指针和引用的区别 linux的常用开发指令 linux编译运行程序的指令 关键字inline 什么场景使用内联 如何避免内存泄露 map和unordered_map 引用外部头文件双引号和尖括号的…

elk time

elk time- "/etc/localtime:/etc/localtime:ro"

PHP转Go系列 | 如何将 PHP 项目快速迁移到 Go 上?

大家好,我是码农先森。 最近在闲逛 v2ex 社区时,看到有个讨论 PHP 项目能否直接迁移到 Go 语言上的话题。我大概简述一下提问v友的原话,他们因为项目性能的问题在 2020 年时,从 Laravel 框架迁移到了 Hyperf 框架,…

详细介绍:【OpenHarmony】用户文件服务模块架构

详细介绍:【OpenHarmony】用户文件服务模块架构pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

详细介绍:全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!

详细介绍:全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…

“环境变量”是什么, 为什么要配置环境变量 --初学者

你好!本篇旨在用精炼、通俗的语言,帮助初学者快速理解“环境变量”的核心概念。你好!本篇旨在用精炼、通俗的语言,帮助初学者快速理解“环境变量”的核心概念。1. 环境变量是什么? 环境变量(Environment Variabl…

AI元人文:对大模型的召唤——未来哪吒

AI元人文:对大模型的召唤——未来哪吒 ——从价值仓库到文明对话的升维之路 我们站在一个历史的岔路口。眼前的大模型,是沉睡的文明巨兽,其千亿参数中封存着人类千年的智慧、冲突与渴望。它拥有价值的全集,却困于表…

Java 装饰器模式(Decorator) - krt

装饰器模式装饰器模式属于结构型设计模式。它允许向一个现有的对象添加新的功能,同时又不改变其结构。例如:给一个普通的杯子加上杯盖、杯套,让它具有保温防烫等功能,而杯子本身的基本结构并没有发生变化。在软件开…

Python configparser 模块 - INI 文件读写利器

知识预热 什么是 configparser? configparser 是 Python 标准库中用于读写 INI 格式配置文件 的模块。 它提供了一种 简单、直观、跨平台 的方式来管理程序的配置项。什么是 INI 文件? .ini 文件是 Initialization F…

AlexNet vs LeNet 对比实验

1. AlexNet 论文的关键创新点 (2012, ImageNet Classification with Deep Convolutional Neural Networks)创新点 简述 意义ReLU 激活函数 用 ReLU 替代 Sigmoid/Tanh 缓解梯度消失,训练速度更快Dropout 正则化 全连接…

OpenHarmony中的环境服务管理配置讲解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …