USBIP
USB/IP выполняет задачу подключения USB-устройства к удаленному компьютеру через локальную сеть (проброс USB-устройств по локальной сети).
В качестве пробрасываемых устройств могут быть:
- USB-накопители (fdisk, mkfs, mount/umount, операции с файлами);
- USB-клавиатуры и USB-мыши;
- USB веб-камеры и динамики;
- USB-принтеры, USB-сканеры, USB-конвертеры последовательных интерфейсов и адаптеры USB-Ethernet.
На сервере USB/IP можно выводить перечень устройств, устанавливать и убирать их привязки. На клиенте USB/IP можно выводить перечень устройств, экспортированных серверами USB/IP, присоединять и отсоединять их.
Установка
Настройка сервера
Установить пакеты usbip, usbip-server:
# apt-get install usbip usbip-server
Подгрузить модули драйверов 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
После запуска программы будут отображены текущие подключенные устройства:
В поле «Remote USB Devices» отображается список устройств, доступных на удаленном сервере, в поле «Local USB Devices» — список локально-подключенных устройств, а в поле «Attached Devices» — список устройств, подключенных с удаленного сервера.
Кнопки «Refresh», расположенные над каждым полем, позволяют обновить соответствующий список USB-устройств.
Для подключения/отключения USB-устройства с удаленного сервера необходимо:
- Ввести IP-сервера в поле «Remote USB Devices for» и нажать кнопку «Refresh».
- Если на удаленном сервере есть доступные устройства, они появятся в списке «Remote USB Devices».
- Выбрать нужное устройство и нажать кнопку «Attach Device»:
- Устройство появится в списке «Attached Devices»:
Для того чтобы открыть доступ к локальному USB-устройству, необходимо: