Usb через сеть


Проброс USB устройств по сети с помощью USB Network Gate — Обзоры Софта

USB Network Gate — программа, позволяющая пользователям подключать USB устройства, подключенные к другим компьютерам используя каналы IP. 

На рынке существуют разные реализации удаленного подключения USB устройств, как аппаратные, так и программные. Некоторые из них требуют от пользователей определенных знаний и навыков, в некоторых случаях настройка может занять много времени. USB Network Gate удивил меня своей простотой. Скачал программу, установил, нажал на кнопку Share и устройство сразу доступно для подключения на удаленной машине с установленным клиентом.

USB Network Gate может оказаться незаменимым например при использовании USB токенов на сервере RDP, программа позволяет настроить монопольный доступ к устройствам для отдельного пользователя удаленного рабочего стола, изолируя его от остальных пользователей. Программу можно так же использовать в виртуальной среде, если по каким то причинам устройство невозможно подключить напрямую. Существуют версии для Windows, Linux (RPM и Deb пакеты), Apple OS X и что особенно интересно, для Android. Теперь о том, как это работает.

Сервер

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

USB Network Gate главное окно

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

Клиент

При использовании USB Network Gate в качестве клиента, приложение сканирует локальную сеть на наличие серверов отображает все доступные для подключения устройства. Если сервер находится в другой подсети, например при соединении через VPN, можно добавить его с помощью кнопки “Add server”. После того, как я открыл доступ к принтеру, он появился в списке доступных для подключения на моем MacBook. Помимо принтера я подключал USB жесткий диск с разделами HFS+, он так же подключился, но разделы монтировались около трех минут, видимо из-за их большого объема.

Резюме

Trial версия позволяет открыть доступ только к одному устройству, зарегистрированная — в зависимости от уровня лицензий, от одного за $89, 95 до неограниченного за $699,95. Если у вас есть необходимость быстро подключить устройство по сети, USB Network Gate то, что вам нужно, особенно если у вас нет сильных познаний в области компьютерного оборудования.

ergonotes.ru

Укрощаем USB/IP / Хабрахабр

Регулярно возникает задача подключения USB-устройства к удаленному ПК через локальную сеть. Под катом изложена история моих поисков в этом направлении, и путь к готовому решению на базе open-source проекта USB/IP с описанием заботливо установленных различными людьми на этом пути препятствий, а также способов их обхода.

Часть первая, историческая

Если машина виртуальная — всё это несложно. Функционал проброса USB от хоста в виртуалку появился еще в VMWare 4.1. Но в моём случае ключик защиты, опознающийся как WIBU-KEY, нужно было в разное время подключать к разным машинам, и не только виртуальным. Первый виток поиска в далеком 2009-м году привел меня к железке под названием TrendNet TU2-NU4 Плюсы:
  • иногда даже работает
Минусы:
  • работает не всегда. Допустим, ключ защиты Guardant Stealth II через неё не заводится, ругаясь ошибкой «устройство не может быть запущено».
  • ПО для управления (читай — монтирования и размонтирования USB-устройств) убого до крайности. Ключи командной строки, автоматизация — не, не слышали. Всё только руками. Кошмар.
  • управляющее ПО ищет саму железку в сети широковещанием, поэтому работает это только в пределах одного broadcast-сегмента сети. Указать IP-адрес железки руками нельзя. Железка в другой подсети? Тогда у вас проблема.
  • разработчики забили на устройство, слать баг-репорты бесполезно.
Второй виток случился во времена уже не столь отдаленные, и привел меня к теме статьи — USB/IP project. Привлекает открытостью, тем более, что ребята из ReactOS подписали им драйвер для Windows, так что теперь даже на x64 всё работает без всяких костылей вроде тестового режима. За что команде ReactOS огромное спасибо! Звучит всё красиво, попробуем пощупать, так ли оно на деле? К сожалению, сам проект тоже подзаброшен, и на поддержку рассчитывать не приходится — но где наша не пропадала, исходник есть, разберемся!

Часть вторая, серверно-линуксовая

Сервер USB/IP, расшаривающий USB-девайсы по сети, может быть поднят только в Linux-based OS. Ну что ж, линукс так линукс, устанавливаем на виртуалку Debian 8 в минимальной конфигурации, стандартное движение руками:sudo apt-get update sudo apt-get upgrade sudo apt-get install usbip Установились. Дальше интернет подсказывает, что нужно бы загрузить модуль usbip, но — здравствуйте, первые грабли. Нет такого модуля. А всё оттого, что большинство руководств в сети относятся к более старой ветке 0.1.x, а в крайней 0.2.0 модули usbip имеют другие названия.

Поэтому:

sudo modprobe usbip-core sudo modprobe usbip-host sudo lsmod | grep usbip Ну и добавим в /etc/modules такие строки, чтобы загружать их автоматически при старте системы:usbip-core usbip-host vhci-hcd Запустим сервер usbip:sudo usbipd -D Дальше всемирный разум нам подсказывает, что в комплекте с usbip идут скрипты, позволяющие нам управлять сервером — показать, какое устройство он будет расшаривать по сети, посмотреть статус, и так далее. Тут нас поджидает еще один садовый инструмент — эти скрипты в ветке 0.2.x, опять же, переименованы. Получить список команд можно с помощьюsudo usbip Почитав описание команд, становится понятно, что для того, чтобы расшарить требуемый USB-девайс, usbip хочет узнать его Bus ID. Уважаемые зрители, на арене грабли номер три: тот Bus ID, который выдаст нам lsusb (казалось бы, самый очевидный путь) — ей не подходит! Дело в том, что железки вроде USB-хабов usbip игнорирует. Поэтому, воспользуемся встроенной командой:[email protected]:~$ sudo usbip list -l - busid 1-1 (064f:0bd7) WIBU-Systems AG : BOX/U (064f:0bd7)Примечание: здесь и далее в листингах я буду всё описывать на примере моего конкретного USB-ключа. Ваши название железки и пара VID:PID могут и будут отличаться. Моя называется Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.

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

