Гид по технологиям

Установка и использование USB/IP на клиенте

• 4 min read • Системное администрирование • Обновлено 20 Nov 2025
USB/IP на клиенте: установка и использование
USB/IP на клиенте: установка и использование

Кратко

Краткое руководство по загрузке модуля vhci-hcd, установке клиента usbip, подключению и отключению удалённых USB-устройств. Включены команды, примеры вывода, чек-листы и советы по устранению неполадок.

Важно: все команды выполняются с правами root на соответствующих хостах (client1 — клиент, server1 — сервер).

Содержание

  • Загрузка модуля vhci-hcd
  • Установка usbip на клиенте
  • Подключение удалённого USB-устройства
  • Отключение удалённого USB-устройства
  • Совет по устранению неполадок
  • Чек-листы и критерии приёмки
  • Ссылки

Загрузка модуля vhci-hcd

На клиенте (client1) сначала загружаем модуль ядра vhci-hcd:

modprobe vhci-hcd

Проверим, загрузился ли модуль:

lsmod | grep vhci_hcd

Ожидаемый вывод похож на этот:

[root@client1 administrator]# lsmod | grep vhci_hcd  
vhci_hcd               22840  0  
usbip_common_mod       22168  1 vhci_hcd  
usbcore               219188  2 vhci_hcd  
[root@client1 administrator]#

Чтобы модуль автоматически загружался при загрузке системы, добавьте его в /etc/modprobe.preload:

vi /etc/modprobe.preload
[...]
vhci-hcd

Установка usbip на клиенте

Шаги установки клиента usbip совпадают со сторонами сервера. На Mandriva/ПК-совместимых дистрибутивах это может выглядеть так:

urpmi wget flex gcc gcc-c++ libsysfs-devel libglib2.0-devel
cd /tmp  
wget http://downloads.sourceforge.net/project/usbip/usbip/0.1.7/usbip-0.1.7.tar.gz?use_mirror=kent  
tar xvfz usbip-0.1.7.tar.gz  
cd usbip-0.1.7/src/  
./autogen.sh  
./configure  
make  
make install

Примечание по файлу usb.ids: usbip ожидает файл со списком известных устройств в /usr/share/hwdata, но в Mandriva 2010.0 он расположен в /usr/share/usb.ids. Создаём символическую ссылку:

mkdir /usr/share/hwdata  
ln -sf /usr/share/usb.ids /usr/share/hwdata/

Подключение удалённого USB-устройства

На клиенте запрашиваем список доступных устройств у сервера (192.168.0.100 — IP сервера usbip):

usbip -l 192.168.0.100

В выводе должна быть флешка SanDisk (BUSID 1-5):

[root@client1 src]# usbip -l 192.168.0.100  
- 192.168.0.100  
     1-5: SanDisk Corp. : Cruzer Micro Flash Drive (0781:5151)  
        : /sys/devices/pci0000:00/0000:00:02.1/usb1/1-5  
        : (Defined at Interface level) (00/00/00)  
        :  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)  
  
[root@client1 src]#

Подключаем устройство к клиенту, используя BUSID 1-5:

usbip -a 192.168.0.100 1-5

Пример вывода команды:

[root@client1 src]# usbip -a 192.168.0.100 1-5  
8 ports available
port 0 attached  
[root@client1 src]#

Проверяем список USB-устройств локально:

lsusb

Ожидается запись удалённого устройства:

[root@client1 src]# lsusb  
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub  
Bus 001 Device 023: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive  
[root@client1 src]#

Теперь с устройством можно работать как с локальным: монтировать, форматировать, читать/писать.

Отключение удалённого USB-устройства

На клиенте сначала определяем, какой порт использует устройство:

usbip --port

Пример длинного вывода (в нём видно, что устройство использует порт 00):

[root@client1 src]# usbip --port  
8 ports available  
  
