Иногда возникает необходимость проброса физических USB устройств в виртуальную машину. Для того чтобы это сделать проще всего воспользоваться сетью так как поддержка сети есть в каждом гипервизоре. Некоторые гипервизоры предоставляют инструментарий для проброса локальных USB-устройств а, что делать если USB-устройство подключены к другому компьютеру? Может помочь только проброс USB-устройств по сети.
Существует два варианта решения:
- Использование аппаратного USB сервера
- Использование программного USB сервера
Использование аппаратного USB сервера позволяет повысить надежность, в ущерб стоимости устройства. Использование программного USB сервера позволяет сократить затраты на приобритение устройства в ущерб надежности (Сбой в работе программного обеспечения может привести к сбою в работе программного USB-сервера)
Внимание: Самое главное при использовании любого USB сервера – это совместимость операционной системы с USB-сервером.
Проброс устройств через программный USB-сервер USB/IP
Адрес проекта: http://usbip.sourceforge.net/
Настройка сервера
Для того чтобы пробросить устройство через USB/IP нужно иметь компьютер под управлением ОС Linux и возможность выполнять команды от имени root. Рассмотрим создание сервера на примере Ubuntu.
Устанавливаем пакет
# apt-get install usbip
Подключаем модули ядра
# modprobe usbip
# modprobe usbip_common_mod
Запускаем сервер
# usbipd -D
Получаем список имен USB устройств и запоминаем их usbid
# lsusb
Получаем состояние устройств и запоминаем busid
# usbip_bind_driver --list
Подключаем доступ к устройству через busid
# usbip_bind_driver --usbip 1-6
Отключаем доступ к устройству через busid
# usbip_bind_driver --other 1-6
Настройка Linux-клиента
Для получения доступа к USB устройству через USBIP потребуется получение root-доступа.
Устанавливаем пакет
# apt-get install usbip
Подключаем модуль ядра
# modprobe vhci-hcd
Получаем список устройств на сервере
# usbip -l 192.168.1.1
Подключаем устройство и запоминаем номер виртуального порта
# usbip -a 192.168.1.1 1-6
Отключение осуществляем по номеру виртуального порта
# usbip -d 1
Настройка Windows-клиента
Загружаем дистрибутив клиента под Windows c сайта проекта. Устанавливаем драйвер клиента как новое системное устройство.
Получаем список устройств
usbip.exe -l 192.168.1.1
Подключаем устройство
usbip.exe -a 192.168.1.1 1-6