The OpenNET Project
 
Поиск (ключи):  ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
ССЫЛКИ НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

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

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

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

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


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

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

11. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от pavlinux (ok) on 09-Окт-09, 05:57 
Хаба небыло никогда, не прикалывался...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от defiso on 07-Окт-09, 11:15 
А авторизация какая-нибудь предусмотрена?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от фноним on 07-Окт-09, 15:09 
>А авторизация какая-нибудь предусмотрена?

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

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

6. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от demimurych email on 07-Окт-09, 23:11 
>> Есть много причин использования физически удаленных USB устройств,

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

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

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

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


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

7. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от DarkSide83 on 08-Окт-09, 07:01 
А к нескольким машинам одновременно флешку прикрутить можно будет?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от vo0d email on 08-Окт-09, 21:43 
осталось найти usb-камеру и ппц коту! :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

14. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от lll (??) on 11-Окт-09, 19:39 
А hasp можно ???
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от iZEN (ok) on 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. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от Andrey Mitrofanov on 12-Окт-09, 13:00 
> На FreeBSD всё гораздо проще
>Можно экспортировать RAW-разделы.

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

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

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

18. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от gordev email(ok) on 13-Окт-09, 10:20 
а веб камеру или другое какое нибудь устройство?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

20. "Подключение удалённых USB устройств в Linux"  +/
Сообщение от Foekn email on 21-Ноя-09, 00:32 
У меня на двух машинах без libsysfs-dev не конфигурировалось
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема


Подпишись на Linux Format и получи один из 3 ценных призов!

Началась подписка на журнал Linux Format на 2010 год. Спешите оформить подписку на единственный в России ежемесячный журнал о Linux!

Все, оформившие подписку на печатную версию журнала, получают диск с архивом журнала Linux Format за 2005-2009г. в подарок. Также в подарок вы получаете именную электронную версию в формате PDF. Теперь вы можете приступить к чтению журнала сразу в момент выхода свежего номера, не дожидаясь, пока вам доставят бумажную версию.

Кроме того, все, оформившие подписку на первую половину или весь 2010 год в интернет-магазине ГНУ/Линуксцентра, автоматически становятся участниками розыгрыша ценных призов:


  Закладки на сайте
  Проследить за страницей
Created 1996-2010 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
RUNNet TopList