The OpenNET Project / Index page

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



"Раздел полезных советов: Подключение удалённых USB устройств..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Подключение удалённых USB устройств..."  +/
Сообщение от auto_tips (ok), 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.me/tips/info/2189.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от pavlinux (ok), 06-Окт-09, 16:16   +/
Чёй-то я про Австралию вспомнил :-/
Ответить | Правка | Наверх | Cообщить модератору

2. Сообщение от upyx (ok), 07-Окт-09, 04:58   +/
А USB-hub со всеми подключенными к нему устройствами одним махом пробросить можно? :)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11

3. Сообщение от defiso (?), 07-Окт-09, 11:15   +/
А авторизация какая-нибудь предусмотрена?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5

5. Сообщение от фноним (?), 07-Окт-09, 15:09   +/
>А авторизация какая-нибудь предусмотрена?

с помощью stunnel прикрутить или inetd

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

6. Сообщение от demimurychemail (?), 07-Окт-09, 23:11   +/
>> Есть много причин использования физически удаленных USB устройств,

именно устройств, а не их ресурсов или данных передаваемых с них.

и не одной не названо

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10

7. Сообщение от DarkSide83 (?), 08-Окт-09, 07:01   +/
А к нескольким машинам одновременно флешку прикрутить можно будет?
Ответить | Правка | Наверх | Cообщить модератору

9. Сообщение от vo0demail (?), 08-Окт-09, 21:43   +/
осталось найти usb-камеру и ппц коту! :)
Ответить | Правка | Наверх | Cообщить модератору

10. Сообщение от pavlinux (ok), 09-Окт-09, 05:56   +1 +/
Виртуальные машины.
Удалённые столы: - Видео в режим потока, а клаву и мышь отдельно.
- Петрович, у мня тонер конился, какой у тя АйПишнег??? Пушай демона, дай начепятую!!!
- Алё, Жуна, вставь флешку в комп, закачну фильмец....!!!
- Кисуля, сунь попу в сканер дай полюбуюсь :)


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

11. Сообщение от pavlinux (ok), 09-Окт-09, 05:57   +/
Хаба небыло никогда, не прикалывался...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

12. Сообщение от dyugemail (?), 10-Окт-09, 23:17   +/
посмотрел, в убунте 9.10 (текущее состояние) уже все есть.
можно ставить, и пользоваться. :-)
Пробовал года 2 или 3 назад один из самых первых реализаций - работало.
Ответить | Правка | Наверх | Cообщить модератору

13. Сообщение от Er4SSy (ok), 11-Окт-09, 18:40   +/
осталось удаленно воткнуть эту самую флешку, которая в Австралии, в usb-разъем
Ответить | Правка | Наверх | Cообщить модератору

14. Сообщение от lll (??), 11-Окт-09, 19:39   +/
А hasp можно ???
Ответить | Правка | Наверх | Cообщить модератору

15. Сообщение от iZEN (ok), 11-Окт-09, 20:12   +/
На FreeBSD всё гораздо проще -- есть GEOM Gate.

На сервере:
# echo 'geom_gate_load="YES"' >> /boot/loader.conf
# echo '192.168.1.0/24    RW   /dev/da0s1' >> /etc/gg.exports
# kldload geom_gate && ggated

На клиенте (из сети 192.168.1.0/24):
% ggatec create -o rw server_ip /dev/da0s1
ggate0 # ответ команды на создание нового устройства
% mount_msdosfs /dev/ggate0 /mnt/

Идентификация подключенных устройств на клиенте:
% ggatec list -v
       NAME: ggate0
       info: 192.168.1.10:3080 /dev/da0s1
     access: read-write
    timeout: 0
queue_count: 0
queue_size: 1024
references: 2
  mediasize: 4110400512 (3.8G)
sectorsize: 512
       mode: r0w0e0

Восстановление geom_gate на клиенте после сбоев сервера:
% ggatec rescue -o rw -u 0 server_ip /dev/da0s1
# 0 - номер "пропавшего" устройства ggate

Остановка работы с устройством на клиенте:
% umount /mnt
% ggatec destroy -u 0
# 0 - номер устройства ggate

Остановка работы с устройством на сервере:
# pkill ggated

Можно экспортировать RAW-разделы.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #16

16. Сообщение от Andrey Mitrofanov (?), 12-Окт-09, 13:00   +/
> На FreeBSD всё гораздо проще
>Можно экспортировать RAW-разделы.

Принтеры и камеры вы "там" у себя тож "просто" форматируете?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

17. Сообщение от amaora (?), 12-Окт-09, 21:27   +/
Не красиво как то, через NFS или FUSE/CUSE разве нельзя usbfs примонтировать где угодно? ... Хотя Storage устройства таким образом работать не будут, да, и все остальное для чего драйверы в ядре.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #18

18. Сообщение от gordevemail (ok), 13-Окт-09, 10:20   +/
а веб камеру или другое какое нибудь устройство?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

19. Сообщение от Hawk (??), 15-Окт-09, 17:44   +/
интересует подключение например МФУ. Дома xerox pe220, подключен к асус wl500g. Печать с других машин - без проблем, а вот если бы сканер зацепить - цены бы небыло
Ответить | Правка | Наверх | Cообщить модератору

20. Сообщение от Foeknemail (?), 21-Ноя-09, 00:32   +/
У меня на двух машинах без libsysfs-dev не конфигурировалось
Ответить | Правка | Наверх | Cообщить модератору

21. Сообщение от Вовец (?), 25-Окт-10, 23:05   +/
Интересует бодобная реализация для win клиентов. Надобно hasp расшарить.
Ответить | Правка | Наверх | Cообщить модератору

22. Сообщение от riv1329email (?), 09-Май-11, 01:31   +/
В общем, действительно много ошибок.

Во первых даже при экспорте через lo и импорте на ту-же машину, минут через 10 всё зависает намертво.

Если пробрасывать через локалку или инет - то все зависает гораздо быстрее. Причем и клиент и сервер.

Хотя да, запускается, работает. Пробовал сервер - Ubuntu 10.10, клиенты ubuntu 10.10, Windows XP.

Пока для хаспа не вариант - слишком не надёжно :-(

Ответить | Правка | Наверх | Cообщить модератору

23. Сообщение от Gosa (?), 21-Июн-12, 03:48   +/
HASP вариант для виртуалки можно попробовать
Ответить | Правка | Наверх | Cообщить модератору

24. Сообщение от shweewemail (?), 28-Июн-12, 17:30   +/
У мну вроде собралось, но не работает:

ts_001e0b397db7:~# usbip_bind_driver --list
List USB devices
- busid 4-5 (13fe:3223) 4-5:1.0 -> usb-storage
- busid 4-6 (04a9:1905) 4-6:1.0 -> none
ts_001e0b397db7:~# usbip_bind_driver --usbip 4-5
** (process:1592): DEBUG: 4-5:1.0 -> usb-storage
** (process:1592): DEBUG: unbinding interface ** (process:1592):
WARNING **: add 4-5 to match_busid, failed

Никто не сталкивался с таким ашибком?

Ответить | Правка | Наверх | Cообщить модератору

25. Сообщение от ZugDuk (?), 20-Сен-20, 20:29   +/
Убогая программа - меняйте руководителя проекта.
Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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