- Как расшарить USB по сети в Linux
- Usb Network Gate
- Установка Usb Newtork Gate
- Раздача USB устройств по сети
- USBIp
- Установка usbip
- Настройка сервера
- Укрощаем USB/IP
- Часть первая, историческая
- Часть вторая, серверно-линуксовая
- Часть третья, клиентская и запутанная
- USB Network Gate 4.0 for Linux — an essential accessory for working with remote USB ports over network
- Here are a couple of examples when USB Network Gate for Linux can be used:
Как расшарить USB по сети в Linux
Иногда бывает необходимо получить доступ к USB устройству подключенному к одному из компьютеров сети. Это может быть флешка данные из которой нужно скопировать на один из компьютеров или в виртуальную машину или же, как более сложный вариант — usb принтер который нужно сделать доступным по сети для нескольких устройств.
В этой статье мы рассмотрим несколько программ позволяющих реализовать такую возможность. Одной из них будет USB Network Gate. Это платная программа, но она позволяет расшарить устройства usb по сети в Linux очень быстро и просто. У программы удобный графический интерфейс и очень простая настройка. Также рассмотрим свободную альтернативу usbip, с помощью которой можно расшарить usb по сети в терминале. Начнем с коммерческой программы.
Usb Network Gate
Usb Network Gate — это программа от Elitma Software, позволяющая получить доступ к любым USB устройствам подключенным к вашему компьютеру через сеть. При чем это может быть не только локальная сеть но и интернет.
У программы кроме версии для Linux есть версии для Windows, Mac и даже приложение для Android. Лицензия с возможностью передать по сети один USB порт стоит $89.99 но у нее есть пробный период размером 14 дней. После окончанию пробного периода вы не можете расшаривать свои устройства, но зато можете подключать уже розданные.
Установка Usb Newtork Gate
Установка USB Network Gate в Linux выполняется очень просто. Скачать установочный пакет для своего дистрибутива можно на официальном сайте.
Здесь достаточно просто нажать кнопку скачать, а затем выбрать версию для своего дистрибутива:
После завершения загрузки, для установки перейдите в папку с файлом и выполните:
dpkg -i usb_network_gate.deb
rpm -i usb_network_gate.rpm
Для RedHat и других использующих rpm систем. Возможно для работы программы понадобится библиотека libudev.so.0, если такой версии библиотеки нет в вашей системе создайте ссылку на libudev.so.1 следующей командой:
ln -s /usr/lib/libudev.so.1 /usr/lib/libudev.so.0
Раздача USB устройств по сети
Запустить программу можно из главного меню или выполнив в терминале:
Главное окно программы выглядит вот так:
Чтобы расшарить USB устройство по сети достаточно кликнуть по нему правой кнопкой мыши и выбрать в контекстном меню пункт Share.
В открывшимся окне можно увидеть информацию об устройстве и указать дополнительные настройки, например стоит ли использовать шифрование, сжатие или пароль для аутентификации соединения:
На удаленной машине, чтобы подключить наше устройство, сначала нужно его найти. Для этого перейдите на вкладку Remote USB Devices и нажмите кнопку Find:
В открывшимся окне, если компьютеры находятся в локальной сети можно просто нажать Find All, если же нет нужно указать ip адрес компьютера на котором расшаренно USB устройство, а затем нажать кнопку Find:
Дальше остается только добавить выбранное устройство с помощью кнопку Add remote device.
Чтобы подключить USB просто выберите в контекстном меню опцию Connect:
Дальше вы увидите, что состояние изменилось на Connected, а к системе было подключено новое USB устройство:
Чтобы его отключить просто выберите опцию Disconnect.
USBIp
Это бесплатная утилита с открытым исходным кодом для доступа к USB устройствам по сети. Она во многом проигрывает USB Network Gate, в основном через отсутствие графического интерфейса и сложной настройки.
Установка usbip
Устанавливается программа из официальных репозиториев:
sudo apt install linux-tools-generic
Или для Red Hat:
sudo yum install usbip
Нужно следить чтобы версия программы подходила к вашему ядру, потому что новые версии обычно не совсем совместимы со старыми версиями ядра. Например на данный момент для ядра 4.2 актуальна версия 2.0. Поэтому соблюдайте совместимость и все будет работать, а если не работает вы уже знаете в чем проблема.
Настройка сервера
Загрузим нужные модули ядра:
sudo modprobe usbip-host
sudo modprobe usbip-core
Программа готова к использованию. Теперь с помощью lsusb находим наше устройство:
Bus 002 Device 014: ID 13fe:5500 Kingston Technology Company Inc
Нам нужна пара VendorID:DeviceID, вот она: 13fe:5500. Теперь выполните:
sudo usbip list -l
— busid 2-2 (13fe:5500)
2-2:1.0 -> usb-storage
— busid 4-1 (0458:0708)
4-1:1.0 -> usbhid
4-1:1.1 -> usbhid
— busid 4-3 (09da:9090)
4-3:1.0 -> usbhid
4-3:1.1 -> usbhid
Программа просканирует все подключенные устройства и покажет и в нужном формате, вместе с их busid. Опция -l указывает что нужно сканировать локальные устройства. Как видите наше USB устройство первое в списке.
Теперь, когда мы знаем busid можно расшарить USB устройство по сети в Linux:
usbip bind -b 2-2
usbip: info: bind device on busid 2-2: complete
Готово, наше USB устройство расшарено, осталось подключить его на клиентской машине. Смотрим список доступных устройств:
sudo usbip list -r 192.168.56.1
Exportable USB devices
======================
— 192.168.56.1
2-2: Kingston Technology Company Inc. : unknown product (13fe:5500)
: /sys/devices/pci0000:00/0000:00:13.2/usb2/2-1
: (Defined at Interface level) (00/00/00)
После -r нужно указать ваш IP адрес. Осталось подключить наше устройство:
sudo usbip attach -r 192.168.56.1 -b 2-2
Чтобы отключить устройство нужно сначала узнать его порт:
sudo usbip port
sudo usbip detach 00
И прекращаем шаринг устройства по сети на сервере:
sudo usbip unbind -b 2-2
Вот и все. Как видите работать с консольной программой намного сложнее, но для тех кто не хочет тратить деньги на лицензию, она станет отличным решением. Теперь вы сможете без проблем например расшарить принтер по сети в Linux или любое другое USB устройство не зависимо от используемого дистрибутива.
Источник
Укрощаем 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 в минимальной конфигурации, стандартное движение руками:
Установились. Дальше интернет подсказывает, что нужно бы загрузить модуль usbip, но — здравствуйте, первые грабли. Нет такого модуля. А всё оттого, что большинство руководств в сети относятся к более старой ветке 0.1.x, а в крайней 0.2.0 модули usbip имеют другие названия.
Ну и добавим в /etc/modules такие строки, чтобы загружать их автоматически при старте системы:
Запустим сервер usbip:
Дальше всемирный разум нам подсказывает, что в комплекте с usbip идут скрипты, позволяющие нам управлять сервером — показать, какое устройство он будет расшаривать по сети, посмотреть статус, и так далее. Тут нас поджидает еще один садовый инструмент — эти скрипты в ветке 0.2.x, опять же, переименованы. Получить список команд можно с помощью
Почитав описание команд, становится понятно, что для того, чтобы расшарить требуемый USB-девайс, usbip хочет узнать его Bus ID. Уважаемые зрители, на арене грабли номер три: тот Bus ID, который выдаст нам lsusb (казалось бы, самый очевидный путь) — ей не подходит! Дело в том, что железки вроде USB-хабов usbip игнорирует. Поэтому, воспользуемся встроенной командой:
Примечание: здесь и далее в листингах я буду всё описывать на примере моего конкретного USB-ключа. Ваши название железки и пара VID:PID могут и будут отличаться. Моя называется Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7.
Теперь мы можем расшарить наше устройство:
Троекратное ура, товарищи! Сервер расшарил железку по сети, и мы можем её подключать! Осталось только дописать автозапуск демона usbip в /etc/rc.local
Часть третья, клиентская и запутанная
Подключить расшаренное устройство по сети к машине под управлением Debian я попробовал сразу же на том же сервере, и всё прекрасно подключилось:
Переходим к Windows. В моем случае это был Windows Server 2008R2 Standard Edition. Официальное руководство просит сначала установить драйвер. Процедура прекрасно описана в прилагаемом к windows-клиенту readme, делаем всё как написано, всё получается. На XP тоже работает без каких-либо трудностей.
Распаковав клиент, пробуем примонтировать наш ключик:
Ой-ой. Что-то пошло не так. Используем навык гугла. Встречаются отрывочные упоминания, что что-то там не так с константами, в серверной части разработчики при переходе на версию 0.2.0 изменили версию протокола, а вот в клиенте под Win сделать это забыли. Предлагаемое решение — поменяйте константу в исходнике и пересоберите клиент.
Вот только очень мне не хочется качать Visual Studio ради этой процедуры. Зато у меня есть старый-добрый Hiew. В исходнике константа объявлена как двойное слово. Поищем в файле 0х00000106, заменяя на 0х00000111. Не забываем, порядок байт обратный. Итог — два совпадения, патчим:
На этом можно было бы закончить изложение, но музыка играла недолго. Перезагрузив сервер, я обнаружил, что устройство на клиенте не монтируется!
И всё. На это мне не смог ответить даже всезнающий гугл. А при этом команда отобразить доступные на сервере устройства вполне корректно показывает — вот он, ключ, можете монтировать. Пробую примонтировать из-под Linux — работает! А если теперь попробовать из-под Windows? О ужас — это работает!
Источник
USB Network Gate 4.0 for Linux — an essential accessory for working with remote USB ports over network
Do you still think that to work with a certain USB device you have to have it physically attached to your computer? In this case you haven’t heard of USB Network Gate yet! USB Network Gate is available for different platforms, which includes USB Network Gate for Linux. The latest version 4.0 allows working with any USB device even in those «seems impossible» situations when a USB device is oceans away from you.
With USB Network Gate for Linux one can share any USB device on a computer (server) and then access this device from a remote location (client machine) and use it as easily as if this device was plugged into client computer directly. The technology works over Internet/LAN/WAN types of networks.
This means that no matter how many office workers need to use the same device and how far they are from each other and the device itself, you won’t need to invest in more devices — everyone can access and use the device and all of its properties.
In case you were wondering what server and client parts are, they are all combined in one application, you just choose which one to set up on every computer. Pretty convenient and no special knowledge is needed.
Here are a couple of examples when USB Network Gate for Linux can be used:
Now anyone who has USB Network Gate installed on other machines in the office (clients) can connect to and work with this device as if it was attached directly to their computers. The computers won’t «see» any difference and will treat the device as physically attached.
A really nice feature is that all «clients» can see who is currently occupying the device, which helps in case someone has forgotten to disconnect from it after they were done using the device.
If needed, a password can be set for a controlled remote access to the device.
Work with USB devices in a virtual session
When you switch to a virtual session on your computer, you can’t use your USB devices there even though they are right here, plugged into your computer. Even though there is a possibility to redirect USB devices from a host operating system to a guest one (virtual environment), the number of the virtual machine’s USB ports is not sufficient in many cases. With USB Network Gate for Linux however there is no effort at all in using your USB devices in virtual environment.
Access USB over RDP
It is not so uncommon to work on a remote machine via Remote Desktop Protocol, but when it comes to connecting to a remote computer and trying to use your local USB devices there as if they were physically connected to a remote machine it is not that common and easy anymore. However USB Network Gate makes using USB over RDP as easy as pie no matter if the USB device is connected to your local computer, or is in the building across the road, or overseas.
USB Network Gate also provides a perfect solution for the users of thin clients and blade servers letting them share USB devices plugged into thin client or a blade server and then providing access to them on a remote desktop.
Источник