[email protected]:~$ sudo usbip bind --busid=1-1 usbip: info: bind device on busid 1-1: complete Ура, товарищи[email protected]:~$ sudo usbip list -r localhost Exportable USB devices ====================== - localhost 1-1: WIBU-Systems AG : BOX/U (064f:0bd7) : /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1 : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)Троекратное ура, товарищи! Сервер расшарил железку по сети, и мы можем её подключать! Осталось только дописать автозапуск демона usbip в /etc/rc.localusbipd -D

Часть третья, клиентская и запутанная

Подключить расшаренное устройство по сети к машине под управлением Debian я попробовал сразу же на том же сервере, и всё прекрасно подключилось:sudo usbip attach --remote=localhost --busid=1-1 Переходим к Windows. В моем случае это был Windows Server 2008R2 Standard Edition. Официальное руководство просит сначала установить драйвер. Процедура прекрасно описана в прилагаемом к windows-клиенту readme, делаем всё как написано, всё получается. На XP тоже работает без каких-либо трудностей.

Распаковав клиент, пробуем примонтировать наш ключик:

C:\Program Files\USB-IP>usbip -a %server-ip% 1-1 usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1 usbip err: usbip_windows.c: 756 (query_interface0) recv op_common usbip err: usbip_windows.c: 829 (attach_device) cannot find device Ой-ой. Что-то пошло не так. Используем навык гугла. Встречаются отрывочные упоминания, что что-то там не так с константами, в серверной части разработчики при переходе на версию 0.2.0 изменили версию протокола, а вот в клиенте под Win сделать это забыли. Предлагаемое решение — поменяйте константу в исходнике и пересоберите клиент.

Вот только очень мне не хочется качать Visual Studio ради этой процедуры. Зато у меня есть старый-добрый Hiew. В исходнике константа объявлена как двойное слово. Поищем в файле 0х00000106, заменяя на 0х00000111. Не забываем, порядок байт обратный. Итог — два совпадения, патчим:

[usbip.exe] 00000CBC: 06 11 00000E0A: 06 11 Ииии… да!C:\Program Files\USB-IP>usbip -a %server-ip% 1-1 new usb device attached to usbvbus port 1 На этом можно было бы закончить изложение, но музыка играла недолго. Перезагрузив сервер, я обнаружил, что устройство на клиенте не монтируется!C:\Program Files\USB-IP>usbip -a %server-ip% 1-1 usbip err: usbip_windows.c: 829 (attach_device) cannot find device И всё. На это мне не смог ответить даже всезнающий гугл. А при этом команда отобразить доступные на сервере устройства вполне корректно показывает — вот он, ключ, можете монтировать. Пробую примонтировать из-под Linux — работает! А если теперь попробовать из-под Windows? О ужас — это работает!

Грабли последние: что-то там в коде сервера не дописано. При расшаривании устройства он не считывает с него количество USB-дескрипторов. А при монтировании устройства из-под Linux, это поле заполняется. К сожалению, с разработкой под Linux я знаком на уровне «make && make install». Поэтому проблема решена с помощью довольно грязного хака — добавлением в /etc/rc.local

usbip attach --remote=localhost --busid=1-1 usbip port usbip detach --port=00

Часть заключительная

После некоторых мытарств, это работает. Желаемое получено, теперь ключ можно примонтировать к любому ПК (и размонтировать, конечно же, тоже), в том числе — за пределами широковещательного сегмента сети. Если хочется — можно это сделать с помощью скрипта командной оболочки. Что приятно — удовольствие абсолютно бесплатное. Надеюсь, что мой опыт поможет хабражителям обойти те грабли, которые отпечатались у меня на лбу. Спасибо за внимание!

habrahabr.ru

Проброс USB по сети - утилита USB Network Gate

Материал просмотрен 385 раз(а)

Здравствуйте, товарищи-сисадмины и компьютерщики! Сегодня я сделаю небольшой обзор на одну программку, которая позволяет прокинуть USB устройства через сеть Ethernet.

Где это может быть полезным? Сложно навскидку сказать, но вот некоторые области применения:

  1. Для обмена файлами в пределах локальной сети, если есть сложности в передачи USB-накопителя или прямом расшаривании USB-накопителя.
  2. Для получения доступа к периферии (веб-камеры, мыши, клавиатуры, принтеры, сканеры).

Честно говоря, я не тестировал, как будет происходить доступ к устройствам ввода-вывода – просто нет такой возможности. Но вот на примере USB-накопителя покажу в статье. Работает вполне неплохо.

USB Network Gate

Находим на просторах Интернета программу USB Network Gate и ставим её на компьютер, который выступает в роли сервера. После запуска увидим нечто подобное (на вкладке “Локальные USB-устройства“):

Перечислен список всех наших USB-устройств. Самым нижним обозначено устройство хранения данных “Mass Storage Device“, нажмём кнопку “Открыть доступ” напротив этого пункта.

Теперь установим программу на клиентской машине, то есть на той, с которой нужно получать доступ к ресурсам сервера. Увидим следующую картину (на вкладке “Удалённые USB-устройства“):

Нажмём кнопку “Добавить сервер” и увидим окно ввода IP-адреса сервера:

Ввожу IP-адрес того узла в сети, на котором установил серверную часть в самом начале и вижу следующую картину:

Нажатие на кнопку “Подключить” приведёт к монтированию удалённого USB-устройства к локальному компьютеру:

При этом в системе появится та самая флешка, которая физически подключена совершенно в другом месте! 🙂 Вот это номер. На сервере отобразится следующая картина:

То есть поясняется, к какому хосту подключено то или иное USB-устройство. Ну разумеется, имеется возможность отключить это устройство и прекратить доступ.

Настройки программы для проброса USB по сети

Кроме того, на стороне сервера есть возможность задать некоторые настройки доступа для каждого из устройств:

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

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

Ну что можно сказать по этому поводу… Утилита явно неплохая, несмотря на то, что коммерческая. Довольно таки неплохо справляется со своей задачей – пробросом USB устройств по сети.

