🚀 WSL 2 救星:5分钟搞定 USB 设备穿透 (usbipd-win 快速上手指南)
🚀 WSL 2 救星:5分钟搞定 USB 设备穿透 (usbipd-win 快速上手指南)
nodaoli如果你是个嵌入式开发者 (ESP32, STM32, Arduino),或者只是想在 WSL 里刷个机,你一定遇到过这个痛点:WSL 2 默认居然看不见 Windows 插上的 USB 设备!
别急,微软官方开源的工具 usbipd-win 就是为了解决这个问题而生的。它能通过网络把 Windows 上的 USB 端口“借”给 WSL 用。
本文带你光速上手,顺便解决常见的“权限报错”和“火绒冲突”问题。
🛠️ 第一步:安装工具 (Windows 端)
在 Windows 11 或 Windows 10 (建议 Win11,体验更丝滑) 上,打开 PowerShell (管理员模式)。
使用微软官方包管理器 winget 一键安装:
1 | winget install usbipd |
安装完成后,弹出的窗口会自动关闭。建议重启一个 PowerShell 窗口以确保环境变量生效。
🔗 第二步:找到你的设备
把你的开发板(比如 ESP32)插上电脑。在 PowerShell 中输入:
1 | usbipd list |
你会看到类似这样的列表:
1 | BUSID VID:PID DEVICE STATE |
关键点: 记下你设备的 BUSID(比如 1-1)。
⚡ 第三步:连接设备 (穿透到 WSL)
这是最核心的一步。
情况 A:普通连接(无报错)
如果你的电脑很纯净,直接运行:
1 | usbipd attach --wsl --busid 1-1 |
(注意:把 1-1 换成你刚才看到的 ID)
情况 B:遇到“Unknown USB filter”警告(火绒/杀毒软件用户必看)
如果你装了火绒或者其他安全软件,可能会报错:
usbipd: warning: Unknown USB filter 'hrdevmon' ...
别慌,加上 --force 强制绑定即可:
1 | # 1. 先强制绑定 |
成功后,Windows 会发出设备拔出的提示音(这是正常的,因为设备被 WSL 抢走了)。
🐧 第四步:在 WSL 里验证与赋权
现在打开你的 WSL 终端 (Ubuntu)。
1. 验证是否看到设备
输入 lsusb,你应该能看到你的设备出现在列表里了。
2. 解决“Permission denied” (最重要的一步!)
默认情况下,普通用户(非 root)没有权限读写 USB 设备。你会遇到:
failed to open port: Permission denied
一劳永逸的解决方法:
把你的用户加入 dialout 用户组(只需执行一次):
1 | sudo usermod -aG dialout $USER |
注意: 执行完这句后,必须完全关闭 WSL 终端并重新打开,或者注销重新登录才能生效。
临时救急方法:
1 | sudo chmod 777 /dev/ttyUSB0 |
🔌 第五步:用完记得“还”回去
当你不再需要在 WSL 里使用该设备,或者想让 Windows 的串口助手重新识别它时,需要在 Windows PowerShell 里执行:
PowerShell
1 | usbipd detach --busid 1-1 |
或者简单粗暴地:拔掉 USB 线再插回去。
📝 常见命令速查表
| 目的 | Windows PowerShell 命令 |
|---|---|
| 列出设备 | usbipd list |
| 连接设备 | usbipd attach --wsl --busid <ID> |
| 强制连接 | usbipd bind --force --busid <ID> (仅需一次) |
| 断开设备 | usbipd detach --busid <ID> |


