Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.



Создаем сервер USB Over IP на базе Linux

Рубрика: Ubuntu
Метки: |
Четверг, 2 сентября 2010 г.
Просмотров: 32808
Подписаться на комментарии по RSS

Довольно долго мне приходилось сталкиваться с ситуацией, при которой мне нужно было продолжать использовать физический сервер, хотя почти вся инфраструктура виртуализирована. Причиной этому было отсутствие подддержки USB устройств в самых разнообразных платформах виртуализации. В частности я использую Xen, а на сервере, который я хотел бы виртуализировать должен быть подключен USB ключ.

Конечно можно использовать аппратное оборудование, например USBoverIP, однако оно стоит значительных денег. И вот наконец решение найдено. Я обнаружил отличный бесплатный проект , доступный по этому линку - http://usbip.sourcefrge.net/

С помощью него можно преврать Linux систему в USB сервер, обслуживающий USB девайсы через IP для клиентов как под управление Linux, так и Windows.

 

Настройки сервера

1- Скачайте последний пакет по ссылке http://downloads.sourceforge.net/project/usbip/usbip/usbip-win-preview/usbip-win.zip?use_mirror=ignum

Я тестировал все под Ubuntu Karmic, поэтому мне необходимо было выполнить следующую команду:

usbip:~$ sudo aptitude install usbip

Затем необходимо загрузить следующие модули для возможности контролировать USB порты.

usbip:~$ sudo modprobe usbip
usbip:~$ sudo modprobe usbip_common_mod

 Теперь запустим usbip в качестве системного демона:

usbip:~$ usbipd -D
Bind usbip.ko to a usb device to be exportable!
usbip:~$ 

 Это означает что все идет по плану и нам необходиом выбрать порт, который будет расшариваться.

1- Подключите USB устройство к компьютеру

2- Выполните команду

lsusb

Для поиска соответствующего индентификатора Vendor/Device ID, который имеет следующую форму:

Bus XXX Device YYY: ID VendorID:DeviceID

Know that to find your favourite hardware ID, you can locate its possition on the BUS. Just match the ID with the result of usbip server check:

usbip:~$ sudo usbip_bind_driver --list
busid 1-6 (0c45:63ee)
               1-6:1.0 -  > uvcvideo
             1-6:1.1 -    > uvcvideo

Из этой команды нам становиться известне bus-ID, указывающий на USB устройство. В данном случае это "1-6".

Теперь подключаем устройство к серверу:

usbip:~$ sudo usbip_bind_driver --usbip 1-6

После выполнения данной команды система будет передавать данные о USB устройстве с вашей системы удаленным клиентам.

 

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

* Клиент MS Windows

Скачайте zip версию клиента по ссылке http://ignum.dl.sourceforge.net/project/usbip/usbip/usbip-win-preview/usbip-win.zip

Распакуйте её и выполните два простых шага.

Первое:

В архиве есть файл "bus.inf", который вам необходимо установить как "Generic system device" в своей системе.

Второе:

Выполните следующую команду из командной строки:

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

В результате выполнения этой команды вы увидите bus-ID, найденные на сервере.

Теперь подключите устройство следующей командой:

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

** USB-ID в нашем случае 1-6.

Все!!! Вы увидите новое USB устройство, обнаруженное вашей системой.

 

* Клиент Gnu/Linux

В качестве клиента я тестировал дистрибутив  Ubuntu Karmic

Подобно настройке серверной части необходимо выполнить команду:

$ sudo apt-get install usbip

Загрузите модуль "vhci-hcd":

$ sudo modprobe vhci-hcd

Теперь вы можете опросить сервер на наличие расшаренных USB устройств:

$ sudo usbip -l <server-ip>

А потом и подключить нужное устройство следующей командой:

$ sudo usbip -a <server-ip> X-Y

 

 

Интересное:

Самые низкие цены на окна пвх что я видел в Москве. Что вообщем и не удивительно, ведь у компании "Окна Комфорта" собственное производство.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 7

  1. Здравствуйте. Огромное спасибо за статью, очень помогла.

    Но есть вопрос:

    Сделал проброс принтера HP1020, Виндовый клиент нормально его подключил и принтер печатает, но только из-под Администратора. Права на клиент - полный доступ для всех, права на принтер - полный доступ для всех, уже даже незнаю куда копать. Может кто сталкивался с подобным?

  2. Шикарно=) Кратко, ясно, в поиске нашёл быстро. Спасибо!

  3. Сделал все по мануалу. На linux сервере девайс подтянулся, но на windows клиенте проблема:

    C:\Documents and Settings\kd_admin>e:\usbip\usbip.exe -l 192.168.50.68

    usbip: failed to open usb.ids

    - 192.168.50.68

    1-5: unknown vendor : unknown product (04a9:2213)

    : /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-5

    : unknown class / unknown subclass / unknown protocol (ff/ff/ff)

    : 0 - unknown class / unknown subclass / unknown protocol (ff/ff/ff)

    В файле usb.ids подключенный сканер имеется, как я понимаю проблема с открытием файла usb.ids на клиенте. С правами на клиенте все ровно. Подскажите плиз, куда копать.

  4. amd3000
    Сделал проброс принтера HP1020, Виндовый клиент нормально его подключил и принтер печатает, но только из-под Администратора. Права на клиент - полный доступ для всех, права на принтер - полный доступ для всех, уже даже незнаю куда копать. Может кто сталкивался с подобным?

    Боюсь, тут лучше не использовать проброс USB, у меня дома принтер подключен через CUPS, в винде он установлен как "Интернет-принтер", печатает без проблем и мгновенно!

  5. Дмитрий М. | 2012-10-10 в 14:40:49

    А где можно взять usb_bind_driver, если криворукий сборщик пакета usbip-3.5-1.fc17.i686 (c nonfree.rpmfusion.org) не соизволил его включить в пакет? ЧСХ, man usb_bind_driver включил.

  6. Александр | 2012-12-03 в 12:08:35

    Клиент 0.2

    usbip: failed to open usb.ids

    но после этой надписи устройство появляется без проблем.

    Проблема в том что после перезагрузки сервера с usbip

    виндовый клиент выдаёт вот что

    usbip: failed to open usb.ids

    request failed at peer, 1

    usbip err: usbip_windows.c: 712 (query_import_device) recv op_common

    usbip err: usbip_windows.c: 840 (attach_device) query

  7. Спасибо! Только коммандный интерфейс в новых версиях другой. Например в Arch уже вот такие комманды: http://tablock.org.ua/post/94/Проброс+USB+устройств+по+сети+в+Arch+Linux+с+помощью+USBIP

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)