Прокидання USB пристроїв по мережі за допомогою USB Network Gate.

Дуже потужний інструмент у умілих руках. З різних технічних причин віртуальна машина не має прямого доступу до USB-диска за промовчанням. У цій статті знаємо, як прокинути USB-диск у віртуальну машину Hyper-V. Реалізація задуму буде нескладною, можна сказати, у два кліки. Жодних додаткових програмЯк іноді радять дивані «гуру» не потрібно, використовуємо свої особисті руки і нічого більше.

ВАЖЛИВО. Змінні, тобто removable-пристрою ми прокинути у ВМ не зможемо, хоча і є деякі хитрощі щодо цього, але зараз не про це. Наш алгоритм працює тільки для USB, які показуються як fixed. Ми не можемо зробити снапшот для таких дисків.

Приступаємо до маніпуляцій




ВАЖЛИВО. Не обов'язково відключати ВМ перед додаванням жорсткого диска. Для цього існує спеціальна технологія гарячого додавання та гарячого видалення.

  1. Підключаємось до ВМ через RDP або просто відкриваємо консоль. Заходимо в керування дисками. Якщо новий на місці, то ми все робимо правильно. Перевіряємо в мережі чи він. Якщо ні, то виправляємо це, як і раніше, викликом контекстного меню. Точка монтування і букв наші розділи не мають, треба цю справу виправляти. Клацаємо на будь-який із розділів правою кнопкою та вибираємо пункт «Змінити букву диска або шлях до нього…». Вибираємо будь-яку вільну.

Прокидання USB у віртуальну машину Hyper-V закінчено, тепер ми можемо його використовувати для своїх цілей.

Дані інструкції вірні починаючи з 2 версій.

Начебто, навіщо ще щось писати, коли є офіційна інструкція? Однак тут є дещо, чого там немає.

Є два варіанти передачі USB-пристрою в гостьову систему:

  • передати «гостю» певний пристрій;
  • передати USB-порт, до якого пристрій підключено.

Прокидання USB-пристроїв

Якщо є USB ключ захисту, або зовнішній накопичувач, зручніше передавати в гостьову систему безпосередньо сам пристрій, незалежно від того, до якого USB-порту цей пристрій підключено фізично. Адже при обслуговуванні ми можемо наступного разу підключити до іншого роз'єму.

# lsusb Bus 002 Device 002: ID 8087:8000 Intel Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 8087:8008 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 004: ID 051d:0002 :0002 American Power Conversion Відсутня відсутність Power Supply Bus 003 Device 002: ID 046d:c00c Logitech, Inc. Optical Wheel Mouse Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Знаходимо потрібний нам пристрій і беремо його ID, який будемо використовувати.

У мене стояло завдання прокинути UPS.
(Ситуація, насправді не типова, швидше з серії як бути не повинно: На сервер і мережеве обладнання поставлені 2 найпростіші безперебійники для робочих станцій. UPS-и виявилися ніжними і починали голосити з приводу і без. Щоб швидко підрізати їм голос і поки не розбиратися з управлінням ДБЖ з Debian і було вирішено підчепити два безперебійники до Windows-гостей.)

На цьому етапі я виявив, що обидва потрібні мені пристрої мають однакові ID… Але пробуємо.

Пристрої, що прокидаються, прописуються в конфігураційному файлі відповідної віртуальної машини.

# nano /etc/pve/qemu-server/101.conf usb0: host=051d:0002

Перезавантажив. Пристрій підчепився, начебто все добре. Але тут згадуємо, що другий пристрій із таким самим ідентифікатором. Як їх розрізняти? Досвід показав, що якщо в дві віртуальні машинипрописати один ідентифікатор, то вони при включенні будуть відбирати один у одного один і той же пристрій. Незважаючи на те, що в host-системі є кілька USB-пристроїв із таким ідентифікатором.

Ось тут ми й згадуємо, що є інший спосіб прокидання.

Прокидання USB-портів

Необхідно визначити, до якого саме порту підключено потрібне нам пристрій.

Перший спосіб:

# lsusb -t /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 48 Port 4: Dev 2, If 0, Class = HID, Driver = usbhid, 1.5M | Port 7: Dev 3, If 0, Class = HID, Driver = usbfs, 12M | Class=HID, Driver=usbfs, 12M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/ 8p, 480M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M | __ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M

Як пізніше з'ясувалося, потрібні мені пристрої сидять на шині 3, порти 7 і 8. Але поки що нам це не очевидно і ось варіант другий:

Qm monitor qm> info usbhost Bus 3, Addr 4, Port 8, Speed ​​12 Mb/s Class 00: USB device 051d:0002, Back-UPS XS 650CI FW:892.R2.I USB FW:R2 Bus 3, Addr 3, Port 7, Speed ​​12 Mb/s Class 00: USB device 051d:0002, Back-UPS XS 650CI FW:892.R2.I USB FW:R2 Bus 3, Addr 2, Port 4, Speed ​​1.5 Mb/s Class 00: USB device 046d:c00c, USB Optical Mouse

Тут ми наочно бачимо, хто є хто. І тепер сміливо:

# nano /etc/pve/qemu-server/101.conf usb0: host=3-7

Для повноти картини доповню інструкцію прикладом з офіційної документації.

Можливий такий варіант:

Qm monitor qm> info usbhost Bus 3 , Addr 2, Port 1.2 , Speed ​​1.5 Mb/s Vendor Specific: USB device 0529:0001, HASP 2.17

На сьогоднішній день існує досить багато способів прокинути 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-ehci1,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
У вихідному файлі конфігурації віртуальної машини у вузлі <devices>видаляємо всі USB контролери та додаємо наступний блок:

