Проброс usb устройства linux

Настройка USB-сервера Ubuntu на базе usbip

В инструкции описан процесс настройки бесплатного решения для редиректа USB устройства с сервера на любой другой компьютер сети. Это может пригодиться, например, для проброса USB токена на виртуальную машину или несетевого принтера. В рамках примера сервер будет на Linux Ubuntu, клиент — на Windows (проверено на 7, 10, Server 2008 и 2012).

Установка и запуск

В Ubuntu установка инструмента проброса USB выполняется следующей командой:

apt-get install linux-tools-`uname -r`

* в моем случае была выполнена установка linux-tools-4.4.0-128-generic, где 4.4.0-128-generic — версия ядра, используемого в Ubuntu.

Подгружаем модули драйверов USB:

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

Смотрим список подключенных USB устройств:

root@usb:/usr/src# usbip list -l
— busid 2-1.3 (8564:1000)
Transcend Information, Inc. : JetFlash (8564:1000)

— busid 2-1.4 (1c4f:0026)
SiGma Micro : Keyboard (1c4f:0026)

Теперь можно расшарить флешку:

usbip bind -b 2-1.3

Должны увидеть на подобие:

usbip: info: bind device on busid 2-1.3: complete

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

Выполним настройку на базе операционной системы Windows.

Скачиваем драйвер и утилиту для Windows. Распаковываем архив usbip.zip.

Открываем диспетчер устройств (команда devmgmt.msc или правой кнопкой по Этот компьютер в проводнике — УправлениеДиспетчер устройств).

Кликаем по ДействиеУстановить старое устройство:

Выбираем ручную установку устройства — показать все устройства — Установка с диска и выбираем файл USBIPEnum.inf (находится в каталоге usbip, который мы распаковали ранее).

Будет обнаружено устройство USB/IP Enumerator — кликаем Далее, чтобы его установить. Мы должны его увидеть среди системных устройств.

Теперь открываем командную строку (cmd.exe) и переходим в распакованный каталог, например:

* где C:\Users\user\Downloads\usbip — полный путь до папки.

Смотрим список расшаренных USB устройств на сервере:

usbip -l 192.168.0.15

* где 192.168.0.15 — IP-адрес сервера USB.

Мы получим ответ, на подобие этого:

C:\Users\user\Downloads\usbip>usbip -l 192.168.0.15
— 192.168.0.15
2-1.3: unknown vendor : unknown product (8564:1000)
: /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3
: (Defined at Interface level) (00/00/00)

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

usbip.exe -a 192.168.0.15 2-1.3

* если увидим ошибку . cannot find device, переходим к решению.

Автозапуск

Данная инструкция предполагала разовый запуск как сервера, так и клиента. После перезапуска системы, работоспособность будет потеряна до повторного ввода команд. Попробуем настроить автоматический запуск сервера и клиента.

Автозапуск сервера

Добавляем модули в автозапуск:

Читайте также:  Linux для старого ноута

usbip-core
usbip-host
vhci-hcd

Создаем юнит в systemd:

[Service]
ExecStart=/scripts/usbipd
Type=oneshot
RemainAfterExit=yes

Перечитываем конфигурацию systemd и разрешаем запуск созданного нами юнита:

systemctl enable usbipd

Создаем каталог хранения скрипта и сам скрипт:

usbipd -D
usbip bind -b $bindID

usbip attach —remote=localhost —busid=$bindID
sleep 2
usbip detach —port=00

Разрешаем запуск скрипта:

chmod +x /scripts/usbipd

systemctl start usbipd

systemctl status usbipd

Для окончательного тестирования можно перезагрузить сервер.

Автозапуск клиента Windows

Пишем небольшой батник:

cd C:\Users\user\Downloads\usbip
usbip.exe -a 192.168.0.15 2-1.3

* C:\Users\user\Downloads\usbip — путь, где хранится распакованная утилита; 192.168.0.15 — адрес сервера USB; 2-1.3 — идентификатор USB устройства на сервере.

Сохраняем скрипт с расширением bat или cmd. Запускаем планировщик заданий и добавляем новую задачу.

