如何使用usbipd-win:让Windows与WSL 2无缝共享USB设备的完整指南 🚀
简介:usbipd-win是一款强大的Windows开源工具,能够将本地连接的USB设备共享给其他机器,包括Hyper-V虚拟机和WSL 2环境。通过简单几步配置,开发者、研究人员和普通用户都能轻松实现跨系统USB设备访问,极大提升工作效率!
📋 核心功能与优势
usbipd-win解决了Windows与Linux子系统(WSL 2)之间USB设备共享的痛点,支持开发板调试、数据采集设备、传感器等多种硬件。其核心优势包括:
- 跨平台兼容:完美支持Windows 10/11(x64/ARM64)和WSL 2环境
- 即插即用:无需复杂驱动配置,安装后即可快速共享设备
- 持久化共享:设备绑定状态支持重启后保留,减少重复操作
- 安全可控:内置防火墙规则,可自定义访问权限
🚀 快速安装步骤
系统要求
- Windows 10/11 或 Windows Server 2019+(版本1809及以上)
- 管理员权限(用于安装服务和配置设备)
安装方法(二选一)
方法1:使用Windows Package Manager(推荐)
打开PowerShell,执行以下命令一键安装:
winget install usbipd
方法2:手动下载安装包
- 访问项目最新发布页面
- 下载并运行
.msi安装文件 - 按照向导完成安装,系统会自动:
- 安装
usbipd服务(用于设备共享管理) - 添加命令行工具到系统PATH
- 创建防火墙规则允许TCP 3240端口访问
- 安装
⚠️ 注意:若使用第三方防火墙,需手动允许TCP 3240端口的入站连接
💻 详细使用教程
🔍 第1步:查看可用USB设备
以管理员身份打开PowerShell,执行以下命令列出所有连接的USB设备:
usbipd list
输出示例:
BUSID VID:PID DEVICE STATE
1-1 0483:374b STMicroelectronics ST-LINK/V2 Not shared
1-2 8087:0029 Intel(R) AX200 Bluetooth Not shared
📤 第2步:共享指定设备
使用设备对应的BUSID进行绑定(共享):
usbipd bind --busid=1-1
✅ 成功绑定后,设备状态会变为"Shared",且该设置会永久保存(重启后依然有效)
🔌 第3步:在WSL 2中连接设备
在Windows终端执行以下命令(无需管理员权限):
usbipd attach --wsl --busid=1-1
此时设备会立即出现在WSL 2环境中,可通过lsusb命令验证:
# 在WSL 2中执行
lsusb
📊 设备管理常用命令
| 功能 | 命令 |
|---|---|
| 解除设备共享 | usbipd unbind --busid=<BUSID> |
| 断开WSL连接 | usbipd detach --busid=<BUSID> |
| 查看服务状态 | sc query usbipd |
| 重启服务 | sc restart usbipd |
💡 实用场景与最佳实践
场景1:嵌入式开发调试
将开发板(如STM32、Arduino)通过USB连接Windows,共享后直接在WSL 2中使用gdb、openocd等工具进行调试,无需切换系统或使用虚拟机USB重定向。
场景2:数据采集与分析
科研人员可在Windows上连接USB数据采集设备,通过WSL 2运行Python/R数据分析脚本,充分利用Linux生态的科学计算库。
场景3:跨系统外设使用
在WSL 2中访问Windows连接的USB打印机、扫描仪等外设,实现Linux环境下的硬件资源利用。
📝 最佳实践:
- 定期更新WSL 2内核:
wsl --update- 对频繁使用的设备创建绑定脚本
- 通过
usbipd list定期检查设备状态
🛠️ 高级配置与扩展
🔧 自定义防火墙规则
如需限制特定IP访问,可通过Windows防火墙高级设置修改"usbipd"规则,指定允许的远程IP范围。
🖥️ 图形界面工具
项目提供多种GUI工具(位于Usbipd.PowerShell/目录),包括:
- PowerShell cmdlet
Get-UsbipdDevice - 第三方开发的系统托盘工具(需单独安装)
🧪 测试与验证
项目提供完整的单元测试套件(UnitTests/目录),覆盖设备检测、命令解析、WSL交互等核心功能,确保稳定性。
📚 相关资源
- 官方文档:项目README.md
- 设备兼容性列表:Tested Devices
- WSL支持说明:WSL Support
- 源代码目录:
- 核心实现:Usbipd/
- 安装配置:Installer/
❓ 常见问题解决
Q1:WSL中无法识别设备怎么办?
A:执行wsl --update更新内核,或手动安装USB驱动
Q2:如何设置设备自动共享?
A:创建任务计划,在系统启动时执行绑定命令:
usbipd bind --busid=<BUSID>
Q3:服务启动失败如何排查?
A:检查系统日志(事件查看器 -> Windows日志 -> 应用程序),或尝试重新安装驱动:
usbipd install-driver
🎯 总结
usbipd-win通过简单直观的命令行操作,打破了Windows与WSL 2之间的USB设备壁垒,为开发者和高级用户提供了高效的跨系统硬件共享方案。无论是嵌入式开发、数据采集还是日常外设使用,这款工具都能显著提升工作效率,是WSL生态中不可或缺的实用工具。
立即尝试usbipd-win,体验无缝的USB设备跨系统共享吧!🔗
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