Выводы

Итак, пару слов о данной программе. Мне понравилась задумка – люблю различные решения, которые могут иногда выручить в сложной ситуации. Никогда не знаешь, где может пригодиться это, а знать, что такая возможность имеется – очень даже полезно!

Один минус – программа платная, но в ознакомительных целях использовать её ограниченную версию вполне можно, разрабы не обидятся, надеюсь.

Друзья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!

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

litl-admin.ru

Доступ к USB диску (флешке) через роутер TP-Link по сети

Большинство моделей маршрутизаторов TP-Link имеют USB порт. Он используется для подключения USB-накопителей, принтеров, и USB-модемов (в некоторых моделях). Сегодня я покажу как подключить флешку, или внешний жесткий диск к роутеру, и без сложных настроек получить доступ к USB диску по сети практически с любого устройства. Проще говоря, с компьютера, или даже мобильного устройства (Android) мы сможем заходить на флешку, которая подключена к роутеру TP-Link. Доступ к накопителю смогут получить устройства, которые подключены как по Wi-Fi, так и по сетевому кабелю. Можно будет не только просматривать файлы на накопителе, но и записывать и удалять.

Раньше я уже писал статью по настройке FTP на роутерах TP-Link. Это тоже хороший способ получить доступ к накопителю, который подключен к роутеру, но там боле сложные настройки. А мы настроим обычный сетевой доступ, и подключим сетевой диск в Windows, чтобы был удобный доступ к флешке.

Если вы хотите на телевизоре смотреть файлы, которые находятся на USB-накопителе подключенному к роутеру, то лучше настроить DLNA сервер. Как это сделать на роутере TP-Link я писал в отдельной статье: http://help-wifi.com/raznye-sovety-po-tv/media-server-dlna-na-wi-fi-routere-asus-i-tp-link/.

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

Настройка сетевого доступа к флешке через роутер TP-Link

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

На данный момент, на рынке есть роутеры со старой панелью управления (которая зеленая), и с новой (голубая). Насколько я понял, на более старых моделях нет доступа к накопителю через "Сетевое окружение". Это значит, что накопитель подключенный к роутеру не будет автоматически отображаться на вкладке "Сеть" в проводнике Windows. Его нужно будет добавить  вручную.

Мы начнем настройку с самого простого, и рассмотрим разные нюансы.

Подключаем USB диск к маршрутизатору

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

Я не советую подключать накопитель, на котором есть важная информация. Так как всегда есть риск потерять ее. Лучше попрактиковаться на чистом накопителе, или на котором нет ценной информации. Ну и не изменяйте настройки, когда не знаете что они означают.

Я все проверял на роутере Tp-Link Archer C20i. У вас конечно же может быть другая модель, это не страшно.

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

Доступ к USB накопителю с компьютера (Windows 10) через роутер TP-Link

Я покажу на примере Windows 10. Но в Windows 8, и Windows 7 все будет точно так же.

Компьютер подключен к роутеру, к которому в свою очередь подключен накопитель. Первым делом давайте проверим, может наш накопитель уже отображается на вкладке "Сеть" в проводнике.

Откройте проводник, и перейдите на вкладку Сеть. Если сверху выскочит сообщение, что "Сетевое обнаружение и общий доступ к файлам отключен", то нажмите на него, и выберите "Включить обнаружение и общий доступ к файлам". Если появится еще одно окно, то я советую открыть доступ к той сети, к которой вы подключены на данный момент. Если сообщение не появится, то ничего страшного, значит там все Ok.

Смотрим что там есть в этом окне. Если повезет, то там будет отображаться сетевой доступ к нашему роутеру. У меня он называется "TP-SHARE". Открываем его, там будет папка, в которой уже находится содержимое нашего накопителя.

Скриншот уже с Windows 7, лень было обратно в Windows 10 загружаться:) Но там все одинаково.

Вот собственно и все. Вы можете закидывать туда файлы, и считывать их. Но такой способ у меня сработал только с новым роутером TP-Link Archer C1200. А вот накопитель подключенный к Tp-Link Archer C20i на вкладке сеть не отображался. Но его можно без проблем подключить как сетевой диск.

Если сетевой накопитель не отображается на вкладке "Сеть"

В таком случае, просто открываем проводник, и переходим по адресу \\192.168.0.1, или \\192.168.1.1 (все зависит от роутера). Сразу должна открыться наша флешка, или HDD.

Чтобы каждый раз не вводить этот адрес в проводнике, достаточно нажать на папку с накопителем правой кнопкой мыши, и выбрать "Подключить сетевой диск...".

В следующем окне достаточно нажать "Готово".

Вот и все, теперь наш диск будет всегда доступен из проводника (Этот компьютер).

После отключения флешки от роутера TP-Link, и повторного подключения, даже роутер перезагружать не нужно. Доступ будет восстанавливаться автоматически.

Настройка совместного доступа к USB на роутерах TP-Link

Как видите, все работает без каких либо настроек роутера. Нам даже не понадобилось входить в панель управления. Но я все таки решил показать настройки общего доступа. Там можно отключить анонимный доступ. Это когда для доступа к накопителю нужно будет вводить имя пользователя и пароль учетной записи. Можно создавать учетные записи с разными правами доступа. Например, только с правами на чтение (просмотр файлов).

Я выше уже писал, что роутеры TP-Link бывают с двумя панелями управления: зеленой и голубой. Рассмотрим оба варианта.

Нужно зайти в настройки роутера. Достаточно в браузере перейти по адресу 192.168.0.1, или 192.168.1.1 и указать данные для входа. Заводские: admin и admin. Можете посмотреть подробную инструкцию: http://help-wifi.com/tp-link/kak-zajti-v-nastrojki-routera-tp-link/.

Если у вас зеленая панель управления, то нужно открыть вкладку "Настройки USB" – "Совместный доступ".

Как видите, сервер по умолчанию включен. Чтобы задать настройки доступа, создать новые учетные записи, нужно убрать галочку "Анонимный доступ ко всем томам". Так же можно отключить доступ, нажав на соответствующую кнопку.

