上一篇解决了无线连接的问题,图穷匕首现,用这个板子做 USB over Network 的主控,解决我远程使用 3D 打印机、HP 打印机的问题。经测试,USB Camera、U盘也可以使用。
USB/IP 是一种基于网络的设备共享机制,可将电脑A(Server端)连接的USB设备通过网络共享给远程电脑B(Client端)。
试验环境:
- Server端:软件:linux-kernel-tools-usbip;运行环境:T113-i-MiniEVM | Tronlong;编译环境:x86_64 Linux Ubuntu。
- Client端:软件:vadimgrn/usbip-win2: USB/IP Client for Windows;运行环境:Win11。
Server 端
修改 Kernel 支持
1 | $ ./build.sh menuconfig |
重新编译 Kernel 并烧写。
如果使用 M 选项编译,则需在使用时手动加载:modprobe -a usbip-core usbip-host vhci_hcd。
从源码编译 usbip tool
如果是 Ubuntu 系统或者树莓派,可以从 apt 直接获取。但我手上的是 busybox 系统,需要从 kernel 中编译。
1 | $ cd kernel/linux-5.4/tools/usb/usbip |
- 将 lib、sbin 文件夹下的文件放到开发板对应目录。
配置 usb.ids
usb.ids 是 USB 设备数据库,用于在执行 usbip 命令时显示设备相关信息。
1 | $ mkdir -p /usr/share/hwdata |
使用命令
列出当前系统识别的所有 USB 设备:
lsusb。列出当前系统所有可导出 USB 设备:
usbip list -l,得到 busid。示例:1
2
3
4
5
6$ usbip list -l
- busid 1-1.1 (0bda:c811)
Realtek Semiconductor Corp. : unknown product (0bda:c811)
- busid 1-1.2 (1a86:7523)
QinHeng Electronics : CH340 serial converter (1a86:7523)绑定 USB/IP:
usbip bind -b <busid>,被绑定的设备即可被 usbip 客户端导入。解绑 USB/IP:
usbip unbind -b <busid>。启动 usbipd 守护进程:
usbipd -D。
自启动脚本
1 | $ vim /etc/init.d/S45usbipd |
S45usbipd:
1 | usbipd -D |
- 启动 usbipd 为守护进程。
- 将除了 WiFi 发射器(0bda)的其它所有 usb 设备绑定。
Clint 端
软件:vadimgrn/usbip-win2: USB/IP Client for Windows

- 在 Server 栏填写 IP 和 Port(默认 3240),点击
Add devices就会显示可用的设备。 - 右键单击具体的设备,点击
Attach,就可以在 设备管理器 中查看到对应的设备被加载了。