До речі, якщо ви використовуєте 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= =usbredirdev2,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3
Для libvirt
У вихідному файлі конфігурації віртуальної машини у вузлі <devices> додаємо наступні опції, крім контролерів, визначених нами раніше:

Тепер все готове для здійснення прокидання.

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

Пакет 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
Цей блок розміщується перед тегом </devices>, поруч із контролерами визначеними нами раніше:
Його також можна виконати командою 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=usbre 0, debug = 4
Щоб відключити флешку достатньо такої команди:
device_del usbredirdev1

На цьому все, після цих кроків ваша ВМ побачить вашу флешку і зможе з нею працювати.

Якщо пристроїв багато і всі вони однакові

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

Я вирішив її за допомогою udev.
До речі, якщо ви не зовсім розумієте як працює udev, на Debian Wiki є класна

І так приступимо

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

Запустимо udev-монітор:
$ udevadm monitor --environment --udev
І вставимо наш пристрій, після цього ми відразу побачимо список змінних цього пристрою, які udev люб'язно ініціалізував для нас:
... UDEV add /devices/virtual/bdi/8:16 (bdi) ACTION=add DEVPATH=/devices/virtual/bdi/8:16 ID_SERIAL_SHORT=11C130317234004B SEQNUM=4352 SUBSYSTEM=bdi USEC_IN9
Інформацію про серійник та інші атрибути можна отримати й іншим способом, але варто враховувати, що для написання правил ми будемо використовувати саме змінні з команди вище, а не атрибути з команди нижче. В іншому випадку не буде відпрацьовувати тригер 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", ENVID )="11C130317234004B", RUN+="/usr/bin/fuser -k 4000/tcp"

Перезавантажимо udev-правила:
$ udevadm control --reload-rules
Готово, тепер при підключенні нашого пристрою, воно буде автоматично нишпорити на потрібний нам порт, а при відключенні usbredirserver буде припиняти свою роботу.
За аналогією додаємо й інші пристрої.

На цьому все. Дякую за проявлений інтерес:)

Один із читачів блогу - 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 () для роботи вимагає наявності 2х налаштованих машин: сервера (до нього безпосередньо підключається ключ) та клієнта (на нього цей ключ прокидається). Серверна
частина USBIP існує лише під Linux, клієнтська – під Linux та Windows (включаючи 7 та 2008R2).

1) Встановлення сервера (машини, до якої підключено) USB пристроїво).

Як сервер використовуємо машину з встановленим Linux. Я використовував Linux Ubuntu v.11.04 (збірка Lubuntu, яка декларується як найменш вимоглива до ресурсів) як найбільш просту (для мене) систему: ставиться без будь-яких проблем, автоматично підчіплює нові пристрої, що підключаються, після установки за замовчуванням інстальовані необхідні компоненти, крім того, 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

2) Налаштування сервераUSBключів.

Запускаємо термінал. Подальші дії – з командного рядка.

· Завантажуємо наступні модулі.

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

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

· Запускаємо usbip як системний демон:

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

отримуємо:

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

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

Увага! Необхідно спочатку запустити демон, а потім підключати пристрої, інакше можуть виникнути помилки на клієнті при підключенні. (Див. примітки)

· Для перегляду підключених 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

-?, -help виклик
довідки
-usbip busid make a device exportable
-other busid use a device by a local
driver
-list print usb devices and their
drivers
-list2 print usb devices and their
drivers 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. Вибрати "Встановлення обладнання, вибраного зі списку вручну" -> "Далі".

7. Вибрати "Встановити з диска", -> "Перегляд", вибрати папку з розархівованим драйвером -> "ОК".

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

Для Windows 7 (і 2008r2):

1. Для дозволу встановлення непідписаних драйверів: запускаємо CMD від
адміністратора та виконуємо "bcdedit /settestsigningon".

2. Розпакуємо файли в локальну папку.

3. Відкриваємо «Диспетчер пристроїв».

4. Правою кнопкоюна "ім'я комп'ютера" -. "Встановити старий пристрій" (або вибрати в меню "Дія").

5. У Вікні Вітання Майстра, що відкрилося, тиснемо «Далі».

6. Вибрати "Встановлення обладнання, вибраного зі списку вручну" -> "Далі".

8. Вибрати "Встановити з диска", -> "Перегляд", вибрати папку з розархівованим драйвером -> "ОК".

10. "Майстер готовий до встановлення нового обладнання" -> Вибрати "Далі" -> "Готово".

Всі зазначені дії також описані в файлі «usage», що йде з пакетом USBIP, англійською мовою.

· Підключаємо USB пристрої, позначені як експортовані на потрібному сервері. Для підключення використовуємо USBIP з дистрибутива версії 0.1

Запускаємо CMD. Дивимося, які пристрої готові до підключення:

path-to-usbip :> usbip.exe -l

(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. Пристроїв може бути і більше.

pathtousbip:> usbip . exe a < server ip > USB ID

USB-ID у разі 2-1.

Отримуємо багатобукв (листинг параметрів) та на завершення:

New usb device attached to usbvbus port 2

USB-пристрій має з'явитися в системі клієнта. Вікно терміналу бажано не зачиняти.

ПараметриUSBIP – windowsклієнта Usage: usbip

a, -attach Attach a remote USB device
-x, -attachall Attach all remote USB
devices on the specific host
-d, -detach Detach an imported USB
device
-l, -list 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С іноді не вдається підключити до нього деякі ключі - видає помилки. Можливо, це пов'язано із сесіями обміну з usb-пристроями, що зависли на сервері HASP. Лікується перезавантаження сервера HASP і повторним прокиданням ключів на клієнт.

Ноутбуки