The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Подключение удалённых USB устройств..."
Отправлено auto_tips, 06-Окт-09 16:16 
Есть много причин использования физически удаленных USB устройств,
именно устройств, а не их ресурсов или данных передаваемых с них.

То есть, после прочтения и настройки данного ПО, вы сможете подключать флешки, камеры, принтеры, и т.п., находящиеся скажем в Австралии или дома, находясь на работе.

О наличии или отсутствии модулей поддержки USB_IP в определенных дистрибутивах ничего сказать немогу, но вы сами можете прекрасно проверить командой:

   # modprobe -l | grep usbip

   /lib/modules/2.6.31.2/kernel/drivers/staging/usbip/vhci-hcd.ko
   /lib/modules/2.6.31.2/kernel/drivers/staging/usbip/usbip.ko

Если появилось, что-то вроде этого, то переходим ко второй части, нет, - поехали дальше.

++ 1. Установка поддержки USB/IP в ядре.

Для работы необходимо ядро версии не менее чем 2.6.20, после версии 2.6.28 этот проект перенесён в основную ветку ядра, но в раздел staging (по-русски - "почти работающие" :))

Итак, если версия 2.6.28 и больше, запускаем конфигурацию ядра:

   # make menuconfig

Идем в раздел:
   Device Drivers  --->
      Staging drivers  --->

И включаем опции: (лучше как модули)

   <M>     USB IP support (EXPERIMENTAL)
   <M>       USB IP client driver
   <M>       USB IP host driver

Сохраняем конфигурацию, компилируем и устанавливаем ядро.

   # make && make modules_install && make install;

++ 2. Установка утилит пользовательского режима.

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

   - sysfsutils        >= 2.0.0 sysfsutils library

А для компиляции:

   - libwrap0-dev      tcp wrapper library (можно и без неё)
   - gcc               >= 4.0
   - libglib2.0-dev    >= 2.6.0
   - libtool, automake >= 1.9, autoconf >= 2.5.0, pkg-config

Скачиваем архив с Sourceforge (я бы этого не делал) http://sourceforge.net/projects/usbip/files/
Либо последние версии, через SVN:

   # cd /usr/src/
   # svn co https://usbip.svn.sourceforge.net/svnroot/usbip usbip

Переходим в каталог с утилитами, за запускаем autogen.sh,
после чего должен появится configure

   # cd usbip/linux/truck/src/
   # ./autogen.sh

configure лучше указать где находится файл описания производителей USB устройств - usb.ids, если этого не сделать, то ничего страшного, он установит свой в /usr/local/share/usbip/usb.ids :)

   # ./configure --with-usbids-dir=/usr/share
   # make
   # make install

У вас должны появится три утилитки - usbip, usbipd, usbip_bind_driver и две библиотеки - libusbip.so.0.0.1 и libusbip.a

++ 3. Подключение и работа.

Как при любом взаимодействии, так и у нас необходимы как минимум два индивида. :)

В USB/IP они подразделяются на клиентскую и серверную части процесса работы.

SERVER - это компьютер с физическим, необходимым нам устройством.
CLIENT - так же, компьютер, возможно даже тот же, где работает сервер (сейчас всех запутаю).

++ 3.1 Серверная часть.

И так, что б получит доступ по сети, скажем  к флешке на компьютере с именем [SERVER], необходимо:

   [SERVER]

1. Физически подключить устройство.
2. Загрузить модули:

   # modprobe -v usbip_common_mod
   # modprobe -v usbip

3. Запустить сервер сетевых подключений

   # usbipd -D

Должен открыться TCP порт 3240, и находиться в состоянии LISTEN

   # netstat -ltn;

   Active Internet connections (only servers)
   Proto Recv-Q Send-Q Local Address           Foreign Address         State
   tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LISTEN

4. Вывести список устройств возможных для подключения

   # usbip_bind_driver --list

   List USB devices
    - busid 2-1 (051d:0002)
            2-1:1.0 -> usbhid

    - busid 1-8 (058f:6387)
            1-8:1.0 -> usb-storage

5. И наконец, сделать устройство доступным для клиентов.

   # usbip_bind_driver --usbip 1-8

   usbip_bind_driver --usbip 1-8
   ** (process:12829): DEBUG:  1-8:1.0     -> usb-storage
   ** (process:12829): DEBUG: unbinding interface
   ** (process:12829): DEBUG: write "add 1-8" to /sys/bus/usb/drivers/usbip/match_busid
   ** Message: bind 1-8 to usbip, complete!

++ 3.2 Клиентская часть.

   [CLIENT]

1. Устанавливаем модули

   # modprobe -v usbip_common_mod
   # modprobe -v vhci-hcd

Проверяем dmesg

   # dmesg

   vhci_hcd vhci_hcd: USB/IP Virtual Host Contoroller
   vhci_hcd vhci_hcd: new USB bus registered, assigned bus number 3
   usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
   usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
   usb usb3: Product: USB/IP Virtual Host Contoroller
   usb usb3: Manufacturer: Linux 2.6.31.2 vhci_hcd
   usb usb3: SerialNumber: vhci_hcd

Всё в порядке, идем дальше...

2. Выводим список устройств доступных на сервере

   # usbip --list 192.168.0.1

   - 192.168.0.1
     1-8: Alcor Micro Corp. : Transcend JetFlash Flash Drive (058f:6387)
        : /sys/devices/pci0000:00/0000:00:02.1/usb1/1-8
        : (Defined at Interface level) (00/00/00)
        :  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

Чудненько, мы видим удалённую флешку....

3. И подключаем её как будто бы локальную

   # usbip --attach 192.168.0.1 1-8

Проверяем состояние

   # usbip --port
   # lsusb
   # dmesg

Если у Вас работает какая либо система автоподключения, наверно флещка уже куда-то подмонтировалась.


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

4. Отключение устроиства на клиенте

   # usbip --detach 1-8


P.S. Драйвер находиться в стадии глубокого эксперимента, так что ошибок очень много. Так например временное пропадание соединения, для TCP/IP явление нормальное, а вот временное пропадание USB устройства, приводит к его уничтожению из списка устройств. А после прохождения таймаута в TCP, устройство вдруг возвращается... :)

В VHCI драйвере это конечно компенсируют, но так же есть пределы таймаутов. Так что, хорошо настроенная сеть, пускай даже и медленная, залог успеха. Про отключение режимов управлением питанием, понижение частоты, QoS, молчу - просто обязательно!


URL:
Обсуждается: http://www.opennet.ru/tips/info/2189.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру