CDN加速

文档中心 云服务器 操作指南 Linux系统使用 USB/IP 远程共享 USB 设备

Linux系统使用 USB/IP 远程共享 USB 设备

更新时间:2021-03-12 15:27:11

操作场景

USB/IP 是一个开源项目,已合入 Kernel,在 Linux 环境下可以通过使用 USB/IP 远程共享 USB 设备。只要Client和Server都是Linux系统,内核支持USB/IP功能,即可通过以下操作远程共享USB设备。

本文档以如下环境版本为例,为您演示如何在 Linux 环境下可以通过使用 USB/IP 远程共享 USB 设备:

USB Client(云服务器):CentOS 7.5 操作系统
USB Server(本地计算机):CentOS7.5 操作系统

注意事项

不同发行版的 Linux 操作系统安装 USB/IP 的方式,以及内核模块名称略有不同。您可前往对应 Linux 系统官方发行版页面,查看当前使用的 Linux 系统是否支持 USB/IP 功能。

操作步骤

配置 USB Server(本地主机)

1.在本地CentOS计算机上,依次执行以下命令,下载 USB/IP源。

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -ivh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

2.依次执行以下命令,安装 USB/IP。

# yum -y install kmod-usbip usbip-utils
# modprobe usbip-core
# modprobe vhci-hcd
# modprobe usbip-host

3.插入 USB 设备,并执行以下命令,查询可用的 USB 设备。

# usbip list --local

例如,在本地计算机上插入一个 U盘,返回如下结果:
busid 1-2(0781:5571)

4.记录 busid 的值,并依次执行以下命令,启动监听服务,指定 USB/IP 端口号,共享 USB 设备。

# sudo usbipd -D [--tcp-port PORT]
# sudo usbip bind -b [busid]

例如,USB/IP 指定端口号为3240端口(即 USB/IP 的默认端口),busid 为 1-2,则执行以下命令:

# sudo usbipd -D
# sudo usbip bind -b 1-2

  1. (可选)执行以下命令,创建 SSH 隧道,并使用端口监听。
    说明:没有公网 IP 的本地计算机,请执行此步骤。如您的本地计算机有公网 IP,请跳过此步骤。
# ssh -Nf -R USB/IP指定端口号:localhost:USB/IP指定端口号 root@your_host

your_host 表示云服务器的 IP 地址。
例如,USB/IP 的端口号为3240端口,云服务器的 IP 地址为220.xxx.xxx.xxx,则执行以下命令:

# ssh -Nf -R 3240:localhost:3240 root@220.xxx.xxx.xxx

配置 USB Client(云服务器)

说明:以下操作步骤以本地计算机没有公网 IP 为例,如您的本地计算机有公网 IP,请将步骤中的127.0.0.1修改为本地计算机的公网 IP 地址。

1.登录Linux云服务器(操作示例使用的OS为centOS7.5)

  1. 依次执行以下命令,下载 USB/IP 源。
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -ivh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

3.依次执行以下命令,安装 USB/IP。

# yum -y install kmod-usbip usbip-utils
# modprobe usbip-core
# modprobe vhci-hcd
# modprobe usbip-host

4.执行以下命令,查询云服务器可用的 USB 设备。

# usbip list --remote 127.0.0.1

例如,找到闪迪U盘的信息,返回如下结果:

Exportable USB devices
======================
-127.0.0.1 1-2: SanDisk Corp, Cruzer Fit: unknown product (0781:5571): /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-2:(Defined at Interface level)(00/00/00)

5.执行以下命令,将 USB 设备绑定至服务器中。

# usbip attach --remote=127.0.0.1 --busid=1-2

6.依次执行以下命令,查看当前 USB 设备列表。

# yum install lsusb
# yum install usbutils
# lsusb

返回类似如下信息,即表示共享成功。

Bus 002 Device 004:ID0781:5571 SanDisk Corp, Cruzer Fit
Bus 002 Device 001:ID1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001:ID1d6b:0001 Linux Foundation 1.1 root hub