На вкладке Общие отмечаем Выполнять вне зависимости от регистрации пользователя и ставим галочку Выполнить с наивысшими правами:

В триггерах выбираем При запуске системы:

На вкладке Действия выбираем Запуск программы и прописываем путь до скрипта, который мы сохранили ранее:

На вкладке Параметры ставим галочку При сбое выполнения перезапускать через и снимаем галочку Останавливать задачу, выполняемую дольше:

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

Возможные проблемы

1. usbip_common_mod.ko and usbip.ko must be loaded

Ошибка появляется при попытке выполнить usbipd -D.

Причина: был установлен пакет usbip вместо linux-tools- .

Решение: удаляем usbip:

apt-get remove usbip

Ставим нужный пакет:

apt-get install linux-tools-`uname -r`

2. /usr/sbin/usbipd: No such file or directory

Данная ошибка также появляется при попытке выполнить usbipd -D.

Причина: Нужный бинарник для запуска находится по другому пути — /usr/bin/usbipd.

Решение: создаем симлинк:

ln -s /usr/bin/usbipd /usr/sbin/usbipd

3. usbip: error: failed to open /usr/share/hwdata//usb.ids

Выскакивает при попытке посмотреть список устройств командой usbip list -l.

Причина: необходимый файл usb.ids находится в другой директории.

Решение: создаем каталог /usr/share/hwdata:

Создаем симлинк на существующий файл:

ln -s /usr/share/misc/usb.ids /usr/share/hwdata/usb.ids

4. usbip err . recv op_common

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

usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip.c: 216 (query_exported_devices) recv op_common
usbip err: usbip.c: 288 (show_exported_devices) query

Причина: ошибка в бинарном файле для Windows.

Решение: открыть exe-файл в HEX редакторе, например, HxD. И в адресах смещения 00000CBC и 00000E0A заменить 06 на 11:

5. (attach_device) cannot find device

При попытке монтирования устройства в Windows, выскакивает ошибка с похожим текстом:

usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Причина: недоработка серверного ПО — при расшаривании USB не считывается количество дескрипторов.

Решение: примонтировать устройство на сервере с последующим отмонтированием:

usbip attach —remote=localhost —busid=2-1.3

* в моем случае устройство имеет идентификатор 2-1.3.

* смотрим номер порта, на котором висит наше примонтированное устройство.

usbip detach —port=00

6. udev_device_new_from_subsystem_sysname failed

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

Читайте также:  Gpu observer windows 10

libusbip: error: udev_device_new_from_subsystem_sysname failed
usbip: error: open vhci_driver
usbip: error: query

Причина: не подключен модуль vhci-hcd.

Решение: разово выполняем команду:

и добавляем в файл /etc/modules строку vhci-hcd.

Источник

Установка usbip на ubuntu 12.04 server

Здравствуйте, сегодня я хочу рассказать вам как поставить usbip на сервер с установленной ubuntu 12.04 server.
USBIP(USB over IP) служит для проброса usb устройства по сети, будь то windows или linux клиент. Серверная часть увы только под linux.
Данное решение самый лучший, бесплатный и по моему единственный продукт позволяющий пробрасывать практически любые usb устройства.

1. Установка серверной части USBIP.
Шаги установки/настройки ubuntu 12.04 server я пропущу.
1.1 Для начала требуется обновить систему.

1.2 Добавим репозиторий с usbip. Пакет есть и в стандартном репозитории, но там он оказался не рабочим.

1.3 Установим пакет usbip и включим нужные модули.

1.4 Добавим нужные модули в автозагрузку. Для этого откроем файл /etc/modules в редакторе

и в конец добавим

1.5 Создадим init.d скрипт. Для этого скопируем /etc/init.d/skeleton

Далее отредактируем строки в /etc/init.d/usbip

После этого дадим права файлу

1.6 Добавим init.d скрипт в автозагрузку.

1.7 Пришло время запустить usbip на сервере, для этого запустим команду в консоли

Если команда не выдала ошибок, то все прошло удачно и можно приступать к пробросу usb устройства.

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

Должно вывести что то похожее

