USBIP на CentOS 7 (USB через сеть)

Серверная

Репозиторий:

# 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

Установка:

# yum install kmod-usbip
# yum install usbip-utils

Загрузить модули:

# modprobe usbip-core
# modprobe usbip-host
# modprobe vhci-hcd

Проверить загруженные модули:

# lsmod | grep usbip

Запустить сервер:

# usbipd -D

Открыть порт в фаерволе:

# firewall-cmd --zone=public --add-port=3240/tcp --permanent
# firewall-cmd --reload

Для просмотра USB устройств нужно выполнить команду:

# usbip list -l
 - busid 1-1.1.1 (0a89:0025)
   Aktiv : Rutoken lite (0a89:0025)

 - busid 1-1.1.2 (0a89:0025)
   Aktiv : Rutoken lite (0a89:0025)

 - busid 1-1.1.3 (0a89:0025)
   Aktiv : Rutoken lite (0a89:0025)

 - busid 1-1.1.4 (0a89:0025)
   Aktiv : Rutoken lite (0a89:0025)

Необходимые устройства расшарить командой:

# usbip bind -b 1-1.1.1

Подключиться к устройству на сервере и отключиться (это делается из-за бага. иначе клиент видит расшариное устройство, но не может подключиться, ошибка: «usbip err: usbip_windows.c: 829 (attach_device) cannot find device«):

# usbip attach -r 192.168.2.24 -b 1-1.1.1
# usbip detach -p 0

 

Клиент Windows 10

Скачать клиент для Windows

В архиве присутствует исправленный usbip.exe и оригинальный (usbip.orig.exe).

Посмотреть список доступных устройств:

C:\usbip> usbip -l %server-ip%

Пример результата:

C:\usbip>usbip.exe -l 192.168.2.24
- 192.168.2.24
   1-1.2: SanDisk Corp. : unknown product (0781:5597)
        : /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2
        : (Defined at Interface level) (00/00/00)

 1-1.1.4: unknown vendor : unknown product (0a89:0025)
        : /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.4
        : (Defined at Interface level) (00/00/00)

 1-1.1.3: unknown vendor : unknown product (0a89:0025)
        : /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.3
        : (Defined at Interface level) (00/00/00)

 1-1.1.2: unknown vendor : unknown product (0a89:0025)
        : /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.2
        : (Defined at Interface level) (00/00/00)

 1-1.1.1: unknown vendor : unknown product (0a89:0025)
        : /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1.1
        : (Defined at Interface level) (00/00/00)

Подключить устройство:

C:\usbip>usbip.exe -a 192.168.2.24 1-1.2

При успешном подключении:

C:\usbip> usbip -a %server-ip% 1-1.2
new usb device attached to usbvbus port 1

 

Ошибки

Ошибка 1:

C:\usbip> usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Найти в фале usbip.exe 0х00000106, заменbnm на 0х00000111

[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11

 

Ошибка 2:

C:\usbip>usbip.exe -a 192.168.2.24 1-1.1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

На серверу нужно подключить устройство и отключить:

# usbip attach -r 192.168.2.24 -b 1-1.1
# usbip detach -p 0