Настройка USBIP

1. Установка и компиляция
Устанавливаем необходимые пакеты

aptitude install build-essential fakeroot dpkg-dev debhelper autoconf automake libtool libglib2.0-dev libsysfs-dev module-assistant

Скачиваем и компилируем USBIP

mkdir usbip
cd usbip
wget ftp://ftp.de.debian.org/debian/pool/main/u/usbip/usbip_0.1.7-3.dsc
wget ftp://ftp.de.debian.org/debian/pool/main/u/usbip/usbip_0.1.7.orig.tar.gz
wget ftp://ftp.de.debian.org/debian/pool/main/u/usbip/usbip_0.1.7-3.diff.gz
dpkg-source -x usbip_0.1.7-3.dsc
cd usbip-0.1.7
dpkg-buildpackage -rfakeroot -b

Поднимаемся в папку выше и устанавливаем пакет

cd ..
dpkg -i libusbip-dev_0.1.7-3_amd64.deb
dpkg -i libusbip0_0.1.7-3_amd64.deb
dpkg -i usbip-source_0.1.7-3_all.deb
dpkg -i usbip_0.1.7-3_amd64.deb

2. Запуск и настройка сервера
Загружаем необходимые модули

modprobe usbip
modprobe usbip_common_mod
lsmod | grep usbip

Запускаем демон

usbipd -D

Далее подключаем USB устройство к компьютеру.
Внимание! Необходимо сначала запустить демон, а лишь затем подключать устройства, иначе могут возникнуть ошибки на клиенте при подключении.
Для просмотра подключенных USB устройств выполняем команду

lsusb

получаем список подключенных USB устройств с их идентификаторами вида:
Bus XXX Device YYY: ID VendorID:DeviceID <название устройства>
что-то вроде:

Bus 002 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP v0.06
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Запоминаем сочетание VendorID:DeviceID
· Выполняем команду:

sudo usbip_bind_driver –list

USBIP проверяет список подключенного оборудования и выводит его с указанием их bus-ID вида:

- busid 2-1 (0529:0001)
 2-1:1.0 -> none
 - busid 2-2 (0e0f:0002)
 2-2:1.0 -> hub
 ……..

В данном случае bus-ID, указывающий на нужное нам USB устройство: “2-1″.
Теперь подключаем устройство к серверу. Набираем:

sudo usbip_bind_driver –usbip 2-1

получаем:

** (process:1483): DEBUG: 2-1:1.0 -> none
 ** (process:1483): DEBUG: write “add 2-1″ to /sys/bus/usb/drivers/usbip/match_busid
 ** Message: bind 2-1 to usbip, complete!

Устройство подключено к USBIP, доступ с локальной машины-сервера к нему теряется.
Также можно посмотреть, какие устройства подключены к USBIP в данный момент. Для этого набираем:

sudo usbip_bind_driver –list

Получаем:

- busid 2-1 (0529:0001)
 2-1:1.0 – > usbip
 - busid 2-2 (0e0f:0002)
 2-2:1.0 -> hub
 …….

Устройство с bus-ID 2-1 подключено к USBIP. Система может передавать данные об этом USB устройстве с вашей системы удаленным клиентам.
Настройка сервера закончена. В случае необходимости можно добавлять и убирать
экспортируемые устройства.

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

Скачиваем дистрибутив. http://usbip.sourceforge.net/
Устанавливаем USB/IPEnumenator. Он устанавливается как произвольное системное устройство с драйверами на диске:
Для Windows XP:

  1. Распаковываем файлы в локальную папку.
  2. В Панели Управления жмем «Установка Оборудования», в открывшемся Окне Приветствия Мастера жмем «Далее».
  3. Выбрать «Да, устройство уже подсоединено» -> «Далее».
  4. Выбрать «Добавление нового устройства»-> «Далее».
  5. Выбрать «Установка оборудования, выбранного из списка вручную» -> «Далее».
  6. Выбрать «Системное устройство» -> «Далее».
  7. Выбрать «Установить с диска», -> «Просмотр», выбрать папку с разархивированным драйвером -> «ОК».
  8. Выбрать ‘USB/IP Enumerator’, -> «Далее».
  9. «Мастер готов к установке нового оборудования» -> Выбрать «Далее» -> Готово».

Для Window 7 (и 2008r2):

  1. Для разрешения установки неподписанных драйверов: запускаем cmd от
  2. администратора и выполняем «bcdedit /settestsigningon».
  3. Распаковываем файлы в локальную папку..
  4. Открываем «Диспетчер Устройств».
  5. Правой кнопкой на «имя компьютера» -.«Установить старое устройство» (или выбрать в меню «Действие»).
  6. В открывшемся Окне Приветствия Мастера жмем «Далее».
  7. Выбрать «Установка оборудования, выбранного из списка вручную» -> «Далее».
  8. Выбрать «Системное устройство» -> «Далее».
  9. Выбрать «Установить с диска», -> «Просмотр», выбрать папку с разархивированным драйвером -> «ОК».
  10. Выбрать ‘USB/IP Enumerator’, -> «Далее».
  11. «Мастер готов к установке нового оборудования» -> Выбрать «Далее» -> «Готово».

Все указанные действия также описаны в идущем с пакетом USBIP файле «usage» на английском языке.
Подключаем USB устройства, обозначенные как экспортируемые на нужном нам сервере.
Запускаем cmd.
Смотрим, какие устройства готовы к подключению:

path-to-usbip:> usbip.exe -l <server-ip>

(server-ip – IP адрес сервера USB устройств из пункта 2)
Пример:

C:\usbip>usbip -l 192.168.1.13
 usbip dbg: usbip_network.c: 229 (tcp_connect ) trying 192.168.1.13 port 3240
 usbip dbg: usbip_network.c: 249 (tcp_connect ) connected to 192.168.1.13:3240
 - 192.168.1.13
 usbip dbg: usbip.c: 423 (query_exported_devices) exportable 2 devices
 2-1: unknown vendor : unknown product (0529:0001)
 : /sys/devices/pci0000:00/0000:00:11.0/0000:02:02.0/usb2/2-1
 : unknown class / unknown subclass / unknown protocol (ff/00/00)
 : 0 – unknown class / unknown subclass / unknown protocol (ff/00/00)
 ……….

В результате видим, что на сервере 192.168.1.13 готово к подключению устройство с bus-ID 2-1 – то, которые мы настроили в пункте 2. Устройств может быть и больше.
Далее – подключаем нужное устройство:

path-to-usbip:> usbip.exe -a <server-ip> USB-ID

USB-ID в нашем случае 2-1.
Получаем многабукв (листинг параметров) и в завершение:

new usb device attached to usbvbus port 2

USB устройство должно появиться в системе клиента. Окно терминала желательно не закрывать.

4. Ссылки

  1. http://pijoka.co.za/blog2.php/2011/03/21/usb-ip-and-proxmox-ve
  2. http://vmind.ru/2012/01/25/ispolzovanie-besplatnogo-paketa-usbip-dlya-probrosa-usb-vnutr-virtualnyx-mashin/
  3. http://stranichko.org.ua/blog/programming/autoconnect-usbip-devices-on-windows-server/