где 1-2 id устройства, (8564:1000) ID устройства.
Для того что бы узнать какие устройства usb у вас подключены введите команду lsusb

Я буду пробрасывать устройство с ID 8564:1000 т.к. это моя usb флешка. Далее вводим команду:

Если вы увидели такой же ответ как и у меня значит все прошло удачно.

Теперь разрешим на файрволе подключаться к usbip демону который занял TCP порт 3240.

Можно подключаться к этому устройству удаленно.

3. Подключение устройства под Windows.
3.1 Установка драйвера.
Для начала вам потребуется скачать драйвера и exe’шник по этой ссылке
Распакуйте архив в папку c:\usbip для удобства. Теперь надо установить универсальный драйвер. Делается это легко(я опишу процесс только для win7 и win2k8r2):
Зайдите в Диспетчер устройств, в верхнем меню выберите Действие > Установить старое устройство
Везде жмите далее пока диспетчер не предложит Установить с диска.
Выбираем данный пункт, жмем обзор и идем в папку c:\usbip, там выбираем USBIPEnum.inf.
Устанавливаем данный драйвер. Переходим к следующему пункту.
3.2 Подключаем устройство.
Любым любимым способом открываем cmd.exe
далее вводим

Должно вывести примерно такое

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

И далее должно начаться подключение нового устройства.

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

Читайте также:  The username or password is incorrect windows

Источник

Пробрасываем USB–ключ в облако (Linux клиент — Linux сервер)

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

Давайте посмотрим, как реализовать проброс USB–ключа по сети в виртуальную машину с Linux в облаке Azure Pack Infrastructure от InfoboxCloud.

Раз подключить ключ к виртуальной машине нельзя — его нужно подключить к чему-то реальному. Есть аппаратные решения, например AnyWhere USB, но заказчик выбрал более универсальное решение: выделенный сервер в ЦОД Infobox (что для одного ключа получилось дешевле — аппаратные требования к выделенному серверу для такой задачи минимальны — можно использовать самый дешевый сервер с софтовым Raid).

Для проброса использовалось ПО USB Redirector (версия для Linux бесплатна). На выделенный сервер и в виртуальную машину в облаке была установлена Ubuntu 16.04 LTS и были применены все обновления.

Для установки USB Redirector потребуются исходные тексты ядра, установите их:

Теперь необходимо отключить обновления ядра ОС, так как они могут сломать работу USB Redirector (служба проброса после обновления ядра не будет запускаться до переустановки), если необходимо — их можно устанавливать вручную переустанавливая USB Redirector.

Установка и настройка USB Redirector на сервере с подключенным ключом USB

Скачайте USB Redirector:

Перейдите в папку с ним:

Разрешите запуск инсталлятора:

Если все прошло корректно, вы увидите сообщение об этом.

Добавьте службу проброса в автозагрузку, если ранее этого не произошло:

Подключив USB–ключ к выделенному серверу проверим какие USB–устройства доступны:

Есть 2 варианта расшарить устройство по сети.

В этом случае мы привязываемся к конкретному id устройства и порту, если включить usb-ключ в другой порт сервера — номер usb порта сменится и работать не будет.

В этом случае мы привязываемся только к id устройства. Теперь USB–устройство расшарено по сети.

Конечно делать его доступным для всех пользователей Интернет не правильно, поэтому добавим ограничения в firewall:

Где вместо *.*.*.* нужно написать адрес сервера, с которого разрешено подключение.

Установка клиента USB Redirector в облаке

Скачайте USB Redirector:

Перейдите в папку с ним:

Разрешите запуск инсталлятора:

Если все прошло корректно, вы увидите сообщение об этом.

Добавьте службу проброса в автозагрузку, если ранее этого не произошло:

Теперь добавим наш сервер:

Где вместо **.**.**.** нужно указать ip–адрес сервера.

Теперь можно посмотреть список доступных устройств:

Видим, что на сервере 1 доступно устройство 1.

Включаем автоматическое соединение с устройством:

USB–ключ был успешно проброшен в виртуальную машину в облаке.

Источник

Оцените статью