На новых роутерах, с новой панелью управления нужно в разделе "Дополнительные настройки" открыть вкладку "Настройки USB" – "Общий доступ". Мы получали доступ через "Сетевое окружение". Как видите, его можно отключить, просто убрав галочку возле него.

Вот собственно и все. Если вас интересует доступ к файлам, которые находятся на накопителе подключенному к маршрутизатору с телефона, или планшета на Android, то я советую использовать приложение ES Проводник. В нем есть вкладка сеть, где будет отображаться сетевой накопитель. Если же автоматически он не появится, то там есть возможность подключить сетевой диск по адресу \\192.168.0.1, или \\192.168.1.1.

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

help-wifi.com

Проброс USB в виртуалку по сети средствами UsbRedir и QEMU / Хабрахабр

На сегодняшний день существет довольно много способов пробросить USB-устройство на другой компьютер или виртуалку по сети. Из наиболее популярных — железячные такие как AnywhereUSB и чисто програмные продукты, из тех что я попробовал сам: USB Redirector и USB/IP. Я бы хотел рассказать вам еще об одном интересном способе, который работает непосредственно с эмулятором QEMU. Он так же является частью проекта spice, официально поддерживаемым RedHat.

UsbRedir, это открытый протокол для проброса usb-устройств по tcp на удаленный виртуальный сервер, разработанный при поддержке RedHat в рамках проекта spice. Но как оказалось им можно вполне успешно пользоваться и без spice. В роли сервера выступает usbredirserver, который шарит usb-устройство на определенный порт, а в качестве клиента сам QEMU, который эмулирует подключение экспортированного usb-устройства в определенный usb-контроллер вашей виртуальной машины. Благодаря такому подходу в качестве гостевой системы может использоваться абсолютно любая ОС, так как она даже не знает, что устройство является проброшенным удаленно, а вся логика ложится на QEMU.

Для начала несколько слов о вышеперчисленных решениях

  • AnywhereUSB — довольно неплохое решение, но дорогое, и имеет неприятние глюки, например бывает если расшаренная флешка отваливается, то переподключить ее обратно можно только физически вынув и вставив ее.
  • USB/IP — OpenSource проект. Вроде как был заброшен. По факту глючит довольно сильно. При разрыве соединения, машина частенько уходит в полнейший freezee, а windows показывает BSOD
  • USB Redirector — Замечательная софтина. Для расшаривания устройств с linux на linux бесплатна, во всех остальных случаях уже стоит денег, не так много как AnywhereUSB, но и не бесплатно как хотелось бы :)
Как видно есть из чего выбрать, но давайте же наконец попробуем еще один способ — UsbRedir?

Настройка виртуальной машины

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

  • uhci — для USB1.0
  • ehci — для USB2.0
  • xhci — для USB3.0
Для qemu (без libvirt)

Добавьте опции в команду запуска виртуальной машины:

-device ich9-usb-ehci1,id=ehci,addr=1d.7,multifunction=on -device ich9-usb-uhci1,id=uhci-1,addr=1d.0,multifunction=on,masterbus=ehci.0,firstport=0 -device ich9-usb-uhci2,id=uhci-2,addr=1d.1,multifunction=on,masterbus=ehci.0,firstport=2 -device ich9-usb-uhci3,id=uhci-3,addr=1d.2,multifunction=on,masterbus=ehci.0,firstport=4
Для libvirt
В исходном файле конфигурации виртуальной машины в узле &ltdevices&gt удаляем все USB контроллеры и добавляем следущий блок:<controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x2'/> </controller>

Кстати, если вы используете spice, то добавив к контроллерам еще 3 специальных девайса, станет возможен проброс usb-устройств с клиента spice на сервер.

Пример под спойлером
Для qemu
Добавляем следующие опции в команду запуска виртуальной машины, помимо контроллеров определеных нами раньше:-chardev spicevmc,name=usbredir,id=usbredirchardev1 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev2 -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3
Для libvirt
В исходном файле конфигурации виртуальной машины в узле &ltdevices&gt добавляем следующие опции, помимо контроллеров определеных нами раньше:<redirdev bus='usb' type='spicevmc'><address type='usb' bus='0' port='3'/></redirdev> <redirdev bus='usb' type='spicevmc'><address type='usb' bus='0' port='4'/></redirdev> <redirdev bus='usb' type='spicevmc'><address type='usb' bus='0' port='5'/></redirdev> <redirdev bus='usb' type='spicevmc'><address type='usb' bus='0' port='6'/></redirdev>

Теперь все готово для осуществления проброса.

Запуск сервера

Пакет usbredirserver можно найти в стандартных репозиториях практически во всех популярных дистрибутивах linux.

Вставляем флешку в компьютер, смотрим вывод usb-устройств:

$ lsusb ... Bus 003 Device 011: ID 125f:c82a A-DATA Technology Co., Ltd. ...

Видим что пара vendorid:prodid равна 125f:c82a, а ядро определило флешке 003-001 usbbus-usbaddr соотвественно.

Теперь давайте расшарим ее на 4000 порт:

# Используя пару vendorid:prodid $ usbredirserver -p 4000 125f:c82a # Используя пару usbbus-usbaddr $ usbredirserver -p 4000 003-011

Подключение устройства к виртуальной машине

Через опции при запуске ВМ

Устройство которое нужно подключить к ВМ можно указать при запуске, добавив следующие опции в команду запуска

Для qemu
-chardev socket,id=usbredirchardev1,port=4000,host=192.168.1.123 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=ehci.0,debug=4
Для libvirt
Этот блок рамещается перед тегом &lt/devices&gt, рядом с контроллерами определенными нами раньше:<redirdev bus='usb' type='tcp'> <source mode='connect' host='192.168.1.123' service='4000'/> </redirdev> Его так же можно исполнить командой virsh attach-device
Или через qemu-monitor
Заходим на гипервизор и в qemu-monitor нашей машины выполняем следующие команды: # Добавляем наше устройство chardev-add socket,id=usbredirchardev1,port=4000,host=192.168.1.123 # Подключем его в ehci контроллер (USB-2.0) device_add usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=ehci.0,debug=4 Что бы отключить флешку достаточно такой команды:device_del usbredirdev1