Port 00:  at High Speed(480Mbps)  
       SanDisk Corp. : Cruzer Micro Flash Drive (0781:5151)  
       1-1 -> usbip://192.168.0.100:3240/1-5  (remote devid 00010003 (bus/dev 001/003))  
       1-1:1.0 used by usb-storage  
           /sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host5/target5:0:0/5:0:0:0/block/sdb/device  
           /sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host5/target5:0:0:0/bsg/5:0:0:0/device  
           /sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host5/target5:0:0:0/scsi_device/5:0:0:0/device  
           /sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host5/target5:0:0:0/scsi_disk/5:0:0:0/device  
           /sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host5/target5:0:0:0/scsi_generic/sg2/device  
           /sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host5/scsi_host/host5/device  
           /sys/devices/platform/vhci_hcd/usb1/1-1/1-1:1.0/host5/target5:0:0/5:0:0:0/block/sdb/device  
Port 01:   
Port 02:   
Port 03:   
Port 04:   
Port 05:   
Port 06:   
Port 07:   
[root@client1 src]#

Отсоединяем устройство по номеру порта (в примере — 00):

usbip -d 00

Ожидаемый вывод:

[root@client1 src]# usbip -d 00  
8 ports available
port 0 detached  
[root@client1 src]#

На сервере можно вернуть устройство в локальную систему, используя BUSID 1-5. Ключ –other привязывает устройство к локальному драйверу, делая его недоступным по сети:

На сервере (server1):

bind_driver --other 1-5

Пример вывода:

[root@server1 administrator]# bind_driver --other 1-5  
 (process:3484): DEBUG: write "del 1-5" to /sys/bus/usb/drivers/usbip/match_busid  
 Message: bind 1-5 to other drivers than usbip, complete!  
[root@server1 administrator]#

Вернёмся на клиент и проверим lsusb — удалённого устройства в списке быть не должно:

[root@client1 src]# lsusb  
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub  
[root@client1 src]#

Критерии приёмки

  • Модуль vhci-hcd загружен и виден в lsmod.
  • Команда usbip -l показывает нужный BUSID на сервере.
  • После usbip -a в lsusb клиента появляется запись удалённого устройства.
  • После usbip -d и bind_driver –other устройство исчезает с клиента и доступно локально на сервере.

Чек-лист для администратора клиента

  • Загрузить vhci-hcd: modprobe vhci-hcd
  • Установить пакет usbip (или собрать из исходников)
  • Создать /usr/share/hwdata -> /usr/share/usb.ids, если требуется
  • Подключить usbip -a
  • Проверить lsusb и /proc/ или /sys для целостности устройства

Чек-лист для администратора сервера

  • Убедиться, что usbip daemon запущен и устройство экспортировано
  • Проверить BUSID через usbip list
  • При необходимости вернуть устройство локально: bind_driver –other

Советы по устранению неполадок

  • Если usbip -l не показывает устройства: проверьте запущен ли usbip daemon на сервере и доступен ли порт 3240 по сети.
  • Если порт не прикрепляется (attach не удаётся): проверьте, не занято ли устройство локально на сервере и не мешают ли права доступа.
  • Если lsusb не показывает устройство после attach: проверьте вывод dmesg и содержимое /sys/devices/platform/vhci_hcd/.
  • При проблемах со сборкой — убедитесь, что установлены dev-пакеты (libsysfs-devel, libglib2.0-devel) и используйте совместимую версию ядра.

Короткий глоссарий

  • BUSID — идентификатор USB-шины и порта на сервере (например, 1-5).
  • vhci-hcd — виртуальный хост-контроллер USB для клиента.
  • bind_driver –other — команда для привязки устройства к локальному драйверу на сервере.

Команды — шпаргалка

  • Загрузить модуль: modprobe vhci-hcd
  • Список модулей: lsmod | grep vhci_hcd
  • Список устройств на сервере: usbip -l
  • Подключить устройство на клиенте: usbip -a
  • Показать используемые порты: usbip –port
  • Отключить устройство по порту: usbip -d
  • Привязать устройство к локальному драйверу на сервере: bind_driver –other

Дополнительно: когда это может не сработать

  • Если между клиентом и сервером есть NAT или фильтрация портов, tcp-порт 3240 должен быть доступен.
  • Аппаратные устройства с DRM или специализированными протоколами могут не работать корректно через USB/IP.

Ссылки

Подводя итоги, последовательное выполнение шагов загрузки модуля, установки клиента, прикрепления BUSID и верификации через lsusb даёт рабочий сценарий удалённого использования USB-устройств через сеть.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро