文章总结: 本文详细介绍了通过USB/IP协议将Windows系统中的USB设备连接到WSL的方法,包括安装USBIPD工具、设备绑定与挂载步骤,并针对Android调试、串口设备和U盘等场景提供实操指南,同时附有常见问题解决方案。 综合评分: 85 文章分类: 其他
一键脚本简化流程
cat > ~/adb-connect.sh << 'SCRIPT'
#!/bin/bash
echo "📱 Android ADB 快速连接"
echo ""
# 尝试自动检测并挂载
DEVICES=$(sudo usbip list -r localhost 2>/dev/null | grep -oP '1-\d+' | head -1)
if [ -n "$DEVICES" ]; then
echo "发现 USB 设备: $DEVICES"
sudo usbip attach -r localhost --busid $DEVICES
else
echo "未找到可用设备,请先在 PowerShell 中执行:"
echo " usbipd bind --busid <设备ID>"
fi
echo ""
echo "=== ADB 设备列表 ==="
adb devices 2>/dev/null || echo "ADB 未安装或无设备"
SCRIPT
chmod +x ~/adb-connect.sh
./adb-connect.sh
场景二:串口设备(Arduino / ESP32 / 嵌入式)
开发者最常用的场景之一
# 绑定串口设备(通常是 "USB Serial Device" 或类似名称)
usbipd list
# 找到 COM3 对应的 USB 设备
usbipd bind --busid 1-8 # 假设 1-8 是你的串口设备
# WSL 中挂载
sudo usbip attach -r localhost --busid 1-8
# 查看串口设备
ls /dev/ttyUSB* /dev/ttyACM*
# /dev/ttyUSB0 ← 这就是你的串口!
# 安装串口工具
sudo apt install minicom picocom cutcom
# 用 minicom 打开串口(115200 波特率)
minicom -D /dev/ttyUSB0 -b 115200
# 或用 picocom(更轻量)
picocom -b 115200 /dev/ttyUSB0
# 用 Python 操作串口
pip install pyserial
python3 << EOF
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
ser.write(b'Hello from WSL!\n')
print(ser.readline().decode())
ser.close()
EOF
PlatformIO / Arduino IDE 集成
# 安装 PlatformIO(CLI 版)
pip install platformio
# 编译并上传固件到 ESP32/Arduino
pio run -t upload
# PlatformIO 会自动检测 /dev/ttyUSB0 并上传固件
# 全程在 WSL 中完成,无需切换到 Windows!
场景三:U 盘与移动存储
⚠️ 注意:U 盘通过 USBIPD 挂载后可以访问,但实际场景中直接用
/mnt/d更方便。此处仅作技术展示。
usbipd bind --busid <U盘的BUSID>
sudo usbip attach -r localhost --busid <BUSID>
# U 盘通常会作为 SCSI 磁盘出现
# 查看新出现的块设备
lsblk
# sdb 8:16 1 28.9G 0 disk
# └─sdb1 8:17 1 28.9G 0 part
# 挂载
sudo mkdir -p /mnt/usb
sudo mount /dev/sdb1 /mnt/usb
# 访问
ls /mnt/usb/
# 使用完毕后卸载
sudo umount /mnt/usb
常见问题排查
Q1:usbip: error: attach request failed
原因:设备已被占用或未正确绑定
解决:
1. Windows 中确认设备未被其他程序占用
2. 重新绑定:usbipd unbind --busid <ID> && usbipd bind --busid <ID>
3. 重启 WSL:wsl --shutdown
Q2:ADB 显示 no permissions 或 unauthorized
原因:手机端的 USB 调试授权弹窗未确认
解决:
1. 手机屏幕上应该弹出"允许 USB 调试吗?"对话框
2. 勾选"一律允许使用这台计算机进行调试"
3. 点击确定
4. 重新 adb devices
Q3:绑定后设备在 Windows 中不可用了
这是正常行为!绑定 = 将设备从 Windows 移交给 WSL。
恢复给 Windows:
usbipd unbind --busid <BUSID>
WSL 中也需要先断开:
sudo usbip detach --port=<端口号>
sudo usbip list # 可以看到当前 attached 的设备和端口
Q4:每次重启都要重新绑定?
是的,USBIPD 绑定不会持久化。解决方案:
# 创建 PowerShell 脚本自动绑定常用设备
# save as C:\Scripts\bind-devices.ps1
usbipd bind --busid 1-6 # Android
usbipd bind --busid 1-8 # Serial
Write-Host "✅ USB 设备已绑定到 WSL"
# WSL 端创建自动挂载脚本
cat > ~/usb-attach.sh << 'SCRIPT'
#!/bin/bash
sudo usbip attach -r localhost --busid 1-6 # Android
sudo usbip attach -r localhost --busid 1-8 # Serial
echo "✅ USB 设备已挂载"
SCRIPT
chmod +x ~/usb-attach.sh
下期预告
下一篇开始 高手篇:《WSL 跑 AI/ML 模型?CUDA 加速 + PyTorch 实战》
- • 🎮 GPU 直通配置与验证
- • 🤗 CUDA Toolkit 安装
- • 🔥 PyTorch / TensorFlow GPU 支持
- • 🧠 本地运行大模型(LLM)
- • 📊 Jupyter Notebook GPU 监控
💡 你有在 WSL 中连接过什么 USB 设备?评论区聊聊!
🐧 UbuntuNews — 专注 Ubuntu/Linux 技术分享
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:ubuntu italks89 italks89《USB 设备连接 WSL?USB/IP 与硬件直通实战》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论