На этом все, после данных шагов ваша ВМ увидит вашу флешку и сможет с ней нативно работать.

Если устройств много и все они одинаковые

Вот тут появилась интересная задачка, как пробросить несколько одинаковых девайсов на разные ВМ? При этом, стоит отметить, все устройства имеют одинаковую пару vendorid:prodid, а пара usbbus-usbaddr совсем не постоянна, стоит только вынуть и вставить устройство, так оно сразу поменяет свой usbaddr.

Я решил ее при помощи udev. Кстати если вы не совсем понимаете как работает udev, на Debian Wiki есть классная статья о udev

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

Запустим udev-монитор:

$ udevadm monitor --environment --udev И вставим наше устройство, после этого мы сразу увидим список переменных этого устройства которые udev любезно инициализировал для нас:... UDEV [189056.151508] add /devices/virtual/bdi/8:16 (bdi) ACTION=add DEVPATH=/devices/virtual/bdi/8:16 ID_SERIAL_SHORT=11C130317234004B SEQNUM=4352 SUBSYSTEM=bdi USEC_INITIALIZED=189056149826 ... Информацию о серийнике и других аттрибутах можно получить и другим способом, но стоит учитывать что для написания правил мы будем использовать именно переменные из команды выше, а не аттрибуты из команды ниже. В противном случае не будет отрабатывать триггер remove при отключении устройства.$ udevadm info -a -n /dev/bus/usb/003/011 | grep '{serial}'

Теперь создадаим файл /etc/udev/rules.d/99-usb-serial.rules и запишем в него следующие правила:

ACTION=="add", ENV{ID_SERIAL_SHORT}="11C130317234004B", RUN+="/usr/bin/usbredirserver -p 4000 $attr{busnum}-$attr{devnum}" ACTION=="remove", ENV{ID_SERIAL_SHORT}="11C130317234004B", RUN+="/usr/bin/fuser -k 4000/tcp"

Перезагрузим udev-правила:

$ udevadm control --reload-rules Готово, теперь при подключении нашего устройства, оно будет автоматически шарится на нужный нам порт, а при отключении usbredirserver будет прекращать свою работу. По аналогии добавляем и остальные устройства.

На этом все. Спасибо за проявленный интерес :)

UPD: Тем кому интересно, что из этого в итоге получилось, можете посмотреть здесь

Источники:

umvirt.ru/node/82opennebula.org/opennebula-for-virtual-desktopsopennet.ru/opennews/art.shtml?num=30773lists.gnu.org/archive/html/qemu-devel/2013-07/msg05244.htmlaskubuntu.com/questions/49910/how-to-distinguish-between-identical-usb-to-serial-adaptersbugzilla.redhat.com/show_bug.cgi?id=805172#c26

habrahabr.ru

Аналог AnywhereUSB на Rasberry PI или USB over IP.

Сегодняшний пост будет немного сумбурным (так как уже далеко за полночь, а над этим решением я работаю где-то с 18:00, поэтому голова уже кругом) и речь в нем пойдет о пробросе USB через IP, т.е. о создании аппаратного аналога вот такой "коробки" - AnywhereUSB /2. Принцип работы ее как вы понимаете крайне простой, это USB-хаб, который "расшаривает" USB устройства через Ethernet. Т.е. на другой стороне ПК со специальным установленным ПО, которое создает виртуальный USB-хаб и видит физически подключенные к USB на другой стороне девайсы.

Для тестовой реализации своей "коробки" мной был взят Raspberry Pi, а также дистрибутив Raspbian Jessie (2016-02-26, Kernel 4.1), в качестве реализации USB-сервера я решил попробовать решение USB Redirector от Incentives Pro. Вот тут-то и начинается самое интересное. Исходные данные, т.е. само железо и софт планируемый к использованию у нас есть, осталось все это дело только настроить. Ядро 4.1 по-умолчанию USB Redirector for Linux не поддерживается, более того, при попытке собрать версию выложенную на странице Downloads под Raspbian Jessie мы получаем ошибки при компиляции, часть из которых можно устранить, часть - нет. Поэтому сразу скажу, что если собирать под Raspbian Jessie, то надо брать не ту версию которая выложена на странице Downloads, а beta'у - usb-redirector-linux-3.4-arm.tar.gz (на понимание этого простого факта у меня ушел не один час). Ну да ладно, приступим.

Качаем дистрибутив Raspbian Jessie - 2016-02-26-raspbian-jessie.zip (по ссылке будет отдаваться последний дистрибутив) и распаковываем его. Также сразу берем Win32 Disk Imager для записи образа на SD. Далее вставляем microSD в кардридер, запускаем Win32 Disk Imager и записываем образ на microSD, здесь ничего сложного нет:

После того как все запишется, вставляем microSD в Raspberry Pi, подключаем к нему питание и Ethernet и ждем пока он загрузится: Естественно что в вашей сети должен быть DHCP сервер, чтобы при загрузке Raspberry Pi получил адрес. Думаю что все знают где и как посмотреть DHCP Leases на своем маршрутизаторе, чтобы определить какой именно IP получил мини-ПК. В моем случае это был 172.17.111.50. Берем Putty n подключаемся к Raspberry Pi через SSH.

Логин: piПароль: raspberry

Да, забыл сказать, что флешку я взял на 16 Gb и после развертывания образа с помощью Win32 Disk Imager файловая система Raspbian занимает не весь объем флешки, более того, по-умолчанию 97% ФС считается занятой. Поэтому первое что мы делаем после того как залогинились в консоль это sudo raspi-config и уже там делаем Expand Filesystem:

