Вы просматриваете: Главная > Без рубрики > Как пробросить USB устройство на удаленную машину в Linux.

Как пробросить USB устройство на удаленную машину в Linux.

Особенность Unix-подобной системы — относиться к любому из своих компонентов как к файлу — давно уже стала общим местом в разговорах о ее внутреннем устройстве. И бесчисленное количество статей о том же Linux тому свидетельство. Оборудование — не исключение. Видеокарта, аудиокарта, внешний девайс, подключенный через USB, в понимании Linux не что иное, как файл.

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

В Plan 9 за проброс оборудования отвечает RPC-протокол 9P. Он обеспечивает доступ вообще к любым файлам и устройствам, как локальным, так и сетевым. К сожалению, Linux похвастать таким универсальным инструментом не может. Зато здесь есть несколько инструментов (если не сказать — костылей), обеспечивающих доступ к оборудованию удаленной машины.

USB

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

В подобном случае выручить может утилита USB/IP. Развитием утилиты уже давненько никто не занимался, но на ее работоспособности это пока не сказалось — в репозиториях большинства популярных дистрибутивов такой пакет присутствует.

Первым делом пакет USB/IP следует установить на ту машину, доступ к устройствам которой необходимо получить извне. Далее загружаем необходимые модули:

$ sudo modprobe usbip-core
$ sudo modprobe usbip-host

Проверяем, все ли корректно загрузилось:

$ sudo lsmod | grep usbip

И запускаем сервер:

$ sudo usbipd -D

Поскольку USB/IP имеет собственную, независимую от встроенной систему адресации, поиск устройств выполняется командой

$ sudo usbip list -l

Она покажет список всех устройств, подключенных в данный момент в USB-шине.

Настройка утилиты USB/IP
Настройка утилиты USB/IP

Теперь можно приступить непосредственно к расшариванию девайса (допустим, это будет веб-камера с индексом 2-3 из полученного списка):

$ sudo usbip bind --busid=2-3

Очередная проверка правильности выполненных действий:

$ sudo usbip list -r localhost

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

Итак, перейдя на клиентскую машину, устанавливаем на нее USB/IP и запускаем:

$ sudo modprobe usbip-core
$ sudo modprobe vhci-hcd

Проверяем доступность расшаренного оборудования на сервере по списку:

$ sudo usbip --list АДРЕС_СЕРВЕРА

И присоединяем нашу камеру:

$ sudo usbip --attach АДРЕС_СЕРВЕРА 2-3

Проверяем результат:

$ sudo usbip --port

Теперь удаленное USB-устройство должно появиться в списке локальных, и с ним можно будет работать, как с любым другим. Для проверки корректности подключения выполняем команду lsusb:

$ lsusb

INFO

Существует клиентская часть USB/IP для Windows. Однако из-за ошибки в версии протокола в ее исполняемом файле из коробки она работает некорректно. Требуются дополнительные телодвижения с подменой констант в исходниках.

источник

Метки:


Оставить отзыв