通过网络透传 USB
前两天大有事情去忙,闲下来以后被朋友劝去尝试了一下 STM32 开发,搭建环境过程中学会了 usbip 工具的使用。虽然 STM32 的学习因为手上这片 stm32f103c8t6 排针没有焊接且手里没有 LED 灯泡模块而搁置就是了。
在此简单介绍 USB/IP 的使用。细节请参阅:
USB/IP 是将 USB 设备通过网络进行共享的软件工具。USB/IP将「USB I/O消息」封装到 TCP/IP 中,并在计算机之间传输,以实现远程共享或访问USB设备。
在 Fedora 43 上,该工具可以通过下述指令安装:
$ sudo dnf install usbip
在 USB/IP 中,服务端是将 USB 设备分享出去的端系统,客户端是使用服务端分享出来的 USB 设备的端系统。
服务端所需要做的工作:
- 物理连接上目标USB设备
- 启用
usbip_host模块 - 启用
usbip-server服务
客户端所需要做的工作:
- 启用
vhci-hcd模块
过程:
- 服务端通过
usbip list -l翻阅本地usb设备,然后通过usbip bind --busid=...进行绑定 - 客户端通过
usbip list --remote=<server_ip>查看服务端上发布的usb设备,使用usbip attach --remote=<server_ip> -b ...进行连接 - 服务端和客户端分别可以通过
unbind和detach来取消连接。