После чего перезагружаемся и смотрим с помощью df свободное место. для 16 Gb SD должно получиться что-то вроде этого: [email protected]:~ $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 15186136 3418152 11095712 24% / devtmpfs 218416 0 218416 0% /dev tmpfs 222688 0 222688 0% /dev/shm tmpfs 222688 4552 218136 3% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 222688 0 222688 0% /sys/fs/cgroup /dev/mmcblk0p1 61384 20328 41056 34% /boot tmpfs 44540 0 44540 0% /run/user/1000 Дальше мы смотрим версию ядра с помощью uname -vr , у меня это была 4.1.18+ #846 Thu Feb 25 14:11:56 GMT 2016 и в любом случае выполняем обновление с помощью sudo rpi-update, чтобы ядро у вас было той же версии что и на Git'е ... потому что если это будет не так - потом можно наступить на такие грабли при компиляции модулей ядра, что "с непривычки" будет просто не разобрать (это как раз то на чем я потерял кучу времени, поэтому обновляем ОС сразу):

После обновления обязательно перезагружаемся - sudo reboot . Далее делаем следующие вещи:

uname -vr - проверяем обновилось ли ядро, у меня обновилось и версия стала 4.1.19+ #853 Wed Mar 9 18:04:48 GMT 2016, т.е. как на GitHub.

sudo apt-get update - обновляем базу пакетов, естественно доступ к интернет для Raspberry Pi у нас должен быть обеспечен на маршрутизаторе, к которому он подключен.

cd ~ - перемещаемся в /home/pi

wget http://www.incentivespro.com/usb-redirector-linux-3.4-arm.tar.gz - качаем исходники USB Redirector for Linux

tar -xzvf usb-redirector-linux-3.4-arm.tar.gz - распаковываем их

Теперь готовим сырца ядра и все необходимое для сборки:

sudo apt-get install libncurses-dev - на запрос отвечаем Y, в результате установятся два пакета libncurses5-dev и libtinfo-dev

cd /usr/src

sudo git clone --depth 1 https://github.com/raspberrypi/linux.git - клонируем репу с исходниками ядра с глубиной в 1 commit

sudo ln -s linux linux-$(uname -r) - создаем символические ссылки, необходимые для того чтобы make при сборке USB Redirector for Linux знал откуда брать исходники.

sudo ln -s /usr/src/linux /lib/modules/$(uname -r)/build

cd linux

sudo wget https://raw.githubusercontent.com/raspberrypi/firmware/master/extra/Module.symvers - качаем Module.symvers из репы, без него модуль ядра tusbd.ko будет собираться криво, вернее собираться-то он будет, но вот запускаться не очень ;) На это тоже можно убить много времени, если не знать что и как. 

sudo wget https://raw.githubusercontent.com/raspberrypi/firmware/master/extra/Module7.symvers - в итоге файлы Module.symvers и Module7.symvers должны оказаться у вас в /usr/src/linux. Наверняка собрав все модули ядра через sudo make modules эти файлы сгенерируются автоматически (да поправят меня Linux'оиды, если это не так), но т.к. сборка всех модулей на Rasberry Pi идет чересчур долго, то дожидаться окончания сборки я не стал.

Теперь нам нужно сгенерировать конфиг - .config, сделать это можно как запуском sudo make menuconfig , так и sudo make bcm2709_defconfig. Я же сделал это немного по-другому:

sudo modprobe configssudo cp /proc/config.gz /usr/src/linuxcd /usr/src/linuxsudo gunzip config.gzsudo mv config .config В результате в /usr/src/linux у меня появился заветный .config. Далее делаем следующее:

sudo make preparesudo make modules_prepare Процесс занимает несколько минут, так что как нам писали когда-то во время установки одной из популярных ОС, расслабьтесь и откиньтесь на спинку кресла. Необходимые приготовления к компиляции модулей ядра уже происходят. После того как завершится выполнение последней команды можно переходить непосредственно к компиляции USB Redirector for Linux:

cd ~/usb-redirector-linux-arm/ - переходим в каталог с распакованными сырцамиsudo /usr/local/usb-redirector/uninstall.sh uninstall - удаляем предыдущую версию, если вы вдруг уже ее уже компилировали, но что-то пошло не такsudo ./installer.sh install-server - собираем ... в процессе собирается модуль ядра

И если все успешно, то мы видим примерно следующее:

Если же сборка неудачна - то изучаем buildlog.txt, если же модуль собрался, но не запускается - внимательно смотрим в /var/log/kern.log .

Перезагружаем Rasberry Pi - sudo reboot ... и смотрим запустился ли модуль с помощью lsmod :

Как видно, у меня модуль tusbd успешно запустился и присутствует в списке. Можно даже посмотреть modinfo по нему, с помощью modinfo /usr/local/usb-redirector/bin/tusbd.ko . Вообще проверить запускается ли собранный модуль можно было сразу, с помощью sudo insmod /usr/local/usb-redirector/bin/tusbd.ko , а потом lsmod, т.е. без перезагрузки, если бы не запустился, то в /var/log/kern.log мы увидели бы соответствующее сообщение, например: [ 6234.131368] tusbd: disagrees about version of symbol module_layout ... [ 96.276453] tusbd: Unknown symbol _raw_spin_lock_irqsave (err 0) [ 96.276511] tusbd: Unknown symbol _raw_spin_lock (err 0) [ 96.276736] tusbd: Unknown symbol _raw_spin_unlock_irqrestore (err 0) Если вы увидели такое у себя, то значит версия исходников которую вы брали не соответствует вашей версии ядра, или у вас файл Module.symvers не соответствует версии исходников. У меня подобные ошибки были на протяжении нескольких часов ;) Это в мануале все красиво и гладко получается, ну да на то он и мануал.

Теперь настало время прочитать help по самому USB Redirector Server'у. Выполняем:

/usr/local/usb-redirector/bin/usbsrv И внимательно читаем. Теперь я вставлю в Rasberry Pi обычную USB Flash Kingston и мы попробуем посмотреть список устройств, которые можно "расшарить":

/usr/local/usb-redirector/bin/usbsrv -l

