USBIP

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

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

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

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


На сервере USB/IP можно выводить перечень устройств, устанавливать и убирать их привязки. На клиенте USB/IP можно выводить перечень устройств, экспортированных серверами USB/IP, присоединять и отсоединять их.

Примечание: К серверу подключаются USB-устройства, которые экспортируются на хост-клиент. Хост-клиент виртуально импортирует USB-устройства.


Установка

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

Установить пакеты 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!

Графическая утилита

Для проброса устройств, а также для присоединения/отсоединения USB-устройств с сервера можно воспользоваться графическим интерфейсом (пакет usbip-gui).

Установка:

# apt-get install usbip-gui
Примечание: Должны быть также установлены соответствующие пакеты для сервера и клиента.


Примечание: Для того чтобы использовать все возможности утилиты, её необходимо запускать с правами суперпользователя:
# usbip-gui


После запуска программы будут отображены текущие подключенные устройства:

Usbip-gui. Подключенные USB-устройства

В поле «Remote USB Devices» отображается список устройств, доступных на удаленном сервере, в поле «Local USB Devices» — список локально-подключенных устройств, а в поле «Attached Devices» — список устройств, подключенных с удаленного сервера.

Кнопки «Refresh», расположенные над каждым полем, позволяют обновить соответствующий список USB-устройств.

Для подключения/отключения USB-устройства с удаленного сервера необходимо:

  1. Ввести IP-сервера в поле «Remote USB Devices for» и нажать кнопку «Refresh».
  2. Если на удаленном сервере есть доступные устройства, они появятся в списке «Remote USB Devices».
  3. Выбрать нужное устройство и нажать кнопку «Attach Device»:
    Usbip-gui. Подключение к доступному USB-устройству
  4. Устройство появится в списке «Attached Devices»:
    Usbip-gui. Список подключенных устройств
    Для отключения устройства, достаточно выбрать его в списке «Attached Devices» и нажать кнопку «Detach Device».

Для того чтобы открыть доступ к локальному USB-устройству, необходимо:

  1. В поле «Local USB Devices» выбрать нужное устройство:
    Usbip-gui. Локальное USB-устройство
  2. Нажать кнопку «Bind Device».
Примечание: Чтобы закрыть доступ к к локальному USB-устройству, следует выделить устройство и нажать кнопку «Unbind Device».