USBIP

Материал из ALT Linux Wiki

USBIP выполняет задачу подключения USB-устройства к удаленному компьютеру через локальную сеть (проброс USB-устройств по локальной сети).

В качестве пробрасываемых устройств могут быть:

  • USB-накопители (fdisk, mkfs, mount/umount, операции с файлами);
  • USB-клавиатуры и USB-мыши;
  • USB веб-камеры и динамики;
  • USB-принтеры, USB-сканеры, USB-конвертеры последовательных интерфейсов и адаптеры USB-Ethernet.

Установка

Настройка сервера

Установить пакеты usbip, usbipd:

# apt-get install usbip usbipd

Подгрузить модули драйверов USB:

# modprobe usbip-core
# modprobe usbip-host

Запустить сервис usbipd и добавить его в автозапуск:

# systemctl enable --now usbipd

Настройка клиента

Установить пакеты usbip, usbip-client:

# apt-get install usbip usbip-client

Подгрузить модули драйверов USB:

# modprobe usbip-core
# modprobe vhci-hcd

Управление устройствами

Сервер

Вывести информацию о подключенных локальных устройствах:

# usbip list -l
 - busid 1-1.1 (0402:9665)
   ALi Corp. : Gateway Webcam (0402:9665)

 - busid 1-1.4 (13fe:4300)
   Kingston Technology Company Inc. : unknown product (13fe:4300)

 - busid 2-1.2 (090c:1000)
   Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000)

Сделать устройство с ID 2-1.2 доступным:

# usbip bind --busid 2-1.2
usbip: info: bind device on busid 2-1.2: complete

Теперь к устройству можно получить доступ с клиента.

Закрыть доступ к устройству:

# usbip unbind --busid 2-1.2
usbip: info: unbind device on busid 2-1.2: complete

Клиент

Получить список доступных устройств на указанном IP-адресе можно, выполнив команду:

# usbip list --remote <IP>

Например:

# usbip list --remote 192.168.0.118
Exportable USB devices
======================
 - 192.168.0.118
      2-1.2: Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000)
           : /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
           : (Defined at Interface level) (00/00/00)

Команда подключения к доступному USB-устройству:

# usbip attach --remote <IP> --busid <ID>

Например:

# usbip attach --remote 192.168.0.118 --busid 2-1.2


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

# usbip port
Imported USB devices
====================
Port 00: <Port in Use> at High Speed(480Mbps)
       Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000)
       3-1 -> usbip://192.168.0.118:3240/2-1.2
           -> remote bus/dev 002/003

Команда отключения устройства:

# usbip detach --port <Port_number>

Например:

# usbip detach --port 00
usbip: info: Port 0 is now detached!