================= USB SERVER OPERATION SUCCESSFUL =============== List of local USB devices: 1: USB Device vendor_id 0x0424 - product_id 0xec00 Vid: 0424 Pid: ec00 Port: 1-1.1 Status: plugged 2: DataTraveler 2.0 Kingston USB Mass Storage Device (s/n: 0014780************A006C) Vid: 0951 Pid: 1603 Port: 1-1.5 Status: plugged ===================== ======================= =================== Как видно флешка у нас имеет ID=2, расшарим ее:

/usr/local/usb-redirector/bin/usbsrv -s 2

В ответ мы должны получить ответ, что Operation Successful и USB device has been shared. Что же, самое время установить клиент для USB Redirector, в моем случае это будет клиент под ОС Windows XP и посмотреть как ОС увидит "расшаренное устройство":

А увидела она его без каких-либо проблем, как будто флешка непосредственно была подключена к этому ПК.

p.s. Ну а теперь давайте рассмотрим стоимость полученного решения. Я буду исходить из того что Rasberry Pi у нас был приобретен заранее (поэтому его стоимость я не учитываю, хотя это и можно было бы сделать). Изначально решение [ Rasberry Pi + USB Redirector for Linux ] предлагалось как альтернатива AnywhereUSB/2, стоимость которого сейчас составляет 23 219 pуб. (~330 USD), стоимость же лицензии на USB Redirector Client v6 Single License (for 1 Linux USB server) и те же 2 USB устройства составляет 69.99 USD. Rasberry Pi же стоит в районе 4000 руб. Итого получаем - 23219 руб., против ~9000 руб. А на выходе примерно такая же "коробочка". Правда вот стабильность работы того или иного решения еще предстоит проверить, а в случае с AnywhereUSB/2, к сожалению, я этого сделать не могу по причине его отсутствия.

Плюс, в связке Rasberry Pi + USB Redirector for Linux есть некоторые подводные камни. Так, например, USB-флешка, USB-модем Huawei успешно увиделись у меня на другом конце. А вот такое специфическое устройство как ридер смарткарт - EMV Smartcard Reader Generic USB Chip/SmartCard Device (Alcor Micro USB Smart Card Reader) к сожалению не захотело. Вернее само устройство определилось "на другом конце" и даже в диспетчере устройств в разделе Смарт-карты появилась смарт-карта, но вот ПО, которое общается с ней, сам ридер видело, а установленную в нем карту - нет. Из других устройств, которые я пробовал подключать к Rasberry Pi с установленным на нем USB Redirector for Linux был Android смартфон, здесь все было нормально:

Полезные ссылки

www.decker.su

Использование бесплатного пакета USBIP для проброса USB внутрь виртуальных машин

В статье про USB и виртуальные машины один из читателей блога — Vovets666 опробовал  бесплатное ПО USBIP и предложил написать про него статью.

Дисклаймер:все описанное ниже – мое личное видение проблемы и способов ее решения, не являющееся истиной в последней инстанции. Вполне возможно, существуют и другие варианты, я с удовольствием про них послушаю. В качестве инструкции по работе с ПО использованы материалы, найденные в интернете, уже и не помню где… Кроме того, являясь админом — виндузятником, с Linux я знаком довольно поверхностно, работал в условиях дедлайна и времени на изучение матчасти/танцы с бубнами особо много не имел, поэтому описываю, как сделал, чтобы работало, и уверен, что есть и другие способы.

Итак, имеем виртуальные машины — серверы 1С, поднятые на MSWindowsServer 2008R2. Для работы ПО необходимы подключенные к ним серверные HASP-ключи. Непосредственно подключить их на ВМ на Hyper-V, как известно, нельзя. Задача: каким-то образом пробросить HASP-ключи на виртуальные машины, желательно с использованием минимума дополнительного железа и стоимости лицензий.

(Оффтоп: у 1С в последнее время появилась возможность программного лицензирования ПО, без использования HASP-ключей (что-то вроде активации с использование пин-кодов). Но есть нюансы: обмен на лицензию с программной активацией не бесплатный, при изменении конфигурации машины необходима повторная активация, по истечении определенного лимита разрешение на активацию остается на усмотрение техподдержки, что совсем не айс. Посему было решено использовать старый способ с HASP-ключами).

Рассматривались варианты:

— способ, предоставляемый компанией Микрософт (правда, для других целей):RemoteFX+RDP7.1. Не устроил по причинам: необходимо оборудование с поддержкой RemoteFX, на сервере 1С должны быть подняты дополнительные сервисы (служба доступа к удаленному рабочему столу), с хоста на виртуалку должна постоянно висеть сессия RDP, через которую пробрасывается ключ, необходима клиентская лицензия на доступ к RDS. Возможно, в каком-либо из пунктов этого списка я и ошибаюсь, но общее их количество зарубило способ на корню.

— аппаратные устройства сторонних производителей. Недостатки: стоят денег, к тому же у некоторых устройств наблюдались проблемы с совместимостью с используемыми ОС (к примеру,Ubox 4100, который у нас есть) и которые производитель решать не собирался. Сейчас проблемы вроде как решены (в других моделях), но осадок остался.

— ПО сторонних производителей. Недостатки: требуют наличия отдельной машины для работы в качестве сервера USB-устройств и, как правило, платные. После поискаприемлемого софта оказалось, что из всего обнаруженного ПО бесплатным для коммерческого применения является только пакет USBIP. На нем и остановился.

Сама по себе установка и настройка ПО больших проблем не вызвала, в комплекте к пакету имелся краткий мануал, плюс – интернет.

Пакет USBIP (http://usbip.sourceforge.net/) для работы требует наличия 2х настроенных машин: сервера (к нему непосредственно подключается ключ) и клиента (на него этот ключ пробрасывается). Сервернаячасть USBIP существует только под Linux, клиентская – под Linux и Windows (включая 7 и 2008R2).

1) Установка сервера (машины, в которую подключено USB устройство).

В качестве сервера используем машину с установленным Linux. Я использовал Linux Ubuntu v.11.04 (сборка Lubuntu, которая декларируется как наименее требовательная к ресурсам) как наиболее простую (для меня) систему: ставится без каких-либо проблем, автоматически подцепляет новые подключаемые USB устройства, после установки по умолчанию инсталлированы необходимые компоненты, кроме того, USBIP присутствует в репозитарии. С целью экономии на оборудовании эта машина создана как виртуальная, поднятая на существующем хосте ESXi 4.1 и в нее в свою очередь проброшен ключ HASP с хоста стандартным для ESXi способом.

Установка проблем не вызвала: ставим систему, подключаем к сети, выдаем IP, через менеджер пакетов устанавливаем USBIP и необходимые для работы компоненты. Кроме того были установлены VMware tools (так как данная машина – ВМ на ESXi).

На всякий случай напомню, как это делается:

Из оснастки VMware подключаем диск с ПО (Inventory -> Virtual Machine -> Guest -> Install/Upgrade VMware Tools). С этого диска распаковываем архив с ПО на рабочий стол. Запускаем терминал и в нем набираем:

<имя пользователя>@<имя машины>:~$ sudo <путь до файла>\vmware-install.pl —default

Скрипт запустится и далее в ответ на все вопросы нажимаем «Enter» — ПО будет установлено с параметрами по умолчанию.

2) Настройка сервера USB ключей.

Запускаем терминал. Дальнейшие действия – из командной строки.

· Загружаем следующие модули.

<имя пользователя>@<имя машины>:~$ sudo modprobe usbip

<имя пользователя>@<имя машины>:~$ sudo modprobe usbip_common_mod

· Запускаем usbip в качестве системного демона:

<имя пользователя>@<имя машины>:~$ sudo usbipd —D

получаем:

Bind usbip.ko to a usb device to be exportable!

<имя пользователя>@<имя машины>:~$

USBIP готов к использованию.

· Далее подключаем 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 устройстве с вашей системы удаленным клиентам.

Настройка сервера закончена. В случае необходимости можно добавлять и убиратьэкспортируемые устройства.

Параметры USBIP – linux сервераUsage: usbip_bind_driver [OPTION]

-?, —help вызовсправки
—usbip busid make a device exportable
-other busid use a device by a localdriver
—list print usb devices and theirdrivers
—list2 print usb devices and theirdrivers in parseable mode
—allusbip make all devices exportable

3) Настройки клиента MS Windows

· Скачиваем дистрибутив. Нам понадобятся обе версии – 0.1 и 0.2.

· Устанавливаем USB/IPEnumenator. Он устанавливается как произвольное системное устройство с драйверами на диске. Драйвера берем из дистрибутива версии 0.2:

Для Windows XP:

1. Распаковываем файлы в локальную папку.

2. В Панели Управления жмем «Установка Оборудования», в открывшемся Окне Приветствия Мастера жмем «Далее».

3. Выбрать «Да, устройство уже подсоединено» -> «Далее».

4. Выбрать «Добавление нового устройства»-> «Далее».

5. Выбрать «Установка оборудования, выбранного из списка вручную» -> «Далее».

6. Выбрать «Системное устройство» -> «Далее».

7. Выбрать «Установить с диска», -> «Просмотр», выбрать папку с разархивированным драйвером -> «ОК».

8. Выбрать ‘USB/IP Enumerator’, -> «Далее».

9. «Мастер готов к установке нового оборудования» -> Выбрать «Далее» -> Готово».

Для Window 7 (и 2008r2):

1. Для разрешения установки неподписанных драйверов: запускаем cmd отадминистратора и выполняем «bcdedit /settestsigningon».

2. Распаковываем файлы в локальную папку..

3. Открываем «Диспетчер Устройств».

4. Правой кнопкой на «имя компьютера» -.«Установить старое устройство» (или выбрать в меню «Действие»).

5. В открывшемся Окне Приветствия Мастера жмем «Далее».

6. Выбрать «Установка оборудования, выбранного из списка вручную» -> «Далее».

7. Выбрать «Системное устройство» -> «Далее».

8. Выбрать «Установить с диска», -> «Просмотр», выбрать папку с разархивированным драйвером -> «ОК».

9. Выбрать ‘USB/IP Enumerator’, -> «Далее».

10. «Мастер готов к установке нового оборудования» -> Выбрать «Далее» -> «Готово».

Все указанные действия также описаны в идущем с пакетом USBIP файле «usage» на английском языке.

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

Запускаем 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 устройство должно появиться в системе клиента. Окно терминала желательно не закрывать.

Параметры USBIP – windows клиентаUsage: usbip [options]

a, —attach [host] [bus_id] Attach a remote USB device
-x, —attachall [host] Attach all remote USBdevices on the specific host
-d, —detach [ports] Detach an imported USBdevice
-l, —list [hosts] List exported USB devices
p, —port List virtual USB port status
-D, —debug Print debugging information
-v, —version Show version
-?, -h, —help Print this help

Примечания: Возникавшие проблемы и их решение:

1. Я использовал версию системы 11.04 на ядре 2.6. После обновления системы до версии 11.10 (ядро 3.0.4) usbip работать перестал – выдал ошибку, что компонент не найден. Пришлось восстанавливать машину и отказываться от обновлений. С другой стороны, так как это служебная узкоспециализированная машина и доступ к ней ограничен, это было признано не критичным.

2. Поначалу hasp-ключи отказывались подключаться к клиенту, выдавая ошибку. В ходе экспериментов было установлено, что сначала необходимо запустить usbip -демон, а уже затем подсоединять к машине ключи. В дальнейшем ошибки исчезли, подключаться ключи стали в любом порядке, повторить ошибки не удалось. Это как раз одна из тех странностей, про которые я упоминал.

3. После перезагрузки ВМ клиента — сервера 1С иногда не получается подключить к нему некоторые из ключей – выдает ошибки. Возможно, это связано с зависшими на сервере HASP сессиями обмена с usb-устройствами. Лечится перезагрузкой сервера HASP и повторным пробросом ключей на клиент.

vmind.ru


Смотрите также