Расшарить usb порт по сети windows

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

Когда человек много лет рыл бункер и запасал там продукты, он должен испытывать глубокое моральное удовлетворение, если бункер понадобился. Он будет довольный заявлять: «А я говори-и-и-ил!» То же касается и того, кто делал запасы продуктов в кладовой, когда все закупались в магазинах только на сегодня. А вот с нашим комплексом для удалённой работы Redd как-то и не хочется злорадствовать. Он проектировался для удалёнки в мирное время. И использовался задолго до первых новостей из Китая.

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

Но так как сейчас удалёнка у всех на устах, возникло желание поделиться одной наработкой, которая может кому-то помочь. Это не наша разработка, я проводил исследования в рамках работы над сервисом удаленной работы с отладочными платами All-Hardware. Вот их результаты сейчас и опишу. Проект USB/IP известен многим. Но он давно свёрнут авторами. Самые свежие драйверы были под WIN7. Сегодня я опишу, где скачать вариант для WIN10, и покажу, как я его проверял. Кроме того, разработчики современного аналога уверяют, что у них сделан не только Windows-клиент, но и Windows-сервер (правда, в этом режиме я тестирование не вёл: задача того не требовала). Но кому-то это тоже может оказаться полезным.

Введение

Сначала краткий рассказ, что такое USB/IP. Это комплекс программ, которые позволяют пробросить USB-устройство через сеть. Само устройство подключено к серверу. Клиент располагается на другой машине. При этом на клиентской машине имеется приложение, совершенно не рассчитанное на работу с сетью. Оно хочет настоящее USB-устройство. И оно получает информацию, что это устройство подключено. На это устройство встаёт штатный драйвер. В общем, клиент считает, что он работает с локальным USB-устройством.

Кто-то так пробрасывает ключи защиты. Мы же проверяли возможность удалённого доступа к JTAG-адаптеру.

Проект USB/IP активно развивался до 2013 года. Затем Windows-ветка остановилась. В целом, был выпущен даже двоичный подписанный драйвер. Но он был под Windows 7. Linux-ветка же продолжила развитие, и этот сервис оказался встроенным в саму операционную систему. По крайней мере, в сборку Debian он точно встроен. Причём для Linux имеется и клиент, и сервер, а для Windows исходно был сделан только клиент. Сервер под Windows сделан не был.

Существует очень хорошая статья на Хабре, которую можно использовать и как справочник по работе с данным сервисом, и как отзыв о работе с ним.

Вариант под актуальную версию Windows

Но как бы ни была хороша Windows 7, а она уже мертва. В рамках работ над All-Hardware мы рассматривали разные варианты решения одной из проблем, и надо было просто проверить ряд альтернатив по принципу «подойдёт — не подойдёт». Тратить много человеко-часов на проверку было невозможно. А переделка драйвера под Windows 10 могла затянуть в себя. Поэтому был проведён поиск в сети, который вывел на проект usbip-win. На момент его обнаружения свежий вариант был датирован 23 февраля 2020 года, то есть проект живой. Он может быть собран и под WIN7, и под WIN10. К тому же, в отличие от оригинального проекта, может быть собран не только Windows-клиент, но и Windows-сервер.

Я проверил, проект прекрасно собирается и устанавливается, поэтому дальнейшая работа велась с ним. В файле readme есть ссылка на готовый двоичный код для тех, кто не хочет самостоятельно производить сборку.

Грустная часть проверки: серверная часть

Сначала я расскажу, как проводилась проверка в рамках нашего проекта. Там всё кончилось не очень хорошо. Проверяли адаптер ST-LINK, установленный в корпус комплекса Redd, благо я уже отмечал, что в комплексе используется ОС Linux сборки Debian, а эта сборка содержит встроенный сервис USB/IP.

Согласно статье, устанавливаем сервис:

sudo apt-get update 
sudo apt-get upgrade 
sudo apt-get install usbip

Дальше в статье подробно рассказано, как автоматизировать процесс загрузки сервиса. Как я разбираюсь в Линуксе, я уже многократно писал. Плохо разбираюсь. У меня нет привычки с умным лицом цитировать чужие тексты, слабо понимая суть. Поэтому я ещё раз напомню ссылку на замечательную статью, где всё рассказано, а сам покажу, что делал я при каждом старте ОС (благо всё было нужно только для проверки):

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo usbipd -D

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

Теперь смотрим, как зовут устройство:

user@redd:~$ sudo usbip list -l
- busid 1-3 (046d:082d)
   Logitech, Inc. : HD Pro Webcam C920 (046d:082d)

 - busid 1-4 (1366:0101)
   SEGGER : J-Link PLUS (1366:0101)

 - busid 1-5.1 (067b:2303)
   Prolific Technology, Inc. : PL2303 Serial Port (067b:2303)

 - busid 1-5.4.1.1 (0483:5740)
   STMicroelectronics : STM32F407 (0483:5740)

 - busid 1-5.4.1.3 (0483:3748)
   STMicroelectronics : ST-LINK/V2 (0483:3748)
<...>

Получается, что нам нужно устройство и busid, равным 1-5.4.1.3.

Даём команду:

sudo usbip bind --busid=1-5.4.1.3

Всё, сервер готов к работе.

Грустная часть проверки: клиентская часть

В Windows устанавливаем драйвер (делаем это только один раз, дальше он будет всегда установлен). Для этого запускаем от имени администратора файл usbip.exe с аргументом install:

usbip.exe install

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

usbip.exe list --remote=192.168.10.123

Убеждаемся, что оно присутствует в списке. Ну, и подключаем его:

usbip.exe attach --remote=192.168.10.123 --busid=1-5.4.1.3

В менеджере устройств появляется новое USB-устройство, Keil его прекрасно видит…

Но на этом всё приятное кончается. Небольшая программа заливается во флэшку около минуты. Попытки шагать по строкам идут от 5 до 20 секунд на каждую строку. Это неприемлемо. Во время паузы в обе стороны идёт трафик примерно 50 килобит в секунду. Долго и вдумчиво идёт.

Честно говоря, ограничение по времени привело к тому, что я только предполагаю, почему всё было так плохо. Подозреваю, что там по сети бегает JTAG-трафик. А он бегает небольшими пакетами в обе стороны, отсюда и проблемы. Так было завершено исследование с результатом: «Для проекта не подходит».

Более весёлая часть: подготовка

Ещё тогда мне запало в голову, что я краем глаза видел, что в JTAG-адаптере CMSIS DAP по USB ходит не чистый JTAG-трафик, а команды. Сам JTAG-трафик формируется уже внутри адаптера. Давно хотел проверить это, да всё руки не доходили. Массовый перевод на удалёнку заставил это сделать (возникла задачка). Что такое CMSIS DAP? Это JTAG-адаптер, рекомендованный самой компанией ARM для контроллеров Cortex-M. Исходные коды для разных контроллеров выложены на GitHub, можно спаять адаптер на базе любого из них. Я сейчас дам ссылку на клон проекта, адаптированный под макетную плату «Голубая пилюля»: https://github.com/x893/CMSIS-DAP, но поисковые системы могут вывести и на официальный аккаунт ARM.

Чтобы не тратить на сервер целую PC, для проверки, я сделал этакий комплекс Yelloww (чисто по цвету пластика, из которого сделан корпус):

Роль сервера выполняет Raspberry Pi с установленной ОС Raspbian (это тот же Debian, а значит, там имеется требуемый сервер). Одна из «голубых пилюль» выступает в роли адаптера CMSIS DAP, вторая — в роли отлаживаемого устройства.

Точно так же ставим и настраиваем сервис. Разве что здесь список устройств, допустимых к экспорту, намного скромнее:

pi@raspberrypi:~ $ sudo usbip list -l
 - busid 1-1.1 (0424:ec00)
   Standard Microsystems Corp. : SMSC9512/9514 Fast Ethernet Adapter (0424:ec00)

 - busid 1-1.4 (c251:f001)
   Keil Software, Inc. : unknown product (c251:f001)

Понятно, что здесь экспортируем и импортируем устройство busid=1-1.4.

И вот тут конкретно с CMSIS DAP у меня периодически возникает небольшая проблемка. В менеджере устройств я вижу такую неприятность:

Напомню, что статья пишется по принципу «Лучше неплохая, но сегодня, чем идеальная, но завтра». Проблемы удалённой работы возникают прямо сейчас. Надеюсь, в обозримом будущем они уже будут не актуальны. А пока актуальны — показываю, как я обхожу данную проблему вручную. Сначала я отключаю устройство:

Затем сразу же включаю:

И оно начинает работать без проблем. В Keil меняем отладчик на CMSIS DAP:

И вот он:

При работе по локальной сети всё просто летает. Но понятно, что локальная сеть никому не интересна. Я попробовал пробросить порт устройства у себя дома, а затем удалённо зайти на машину на работе и потрассировать «прошивку» оттуда. Связь у моего домашнего провайдера весьма и весьма тормозная, особенно — от меня наружу. Прошивается контроллер примерно втрое медленнее, чем при прямом подключении к USB. Трассировка… Ну около секунды на строку, точно не больше. В общем, терпимо. С хорошими провайдерами, надеюсь, будет лучше.

Заключение

Проект usbip-win является современной заменой для проекта USB/IP. Он живёт и развивается. При этом он предоставляет для ОС Windows не только функцию клиента, но и функцию сервера. Совместимость с Linux-версией сохранена.

Устойчивость работы удалённого USB-устройства неожиданно поразила. Я был уверен, что возникнут таймауты. Возможно, где-то они и возникнут, но для JTAG-адаптеров не было замечено ни одного сбоя. К сожалению, не все USB-устройства могут быть проброшены через сеть по причине низкого быстродействия получившейся системы. Но в случае с JTAG-адаптерами можно рассмотреть альтернативные вещи. В частности, CMSIS-DAP вместо ST-LINK.

Оба рассмотренных проекта (usbip-win и CMSIS-DAP) могут быть скачаны с GitHub в виде исходных кодов.

Если это поможет кому-то организовать удалённый доступ к оборудованию, я буду рад. Использование Raspberry Pi позволит бросить оборудование в произвольных местах.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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

В эпоху гипервизоров редко когда под какой-то сервер приложений или баз данных выделяют отдельный физический сервер. Очень часто такие сервера работают в качестве гостевой операционной системы виртуальной машины на одном из гипервизоров. Обычно в 80-90% случаев это так (данные взять на основе сугубо моего личного опыта). Проброс USB устройств в таком случае не всегда является тривиальной задачей.

Если у вас, скажем, гипервизор ESXi, то задача может быть решена без помощи стороннего ПО. Проброс USB в Hyper-V все еще не завезли.

Совсем по-другому обстоят дела, когда вам необходимо подключить удаленное USB устройство, например, на ноутбук сотрудника. Особенно, если этим устройством пользуются попеременно. Это может быть токен с ЭЦП, аппаратный ключ с лицензией на ПО.

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

Краткое описание задачи

Задача, собственно, проста. Есть порядка 5-10 USB устройств, которые будут периодически подключаться к разным клиентам. Соответственно, все эти USB устройства физически должны быть подключены к какому-то одному устройству, которое будет доступно всем клиентам. Клиенты же уже в порядке живой очереди будут “разбирать” пул доступных устройств.

В силу особенностей работы 1 USB устройство в один момент времени будет подключено только к одному клиенту.

Если у вас исключительно Linux окружение, то вы можете использовать встроенное решение USB/IP.

Выбор решения

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

Скажу сразу – решение платное (49$). Однако, лицензируется сервер целиком, т.е. нет ограничений на количество подключенных устройств. Без лицензии в один и тот же момент времени можно использовать только одно USB устройство. Для настройки PoC (Proof of Concept) решения этого достаточно. Вы сможете проверить – подойдет ли вам этот продукт или нет.

Почему VirtualHere?

Аргументы в сторону выбора этого решения:

  1. Большой выбор серверной части – Window, Linux, Android, OSX.
  2. До безобразия простая настройка сервера.
  3. Достаточно большой набор клиентов. Есть клиент под Windows, Linux, Mac OS и Android.
  4. Клиент может быть запущен как сервис.
  5. У клиента есть как графический вариант, так и консольный аналог.
  6. У клиента есть свой API.
  7. Относительно гуманная стоимость – 49$.
ВАЖНО: В Linux CentOS 8 и 9 из коробки нет модуля vhci_hcd. Поэтому нужно либо добавлять этот модуль вручную. Либо использовать контейнеры. Признаюсь честно, я потратил около 2-х часов на то, чтобы попробовать реализовать какой-то из этих вариантов, но из этого толком ничего не получилось. Пробовал даже сторонний модуль vhci_hcd от elrepo. Насколько я понял, модуль от elrepo не работает на ядре 4.18.0-394, а рассчитан на работу с более старой версией ядра. Но это только мои догадки - не так много у меня опыта работы с Linux. Если у кого-то получилось запустить клиент на CentOS 8 или 9 - поделитесь в комментариях опытом.

В качестве физической коробки, к которой будут подключены устройства будет выступать небольшой неттоп. Можно использовать любое практически любое физическое устройство, т.к. ресурсов серверу много не нужно. Можно даже использовать Raspberry Pi.

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

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

Настройка сервера

Мы будем использовать вариант с Linux сервером. Наш дистрибутив – Ununtu 20.04. Вы можете использовать любой дистрибутив. Но у меня под рукой для написания статьи был только этот 🙂

Если у вас абсолютно новая установка Ubuntu, то предварительно необходимо установить curl:

apt update
apt install curl

При наличии на сервере прямого выхода в Интернет установка производится в одну команду:

curl https://raw.githubusercontent.com/virtualhere/script/main/install_server | sudo sh

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

systemctl status virtualhere.service

Серсив запущен и готов принимать клиентские подключения. Клиентский трафик прослушивается на порту TCP/7575:

netstat -tulpn

Клиент для Windows

Сначала я покажу, как выглядит клиент для Windows. Скачиваем его с сайта проекта.

Запускаем клиент:

Если вы находитесь в одной подсети с сервером, то клиент скорее всего найдет его автоматически. Если сервер автоматически не найдет, то нужно подсказать клиенту, по какому IP-адресу находится сервер:

Теперь мы видим все подключенные к серверу USB устройства и можем примонтировать одно из них:

Также можем зарегистрировать клиент в качестве службы Windows:

Работу клиента я проверил на следующих серверных ОС: Windows Server 2008 R2, 2012 R2, 2016 и 2019 и соответствующим им клиентским ОС – Windows 7, 8.1, 10 + Windows 11.

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

vhui64.exe -t list

Клиент для Linux

Теперь я покажу, как выглядит клиент для Linux. Скачиваем его с сайта проекта.

Разрешаем выполнение:

chmod +x vhuit64

И запускаем клиент.

sudo ./vhuit64

В остальном работа Linux клиента аналогична работе Windows клиента. Также нужно указать расположение сервера:

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

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

Best USB over Ethernet Software of 2021

The remote working trends of 2021 have changed significantly since the start of the COVID-19 pandemic. These days, remote working is the new reality for thousands upon thousands of people, so a reliable software tool for redirecting USB over Ethernet becomes essential.

Piccy.info - Free Image HostingRemote Work Trends for 2021

Being able to remotely access USB devices through the network or even via the Internet and safely share your peripheral with teammates can totally boost your efficiency.
The variety of options can be confusing, so I’ve put together this list for you to choose from selection of the best. We’ve tested some of the most popular apps designed specifically for redirecting USB to Ethernet and reviewed their functional flavor to identify all the strengths and gaps.

1. USB over Ethernet

Platform: Windows, Linux, MacOS, Android
Cross-connectivity: Yes
Security: encryption, optional password authorization
Traffic optimization: compression>
Other: USB 3.0 support

USB over Ethernet is an advanced multi-platform software app with a host of handy features. You can use it to share the whole array of USB peripherals over Ethernet so that they’ll become accessible from all remote machines across your network, regardless of the physical distance.

USB.Network.Gate.-.Share.USB.Devices.Over.Ethernet.With.The.Remote.Computers.mp4

USB Network Gate can easily save you from having to drive all the way to your worksite and back just to get some print job done on the office printer. And your hardware key will last much longer if you share it from your machine instead of unplugging and reconnecting it every time someone else needs it.

With USB Network Gate, you’ll never have any issues accessing your local USB peripherals during RDP sessions, from virtual environments (s.a. VMware, Citrix XenDesktop, Microsoft Hyper-V), and/or blade servers.

On top of that, the unique “Device isolation” feature can make a shared device invisible for everyone, except for a specific user.

Advantages and disadvantages of USB over Ethernet:

Pros: Secure connection protecting your sensitive data with both encryption and password.

  • Works on all popular platforms and with literally any type of USB device.
  • Traffic compression to speed-up data transfers and optimize bandwidth utilization.
  • Not a free app.
  • Known issues with some exotic web-browsers (fixed in the latest version).

2. FlexiHub

Platform: Windows, Linux, MacOS, Android
Cross-connectivity: Yes
Security: 2048-bit SSL encryption
Traffic optimization: optional compression
Other: FlexiChat

FlexiHub is an upper-division software solution with a powerful toolset for sharing USB devices over a network and operating remote USB devices. Unlike some other apps of this type, its license is bound to your account, and not some hardware, meaning, you can use FlexiHub on all your machines.

How.To.Share.Printer_Scanner.Over.Ethernet.A.Short.Guide.To.FlexiHub.mp4

You can invite other account owners to use your shared devices and won’t have to reveal your login or password to do so. FlexiHub has its own USB Redirector Server, so you can connect any remote USB over a network even if it has no public IP address and your computer can’t “see” that other PC that device is shared from.

Also, there is a new “Keep connection active” option you can enable to avoid losing your data or the unsaved work-in-progress owing to some unexpected network failure. Again, unlike its competitors, FlexiHub will also work for your serial devices, which can come in very handy.
And the latest version for Windows has FlexiChat where you can communicate with other users logged into your FlexiHub account in real-time.

Piccy.info - Free Image HostingFlexiHub for mac, Win and Linux OSes

Advantages and disadvantages of FlexiHub:

  • Never-failing USB sharing over any network, no matter the distance.
  • Right on access to any device shared from a networked machine.
  • Truly cross-platform solution: will work anywhere in all possible combinations.
  • For a free demo version, you can only have 5 connection sessions.
  • The free demo is unavailable in some countries.
  • The tech-support is US-based, so Europeans will have to mind the time difference while making emergency phone calls.

3. USB over Network

Platform: Linux, Windows
Cross-connectivity: Partial
Security: SSL traffic encryption, password
Traffic optimization: No
Other: supports 3D mouse

USB over Network is a great solution for redirecting USB devices to remote computers over Ethernet, Internet, or any other network. USB virtualization technology creates an exact virtual copy of a USB device shared from a server on every client’s PC. The distance won’t be the matter with this efficient app. USB over Network will let you access your valuable USB peripherals even if you are in another country or another part of the world by fully emulating the USB stack of remote USB devices and redirecting them over LAN or the Internet.

Piccy.info - Free Image HostingUSB over Network Screenshots

There are versions for Windows and Linux that are fully cross-connective, so you can share a USB device over a network from a Linux server and then access it from a Windows client, or vice versa. Also, you can use this app to share one (or more) of your USB ports and all devices plugged into said port will be instantly accessible from all client machines.

Advantages and disadvantages of USB over Network:

  • Very high data transmission speed.
  • Support of all USB devices, even the most exotic ones.
  • Separate sharing of each composite USB device’s interface.
  • The free evaluation period ends in 15 days.
  • No software updates after 12 months from the purchase date.
  • No refunds.

4. USB over Ethernet app by KernelPro

Platform: Windows
Cross-connectivity: No
Security: IP filters
Traffic optimization: No
Other: Custom device names
USB over Ethernet is a professional-grade app capable of much more than just sharing your USB peripherals over LAN, Wi-Fi, or the Internet. With its help, you can also access a remote USB over the Internet or other network so you won’t have to physically reattach it to do so. This app is easy to install and has a very simple user-friendly interface. All the devices are shared/unshared and connected/disconnected on-the-fly.

Piccy.info - Free Image HostingUSB over Ethernet app

USB over Ethernet has a very convenient IP Filters function that’ll help you limiting access to the shared device for certain IPs only, or banning some IPs from using your devices. Once you install the app, all new devices connected to your server’s USB ports will be automatically recognized and shared, unless you’ve added a device policy rule forbidding that. Using those rules, you can create the “Allow” and “Block” lists for certain types of peripherals. Plus, you can use the “Force Connection to…” option to attach a USB device to a remote client PC from the server-side.

Advantages and disadvantages of USB over Ethernet:

  • Very simple and straightforward installation process.
  • Compatible with all popular virtual environments.
  • Auto-reconnecting after network failures.
  • For a free trial period, you can only share 1 USB device.
  • A single-computer license (you can’t use the app on any other devices).
  • Windows-only app, won’t work on any other platform.

5. VirtualHere

Platform: Windows, Linux, macOS, Android (server)
Cross-connectivity: Yes
Security: SSL traffic encryption
Traffic optimization: No
Other: EasyFind feature

VirtualHere is a dedicated app for sharing USB over a network. Using VirtualHere, you can redirect USB devices over IP to your LAN, the Internet, or even the cloud to enable remote browsing of the device’s contents and access all its features without having it physically plugged into a client machine. When you buy a license, you only pay for a server-side app version. The client-side version is free, and you can install it on any number of client machines. VirtualHere USB Server is compatible with all popular platforms, but the Client will only work on Linux, Windows, and macOS.

Piccy.info - Free Image HostingVirtualHere Screenshots

This app’s biggest selling point is the option to turn your network-attached storage device (aka NAS) into a USB server. In addition, the newest version has an optional VPN subscription service called EasyFind that provides you with a unique address you can pass to anyone you want to grant them access to all your shared USB devices from anywhere in the world, even if your server is behind a NAT or firewall.

Advantages and disadvantages of VirtualHere:

  • Server-side versions for all popular operating systems.
  • Compatibility with cloud servers and Steam Link game systems.
  • Robustness of wired data transmission but with no cables.
  • The free version limit of one shared device only.
  • Hardware-bound license: you can’t use any other machine as your server.
  • Low-speed data transfer.

6. USB/IP Project

Platform: Linux, Windows (client)
Cross-connectivity: Partial
Security: Password on a server-side
Traffic optimization: No
Other: has an Activity log

USB/IP Project is a free USB over IP software application designed specifically for sharing USB peripherals over the network.
Technically speaking, the app redirects I/O messages from USB over IP, so any networked machine gets to access USB peripherals remotely and make the most of all the features it has to offer.

Piccy.info - Free Image HostingUSB/IP Design Overview

Originally, USB/IP Project was designed for Linux and thus won’t do any good on any other operating system. However, there is a new client version that allows you to share USB over IP to a Windows machine, it’s still very much in the early stage of its creation process and hasn’t been fully tested yet.

All in all, USB/IP Project is a very simplistic tool with a single function. On one hand, it’s a good thing, as you can’t possibly get confused with its setup, config, or usage. But on the other hand, there’s not much flexibility and all-purposeness is sadly out of the question.

Advantages and disadvantages of USB/IP Project:

  • It’s a free app that won’t exhaust your financial reserves.
  • Confusion-free interface with a bare minimum of features.
  • It’s an open-source app and you’re welcome to take part in the development process.
  • Known issues with client installation on x64 Windows.
  • Won’t work on macOS or Android.
  • No autodetection of shared devices.

Best USB over Ethernet Software of 2021

The remote working trends of 2021 have changed significantly since the start of the COVID-19 pandemic. These days, remote working is the new reality for thousands upon thousands of people, so a reliable software tool for redirecting USB over Ethernet becomes essential.

Piccy.info - Free Image HostingRemote Work Trends for 2021

Being able to remotely access USB devices through the network or even via the Internet and safely share your peripheral with teammates can totally boost your efficiency.
The variety of options can be confusing, so I’ve put together this list for you to choose from selection of the best. We’ve tested some of the most popular apps designed specifically for redirecting USB to Ethernet and reviewed their functional flavor to identify all the strengths and gaps.

1. USB over Ethernet

Platform: Windows, Linux, MacOS, Android
Cross-connectivity: Yes
Security: encryption, optional password authorization
Traffic optimization: compression>
Other: USB 3.0 support

USB over Ethernet is an advanced multi-platform software app with a host of handy features. You can use it to share the whole array of USB peripherals over Ethernet so that they’ll become accessible from all remote machines across your network, regardless of the physical distance.

USB.Network.Gate.-.Share.USB.Devices.Over.Ethernet.With.The.Remote.Computers.mp4

USB Network Gate can easily save you from having to drive all the way to your worksite and back just to get some print job done on the office printer. And your hardware key will last much longer if you share it from your machine instead of unplugging and reconnecting it every time someone else needs it.

With USB Network Gate, you’ll never have any issues accessing your local USB peripherals during RDP sessions, from virtual environments (s.a. VMware, Citrix XenDesktop, Microsoft Hyper-V), and/or blade servers.

On top of that, the unique “Device isolation” feature can make a shared device invisible for everyone, except for a specific user.

Advantages and disadvantages of USB over Ethernet:

Pros: Secure connection protecting your sensitive data with both encryption and password.

  • Works on all popular platforms and with literally any type of USB device.
  • Traffic compression to speed-up data transfers and optimize bandwidth utilization.
  • Not a free app.
  • Known issues with some exotic web-browsers (fixed in the latest version).

2. FlexiHub

Platform: Windows, Linux, MacOS, Android
Cross-connectivity: Yes
Security: 2048-bit SSL encryption
Traffic optimization: optional compression
Other: FlexiChat

FlexiHub is an upper-division software solution with a powerful toolset for sharing USB devices over a network and operating remote USB devices. Unlike some other apps of this type, its license is bound to your account, and not some hardware, meaning, you can use FlexiHub on all your machines.

How.To.Share.Printer_Scanner.Over.Ethernet.A.Short.Guide.To.FlexiHub.mp4

You can invite other account owners to use your shared devices and won’t have to reveal your login or password to do so. FlexiHub has its own USB Redirector Server, so you can connect any remote USB over a network even if it has no public IP address and your computer can’t “see” that other PC that device is shared from.

Also, there is a new “Keep connection active” option you can enable to avoid losing your data or the unsaved work-in-progress owing to some unexpected network failure. Again, unlike its competitors, FlexiHub will also work for your serial devices, which can come in very handy.
And the latest version for Windows has FlexiChat where you can communicate with other users logged into your FlexiHub account in real-time.

Piccy.info - Free Image HostingFlexiHub for mac, Win and Linux OSes

Advantages and disadvantages of FlexiHub:

  • Never-failing USB sharing over any network, no matter the distance.
  • Right on access to any device shared from a networked machine.
  • Truly cross-platform solution: will work anywhere in all possible combinations.
  • For a free demo version, you can only have 5 connection sessions.
  • The free demo is unavailable in some countries.
  • The tech-support is US-based, so Europeans will have to mind the time difference while making emergency phone calls.

3. USB over Network

Platform: Linux, Windows
Cross-connectivity: Partial
Security: SSL traffic encryption, password
Traffic optimization: No
Other: supports 3D mouse

USB over Network is a great solution for redirecting USB devices to remote computers over Ethernet, Internet, or any other network. USB virtualization technology creates an exact virtual copy of a USB device shared from a server on every client’s PC. The distance won’t be the matter with this efficient app. USB over Network will let you access your valuable USB peripherals even if you are in another country or another part of the world by fully emulating the USB stack of remote USB devices and redirecting them over LAN or the Internet.

Piccy.info - Free Image HostingUSB over Network Screenshots

There are versions for Windows and Linux that are fully cross-connective, so you can share a USB device over a network from a Linux server and then access it from a Windows client, or vice versa. Also, you can use this app to share one (or more) of your USB ports and all devices plugged into said port will be instantly accessible from all client machines.

Advantages and disadvantages of USB over Network:

  • Very high data transmission speed.
  • Support of all USB devices, even the most exotic ones.
  • Separate sharing of each composite USB device’s interface.
  • The free evaluation period ends in 15 days.
  • No software updates after 12 months from the purchase date.
  • No refunds.

4. USB over Ethernet app by KernelPro

Platform: Windows
Cross-connectivity: No
Security: IP filters
Traffic optimization: No
Other: Custom device names
USB over Ethernet is a professional-grade app capable of much more than just sharing your USB peripherals over LAN, Wi-Fi, or the Internet. With its help, you can also access a remote USB over the Internet or other network so you won’t have to physically reattach it to do so. This app is easy to install and has a very simple user-friendly interface. All the devices are shared/unshared and connected/disconnected on-the-fly.

Piccy.info - Free Image HostingUSB over Ethernet app

USB over Ethernet has a very convenient IP Filters function that’ll help you limiting access to the shared device for certain IPs only, or banning some IPs from using your devices. Once you install the app, all new devices connected to your server’s USB ports will be automatically recognized and shared, unless you’ve added a device policy rule forbidding that. Using those rules, you can create the “Allow” and “Block” lists for certain types of peripherals. Plus, you can use the “Force Connection to…” option to attach a USB device to a remote client PC from the server-side.

Advantages and disadvantages of USB over Ethernet:

  • Very simple and straightforward installation process.
  • Compatible with all popular virtual environments.
  • Auto-reconnecting after network failures.
  • For a free trial period, you can only share 1 USB device.
  • A single-computer license (you can’t use the app on any other devices).
  • Windows-only app, won’t work on any other platform.

5. VirtualHere

Platform: Windows, Linux, macOS, Android (server)
Cross-connectivity: Yes
Security: SSL traffic encryption
Traffic optimization: No
Other: EasyFind feature

VirtualHere is a dedicated app for sharing USB over a network. Using VirtualHere, you can redirect USB devices over IP to your LAN, the Internet, or even the cloud to enable remote browsing of the device’s contents and access all its features without having it physically plugged into a client machine. When you buy a license, you only pay for a server-side app version. The client-side version is free, and you can install it on any number of client machines. VirtualHere USB Server is compatible with all popular platforms, but the Client will only work on Linux, Windows, and macOS.

Piccy.info - Free Image HostingVirtualHere Screenshots

This app’s biggest selling point is the option to turn your network-attached storage device (aka NAS) into a USB server. In addition, the newest version has an optional VPN subscription service called EasyFind that provides you with a unique address you can pass to anyone you want to grant them access to all your shared USB devices from anywhere in the world, even if your server is behind a NAT or firewall.

Advantages and disadvantages of VirtualHere:

  • Server-side versions for all popular operating systems.
  • Compatibility with cloud servers and Steam Link game systems.
  • Robustness of wired data transmission but with no cables.
  • The free version limit of one shared device only.
  • Hardware-bound license: you can’t use any other machine as your server.
  • Low-speed data transfer.

6. USB/IP Project

Platform: Linux, Windows (client)
Cross-connectivity: Partial
Security: Password on a server-side
Traffic optimization: No
Other: has an Activity log

USB/IP Project is a free USB over IP software application designed specifically for sharing USB peripherals over the network.
Technically speaking, the app redirects I/O messages from USB over IP, so any networked machine gets to access USB peripherals remotely and make the most of all the features it has to offer.

Piccy.info - Free Image HostingUSB/IP Design Overview

Originally, USB/IP Project was designed for Linux and thus won’t do any good on any other operating system. However, there is a new client version that allows you to share USB over IP to a Windows machine, it’s still very much in the early stage of its creation process and hasn’t been fully tested yet.

All in all, USB/IP Project is a very simplistic tool with a single function. On one hand, it’s a good thing, as you can’t possibly get confused with its setup, config, or usage. But on the other hand, there’s not much flexibility and all-purposeness is sadly out of the question.

Advantages and disadvantages of USB/IP Project:

  • It’s a free app that won’t exhaust your financial reserves.
  • Confusion-free interface with a bare minimum of features.
  • It’s an open-source app and you’re welcome to take part in the development process.
  • Known issues with client installation on x64 Windows.
  • Won’t work on macOS or Android.
  • No autodetection of shared devices.

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

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

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

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

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

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

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

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

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

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

Грустная часть проверки: клиентская часть

В Windows устанавливаем драйвер (делаем это только один раз, дальше он будет всегда установлен). Для этого запускаем от имени администратора файл usbip.exe

с аргументом
install
:

usbip.exe install

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

usbip.exe list —remote=192.168.10.123

Убеждаемся, что оно присутствует в списке. Ну, и подключаем его:

usbip.exe attach —remote=192.168.10.123 —busid=1-5.4.1.3

В менеджере устройств появляется новое USB-устройство, Keil его прекрасно видит…

Но на этом всё приятное кончается. Небольшая программа заливается во флэшку около минуты. Попытки шагать по строкам идут от 5 до 20 секунд на каждую строку. Это неприемлемо. Во время паузы в обе стороны идёт трафик примерно 50 килобит в секунду. Долго и вдумчиво идёт.

Честно говоря, ограничение по времени привело к тому, что я только предполагаю, почему всё было так плохо. Подозреваю, что там по сети бегает JTAG-трафик. А он бегает небольшими пакетами в обе стороны, отсюда и проблемы. Так было завершено исследование с результатом: «Для проекта не подходит».

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

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

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

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

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

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

Для того что бы было куда подключать экспортированные устройства, на виртуальной машине нужно создать необходимые 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>
удаляем все 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=usbredirchardev2,id=usbredirdev2,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3

Для libvirt

В исходном файле конфигурации виртуальной машины в узле &ltdevices> добавляем следующие опции, помимо контроллеров определеных нами раньше:
Теперь все готово для осуществления проброса.

Выводы

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

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

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

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

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

Пакет 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=usbredirdev1,bus=ehci.0,debug=4 Что бы отключить флешку достаточно такой команды: device_del usbredirdev1
На этом все, после данных шагов ваша ВМ увидит вашу флешку и сможет с ней нативно работать.

Режим разрыва клавиатуры

В режиме разрыва клавиатуры сканер просто набирает клавиши, которые соответствуют символам штрих-кода. Не требуется никаких драйверов, чтобы сканер заработал в 1С.

Во всех типовых конфигурациях по кнопке F 7 открывается окно ввода штрих-кода. Поэтому достаточно сканеру запрограммировать префикс F 7 и все, он будет поддерживаться 1С.

Если конфигурация дорабатывалась и в некоторых участках забыли прописать типовую поддержку F 7, проще дописать эту поддержку. Но в качестве альтернативы можно использовать драйвер Атол старых версий, где выбрать в качестве порта «Разрыв клавиатуры».

Новые версии драйверов Атол платные, а бесплатные делают 10-секундную задержку перед обработкой штрих-кода.

Способ прост для подключения, но неудобен в работе.

  • Нужно следить, чтобы была включена правильная раскладка клавиатуры.
  • При использовании префикса курсор должен стоять внутри таблицы, иначе F 7 не срабатывает.
  • Буквы при наборе в RDP часто теряются, и сканер считывает усеченные штрих-коды.

Поэтому лучше все же, если используется разрыв клавиатуры, не использовать драйвер Атол (это лишние потери времени и символов), а просто запрограммировать префикс F 7.

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

Удаленный доступ к USB-порту через Ethernet

День добрый. Как-то столкнулся с задачей удаленно подключить по RDP электронный ключ ruToken к 1С. Бухгалтерия находится в одном офисе, а сервер с 1С — в другом. Решить задачу помогла программа USB Network Gate, которая позволяет легко подключить одно или несколько удаленных USB-устройств к вашему компьютеру по сети Ethernet (Интернет/LAN/WAN) так, словно они подключены к системе напрямую. Не имеет значения, находитесь ли вы в другой стране или соседнем офисе, вы всегда можете воспользоваться удаленным сканером, принтером, веб-камерой, модемом, USB-донглом и любым другим оборудованием, как будто они подключены непосредственно к вашему ПК.

Программа USB Network Gate приятно удивит не умудренных компьютерными знаниями пользователей простотой своего использования. Достаточно подключить нужное USB-устройство к компьютеру, найти его во вкладке «share local USB devices» и нажать кнопку «share», — устройство станет доступно в локальной сети и интернете. Для соединения через интернет удаленному компьютеру нужно будет предоставить IP-адрес сервера.

На клиентском компьютере, в свою очередь, необходимо выбрать во второй вкладке программы появившееся устройство, а затем получить к нему доступ нажатием кнопки «connect». Если же сервер с подключенным девайсом находится в другой подсети, то его необходимо добавить через пункт «add server».

Заключение

Если вам необходим совместный доступ к накопителю, веб-камере, электронной подписи, дактилоскопическому сканеру, принтеру, МФУ или любому другому поддерживаемому USB-устройству из любой точки мира, то USB Network Gate — простое и качественное решение. Программа имеет пробную 14-дневную версию для тестирования и ознакомления с функционалом. Стоимость лицензионной копии варьируется в зависимости от максимального количества одновременно подключаемых к сети USB-устройств. Есть редакции USB Network Gate под операционные системы Windows, Linux, Mac и Android.

Скачать программу вы можете на официальном сайте.

источник

Содержание

  1. USB по локальной сети
  2. Проброс USB-портов из Windows 10 для удалённой работы
  3. USB Network Gate
  4. Грустная часть проверки: клиентская часть
  5. Настройки программы для проброса USB по сети
  6. Настройка виртуальной машины
  7. Выводы
  8. Запуск сервера
  9. Подключение устройства к виртуальной машине
  10. Через опции при запуске ВМ
  11. Или через qemu-monitor
  12. Режим разрыва клавиатуры
  13. Удаленный доступ к USB-порту через Ethernet
  14. Заключение

USB по локальной сети

Периферийные устройства обычно подключаются к интерфейсным портам ПК. Однако в некоторых ситуациях сделать это по тем или иным причинам бывает весьма затруднительно. Решить проблему поможет специальное устройство, посредством которого можно подключить периферийное устройство, не оснащенное сетевым адаптером, через локальную сеть.

Уже давно прошли те времена, когда подключение к ПК более двух-трех периферийных устройств одновременно было весьма непростой задачей. С появлением USB, заменившего последовательные и параллельные порты в настольных ПК, жизнь пользователей стала значительно проще. Например, если к одному COM- или параллельному порту можно было подключить только одно устройство, то через один USB-порт потенциально можно подсоединить (разумеется, при наличии соответствующего оборудования) до 127 различных устройств, причем все они будут функционировать одновременно. К несомненным достоинствам USB следует также отнести возможность горячего подключения и отключения устройств и полноценную поддержку технологии plug-and-play.

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

На первый взгляд
USB-концентратор Belkin F5L009
не отличается от других подобных устройств

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

Нет, это не фантастика. В мае текущего года компания Belkin выпустила необычную модель 5-портового USB-концентратора F5L009, позволяющего реализовать такую возможность. Внешне это устройство мало чем отличается от множества других USB-концентраторов. Однако если присмотреться к задней панели, то можно заметить одну интересную деталь: вместо розетки USB типа В, которая применяется для подключения интерфейсного кабеля, связывающего концентратор с USB-портом компьютера (или вышестоящего концентратора), здесь установлен разъем RJ-45.

На задней панели концентратора
вместо привычной розетки USB типа В
находится разъем RJ-45

Действительно, USB-концентратор Belkin F5L009 через встроенный сетевой адаптер подключается к проводной локальной сети стандарта Ethernet. Специальное ПО, поставляемое с этим устройством, позволяет реализовать режим эмуляции локального подключения периферийных устройств к любому ПК, интегрированному в сеть. Иными словами, приложения и ОС будут работать с подключенными через такой концентратор устройствами так же, как если бы последние были подсоединены непосредственно к USB-порту компьютера.

Естественно, максимальная скорость передачи данных при этом будет ограничена возможностями локальной сети, вследствие чего не гарантируется работа устройств, оснащенных интерфейсом USB 2.0, на полной скорости. Впрочем, это критично далеко не для всех устройств: например, на работе клавиатур, мышей или принтеров скоростные ограничения вряд ли скажутся.

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

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

Для работы в беспроводной сети
USB-концентратор Belkin F5L009 можно подключить
к беспроводному маршрутизатору

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

Источник

Проброс USB-портов из Windows 10 для удалённой работы

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

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

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

USB Network Gate

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


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

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

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

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

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

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

Грустная часть проверки: клиентская часть

В Windows устанавливаем драйвер (делаем это только один раз, дальше он будет всегда установлен). Для этого запускаем от имени администратора файл usbip.exe

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

usbip.exe list —remote=192.168.10.123

Убеждаемся, что оно присутствует в списке. Ну, и подключаем его:

usbip.exe attach —remote=192.168.10.123 —busid=1-5.4.1.3

В менеджере устройств появляется новое USB-устройство, Keil его прекрасно видит…

Но на этом всё приятное кончается. Небольшая программа заливается во флэшку около минуты. Попытки шагать по строкам идут от 5 до 20 секунд на каждую строку. Это неприемлемо. Во время паузы в обе стороны идёт трафик примерно 50 килобит в секунду. Долго и вдумчиво идёт.

Честно говоря, ограничение по времени привело к тому, что я только предполагаю, почему всё было так плохо. Подозреваю, что там по сети бегает JTAG-трафик. А он бегает небольшими пакетами в обе стороны, отсюда и проблемы. Так было завершено исследование с результатом: «Для проекта не подходит».

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

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

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

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

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

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

Для того что бы было куда подключать экспортированные устройства, на виртуальной машине нужно создать необходимые 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>
удаляем все 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=usbredirchardev2,id=usbredirdev2,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3

Для libvirt

В исходном файле конфигурации виртуальной машины в узле &ltdevices> добавляем следующие опции, помимо контроллеров определеных нами раньше:
Теперь все готово для осуществления проброса.

Выводы

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

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

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

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

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

Пакет 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

Этот блок рамещается перед тегом
, рядом с контроллерами определенными нами раньше:
Его так же можно исполнить командой 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
На этом все, после данных шагов ваша ВМ увидит вашу флешку и сможет с ней нативно работать.

Режим разрыва клавиатуры

В режиме разрыва клавиатуры сканер просто набирает клавиши, которые соответствуют символам штрих-кода. Не требуется никаких драйверов, чтобы сканер заработал в 1С.

Во всех типовых конфигурациях по кнопке F 7 открывается окно ввода штрих-кода. Поэтому достаточно сканеру запрограммировать префикс F 7 и все, он будет поддерживаться 1С.

Если конфигурация дорабатывалась и в некоторых участках забыли прописать типовую поддержку F 7, проще дописать эту поддержку. Но в качестве альтернативы можно использовать драйвер Атол старых версий, где выбрать в качестве порта «Разрыв клавиатуры».

Новые версии драйверов Атол платные, а бесплатные делают 10-секундную задержку перед обработкой штрих-кода.

Способ прост для подключения, но неудобен в работе.

  • Нужно следить, чтобы была включена правильная раскладка клавиатуры.
  • При использовании префикса курсор должен стоять внутри таблицы, иначе F 7 не срабатывает.
  • Буквы при наборе в RDP часто теряются, и сканер считывает усеченные штрих-коды.

Поэтому лучше все же, если используется разрыв клавиатуры, не использовать драйвер Атол (это лишние потери времени и символов), а просто запрограммировать префикс F 7.

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

Удаленный доступ к USB-порту через Ethernet

День добрый. Как-то столкнулся с задачей удаленно подключить по RDP электронный ключ ruToken к 1С. Бухгалтерия находится в одном офисе, а сервер с 1С — в другом. Решить задачу помогла программа USB Network Gate, которая позволяет легко подключить одно или несколько удаленных USB-устройств к вашему компьютеру по сети Ethernet (Интернет/LAN/WAN) так, словно они подключены к системе напрямую. Не имеет значения, находитесь ли вы в другой стране или соседнем офисе, вы всегда можете воспользоваться удаленным сканером, принтером, веб-камерой, модемом, USB-донглом и любым другим оборудованием, как будто они подключены непосредственно к вашему ПК.

Программа USB Network Gate приятно удивит не умудренных компьютерными знаниями пользователей простотой своего использования. Достаточно подключить нужное USB-устройство к компьютеру, найти его во вкладке «share local USB devices» и нажать кнопку «share», — устройство станет доступно в локальной сети и интернете. Для соединения через интернет удаленному компьютеру нужно будет предоставить IP-адрес сервера.

На клиентском компьютере, в свою очередь, необходимо выбрать во второй вкладке программы появившееся устройство, а затем получить к нему доступ нажатием кнопки «connect». Если же сервер с подключенным девайсом находится в другой подсети, то его необходимо добавить через пункт «add server».

Заключение

Если вам необходим совместный доступ к накопителю, веб-камере, электронной подписи, дактилоскопическому сканеру, принтеру, МФУ или любому другому поддерживаемому USB-устройству из любой точки мира, то USB Network Gate — простое и качественное решение. Программа имеет пробную 14-дневную версию для тестирования и ознакомления с функционалом. Стоимость лицензионной копии варьируется в зависимости от максимального количества одновременно подключаемых к сети USB-устройств. Есть редакции USB Network Gate под операционные системы Windows, Linux, Mac и Android.

Скачать программу вы можете на официальном сайте.

Источник

Содержание

  1. Проброс USB в виртуалку по сети средствами UsbRedir и QEMU
  2. Для начала несколько слов о вышеперчисленных решениях
  3. Настройка виртуальной машины
  4. Запуск сервера
  5. Подключение устройства к виртуальной машине
  6. Через опции при запуске ВМ
  7. Или через qemu-monitor
  8. Если устройств много и все они одинаковые
  9. И так приступим
  10. USB over IP в домашних условиях
  11. Серверная часть
  12. Клиентская часть
  13. Укрощаем USB/IP
  14. Часть первая, историческая
  15. Часть вторая, серверно-линуксовая
  16. Часть третья, клиентская и запутанная
  17. USB-соединение
  18. Ehternet-соединение
  19. Проброс USB-портов из Windows 10 для удалённой работы
  20. Введение
  21. Вариант под актуальную версию Windows
  22. Грустная часть проверки: серверная часть
  23. Грустная часть проверки: клиентская часть
  24. Более весёлая часть: подготовка
  25. Заключение

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

image loader

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

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

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

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

Для qemu (без libvirt)

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

Для libvirt

В исходном файле конфигурации виртуальной машины в узле &ltdevices&gt удаляем все USB контроллеры и добавляем следущий блок:

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

Для qemu

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

Для libvirt

В исходном файле конфигурации виртуальной машины в узле &ltdevices&gt добавляем следующие опции, помимо контроллеров определеных нами раньше:

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

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

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

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

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

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

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

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

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

Для qemu
Для libvirt

Этот блок рамещается перед тегом &lt/devices&gt, рядом с контроллерами определенными нами раньше:
Его так же можно исполнить командой virsh attach-device

Или через qemu-monitor

Заходим на гипервизор и в qemu-monitor нашей машины выполняем следующие команды:

Что бы отключить флешку достаточно такой команды:

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

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

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

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

И так приступим

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

И вставим наше устройство, после этого мы сразу увидим список переменных этого устройства которые udev любезно инициализировал для нас:

Информацию о серийнике и других аттрибутах можно получить и другим способом, но стоит учитывать что для написания правил мы будем использовать именно переменные из команды выше, а не аттрибуты из команды ниже. В противном случае не будет отрабатывать триггер remove при отключении устройства.

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

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

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

Источник

USB over IP в домашних условиях

Иногда возникает желание работать с устройством, подключенным по USB, не держа его на столе рядом с ноутбуком. У меня таким устройством является китайский гравёр с лазером на 500 мВт, штука довольно неприятная при близком контакте. Помимо непосредственной опасности для глаз, в процессе работы лазера выделяются токсичные продукты горения, поэтому устройство должно находится в хорошо проветриваемом помещении, и желательно изолированно от людей. А как же таким устройством управлять? Ответ на данный вопрос я случайно нашел, просматривая репозиторий OpenWRT в надежде найти достойное применение старенькому роутеру D-Link DIR-320 A2. Для подключения решил использовать описываемый на Хабре ранее USB over IP tunnel, однако все инструкции по его установке успели потерять актуальность, поэтому пишу свою.

OpenWRT — операционная система, не нуждающаяся в представлении, поэтому её установку расписывать не буду. Для своего роутера взял последний стабильный релиз OpenWrt 19.07.3, и подключил его к основной точке доступа по Wi-Fi в качестве клиента, выбрав режим lan, чтобы не мучать файрвол.

Серверная часть

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

Далее подключаем к USB-порту роутера наше устройство (в моём случае устройства: USB-хаб, флешку, на которую смонтирована файловая система роутера (ввиду нехватки места на внутреннем накопителе), и, непосредственно, гравёр).

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

Путём гугления был найден виновник, им оказалась библиотека libudev-fbsd.
Вытаскиваем руками из репозитория последнюю рабочую версию libudev_3.2-1 из релиза OpenWRT 17.01.7 под свою архитектуру, в моём случае это libudev_3.2-1_mipsel_mips32.ipk. С помощью wget/scp загружаем её в память роутера и переустанавливаем

Китаец, подключенный в USB-хаб, получил bsuid 1-1.4. Запомнили.

Теперь запускаем демон:

Проверяем, что всё работает:

Чтобы далее биндить девайс автоматически, подредактируем /etc/rc.local, добавив перед exit 0 следующее:

Клиентская часть

Попробуем поключить устройство к Windows 10, используя вышеупомянутую инструкцию с openwrt.org. Сразу скажу: затея обречена на провал. Во-первых, рассматривается только Windows 7 x64. Во-вторых, дана ссылка на тред на sourceforge.net, в котором предлагается скачать с дропбокса патченый в 2014 году драйвер. При попытке запустить его под Windows 10 и подключиться к нашему устройству получаем ошибку:

Связано это с тем, что клиент не работает с сервером, собранным под ядро старше версии 3.14.
Сервер usbip под OpenWRT 19.07.3 собран на ядре 4.14.180.

Продолжая поиски, натыкаюсь на актуальную разработку виндового клиента на github. Ок, заявлена поддержка Windows 10 x64, но клиент исключительно тестовый, поэтому присутствует ряд ограничений.

Итак, сначала просят установить сертификат, притом дважды. Ок, помещаем его в Trusted Root Certification Authority и Trusted Publishers.

Далее необходимо перевести операционную систему в тестовый режим. Делается это командой

С первого раза у меня не получилось, помешал secure boot. Для его отключения необходимо перезагрузиться в UEFI, и выставить secure boot — disable. На некоторых моделях ноутбуков может потребоваться установка supervisor password.

После этого загружаемся в Windows и делаем bcdedit.exe /set TESTSIGNING ON
Винда говорит, что всё ок. Снова перезагружаемся, и видим в правом нижнем углу надпись Test Mode, версию и номер билда ОС.

Для чего же все эти манипуляции? Для установки неподписанного драйвера USB/IP VHCI. Сделать это предлагается, скачав файлы usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat, и выполнив с правами администратора

либо второй способ, установка Legacy Hardware в ручном режиме. Я выбрал второй вариант, получил предупреждение об установке неподписанного драйвера и согласился с ним.

Далее проверяем, что у нас есть возможность подключиться к удаленному USB-устройству, выполняя команду:

получаем список устройств:

на ошибку usbip: error: failed to open usb id database не обращаем внимания, на работу не влияет.

Теперь биндим устройство:

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

С китайским гравёром пришлось немного помучаться, так как при попытке установить его драйвер CH341SER через прилагавшийся к гравёру инсталлятор (да, гравёр на Ардуино), USB/IP VHCI ронял винду в BSOD. Однако установка драйвера CH341SER до подключения устройства через usbip.exe решала проблему.

Итог: гравёр шумит и дымит на кухне при открытом окне и закрытой двери, я наблюдаю за процессом выжигания из другой комнаты через родную софтину, которая не чувствует подвоха.

Источник

Укрощаем USB/IP

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

Если машина виртуальная — всё это несложно. Функционал проброса USB от хоста в виртуалку появился еще в VMWare 4.1. Но в моём случае ключик защиты, опознающийся как WIBU-KEY, нужно было в разное время подключать к разным машинам, и не только виртуальным.
Первый виток поиска в далеком 2009-м году привел меня к железке под названием TrendNet TU2-NU4
Плюсы:

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

Сервер 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-соединение

Допустим, принтер установлен на вашем компьютере и подключен по USB-кабелю, как сделать так, чтобы и другие пользователи могли печатать на нем?

7fe2cf101f02d2e1931d0c51facd6c8a

В появившемся окне будут отображаться все установленные принтеры, факсы, мониторы, сканеры, МФУ-шки и так далее:

0e26589350bdfb6f8f303b7fd7d7dfda

Но нам нужно выбрать тот принтер, к которому следует предоставить общий доступ. Щелкаем правой кнопкой мыши по нужному принтеру (в моем случае это HP LaserJet 400 MFP M425 PCL 6). Во всплывающем окне необходимо щелкнуть по пункту «Свойство принтера«:

f5488282b37c0de54ba94fa802f31993

Далее, переходим во вкладку «Доступ«:

365143177466280e6d86386d75506367

Что мы тут видем, это неактивный пункт «Общий доступ к данному принтеру«. Необходимо поставить галочку в этом пункте. Подобные манипуляции позволять теперь нам найти принтер по ip адресу или DNS имени компьютера. Но не торопитесь нажимать «ОК«, следует еще поставить галочку в пункте с названием «Внести в Active Directory» (Если у вас доменная машина, это упростит поиск принтера, а как, можно узнать ниже в статье):

58f6f8e71aa35d19eb3c66f546b91560

Прежде чем нажать по кнопке «ОК«, сделаем завершающую настройку. Щелкнем по кнопке «Дополнительные драйверы. «:

950e18fcec8b6d1ec8a2c2b43c62740e

В окне «Дополнительные драйверы» необходимо отметить все галочки (при условии, что установлены драйверы для x86, x64 и т.д. устройств). Это позволит устанавливать драйверы к принтеру по сети не только для 32-битных ПК, но и для 64-битных:

643a80ebf237ad439a20653896d21fb9

Все! Теперь можно нажимать «ОК» в этом и предыдущем окне. Настройка по предоставлению общего доступа завершена. Теперь рассмотрим как подключиться к нашему принтеру с другого ПК. Для этого необходимо на другом ПК перейти в окно «Устройства и принтеры» и кликнуть по ссылке «Установка принтера«:

0593d94e1fba749cfdb15b7f69c5e5d6

В появившемся окне увидим два пункта: «Добавить локальный принтер» и «Добавить сетевой, беспроводной или Bluetooth-принтер«:

416fd8f2601d5a2f8cac1410e5aef761

Для подключения принтера по IP-адресу выбираем первый пункт, для подключения принтера через Active Directory, выбираем второй пункт. Давайте сперва выберем первый пункт, щелкаем по нему и переходим в «Выбирите порт принтера«:

fd20376bff709529f9361259be556029

Выбираем «Создать новый порт«, в «Тип порта» выбираем «Standard TCP/IP Port» либо «Local Port» и нажимаем «Далее«:

c4b70e46262b8fba2abc085f13f1a4a9

В меню «Введите имя или IP-адрес принтера» необходимо указать IP адрес компьютера, на котором установлен принтер (в моем случае это 10.81.0.50), жмем «Далее«, после чего должна начаться установка принтера. По окончанию установки можно будет начать печать.

7ed2c473cc2a03221942bf073c70632f

Так, теперь давайте вернемся на несколько пунктов назад и рассмотрим пример с добавлением принтера через Active Directory. Выбираем пункт «Добавить сетевой, беспроводной или Bluetooth-принтер«:

7c9b47766886103f676070eb1ff50587

В меню «Поиск доступных принтеров..«, не дожидаясь поиска сразу нажимаем ссылку «Нужный принтер отсутствует в списке«:

5d4b149b8e94c8e3a3b287f0dd1e0da6

В появившемся меню мы видим три варианта установки, можно выбрать любой из них. В первом пункте можно найти принтер через Active Directory, во втором пункте можно найти, указав имя компьютера или отыскав компьютер по сети, в третьем пункте можно указать ip-адрес. Выбираем первый пункт, нажимаем «Далее» и получаем окно «Поиск: Принтеры«:

0008be933155910186e71a608482148d

2842b73cff6d4ae5661473b4ac910e0b

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

Ehternet-соединение

Пример такого подключения покажу на принтере, вернее МФУ Canon i-Sensys 411 dw. У других производителей и на других моделях действия будут идентичны. Прежде чем подключиться напрямую к принтеру по сети, необходимо на самом принтере настроить его IP адрес! Это важно, иначе мы просто не найдем принтер в сети.

На сенсорном дисплее принтера нажимаем на «Меню«:

084210cc42eb02848c5c43d3861b9409

Выбираем «Настройка сети«:

ea7f15efd6e90f047f38bd28eb616e44

Выбираем «Настройки TCP/IP«:

35571cde68505586c8fc81d7b3c5b782

Выбираем «Настройки IPv4«:

b8f1432a9ffadd02cc2d3ed1fcb57b00

Выбираем «Настрйоки IP-адреса«:

3eca71cec328790dc73d8cedc40014ba

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

5720dcb773c8d0bdab59a286903fd6a7

Вводим IP-адрес, маску подсети. Все эти параметры зависят от вашей сети, на фото адрес представлен как пример. Когда введены адрес и маска подсети нажимаем «Применить» и можем двигаться к своему компьютеру для подключения принтера.

276bcdddb061bceb17628a70b0748b46

После настройки принтера необходимо скачать драйвер с официального сайта, в моем случае был скачен драйвер «MF410MFDriverV2160W64RU«. Распаковываем и запускаем:

73a897a31207ada0901c357af257f7b7

Жмем «Далее«, затем «Да«, в окне «Выбор типа соединения» выбираем «Сетевое соединение (для сетевых моделей)«:

960baa402583c1bd0f7d2e02cebb8f4d

В следующем окне мы найдем принтер, если автоматический поиск не помог, вводим ip-адрес принтера и нажимаем «Далее«:

8736659b710a745dba285613b971f6cf

На этом все! Принтер установится и можно будет печатать документы. Надеюсь статья поможет вам в настройке своего принтера! Удачи!

default заголовок текста не соответствует содержимому. «любой принтер»-например. samsung ML2015? и, не через один ПК с расшариванием доступа (что никак не делает принтер СЕТЕВЫМ. а всего лишь- общедоступным, да и то-если некий ПК включен в нужный момент)))), а именно сетевым. автор, поменяешь заголовок и извинишься перед читателями, или предложишь метод. уоторый будет соответствовать заголовку?

defaultа как сделать в самом принтере список компьютеров? Допустим есть мфу Самсунг 4833 и три компьютера. Подключено все через интернет. То есть создана сеть. Но сам мфу если работать с него видит только один компьютер (его имя) остальные он не видит. Как вбить в память мфу остальные два чтобы можно было в меню самого мфу выбирать на какой компьютер отправлять допустим те же сканы?

Источник

Проброс USB-портов из Windows 10 для удалённой работы

Когда человек много лет рыл бункер и запасал там продукты, он должен испытывать глубокое моральное удовлетворение, если бункер понадобился. Он будет довольный заявлять: «А я говори-и-и-ил!» То же касается и того, кто делал запасы продуктов в кладовой, когда все закупались в магазинах только на сегодня. А вот с нашим комплексом для удалённой работы Redd как-то и не хочется злорадствовать. Он проектировался для удалёнки в мирное время. И использовался задолго до первых новостей из Китая.

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

Но так как сейчас удалёнка у всех на устах, возникло желание поделиться одной наработкой, которая может кому-то помочь. Это не наша разработка, я проводил исследования в рамках работы над сервисом удаленной работы с отладочными платами All-Hardware. Вот их результаты сейчас и опишу. Проект USB/IP известен многим. Но он давно свёрнут авторами. Самые свежие драйверы были под WIN7. Сегодня я опишу, где скачать вариант для WIN10, и покажу, как я его проверял. Кроме того, разработчики современного аналога уверяют, что у них сделан не только Windows-клиент, но и Windows-сервер (правда, в этом режиме я тестирование не вёл: задача того не требовала). Но кому-то это тоже может оказаться полезным.

image loader

Введение

Сначала краткий рассказ, что такое USB/IP. Это комплекс программ, которые позволяют пробросить USB-устройство через сеть. Само устройство подключено к серверу. Клиент располагается на другой машине. При этом на клиентской машине имеется приложение, совершенно не рассчитанное на работу с сетью. Оно хочет настоящее USB-устройство. И оно получает информацию, что это устройство подключено. На это устройство встаёт штатный драйвер. В общем, клиент считает, что он работает с локальным USB-устройством.

Кто-то так пробрасывает ключи защиты. Мы же проверяли возможность удалённого доступа к JTAG-адаптеру.

Проект USB/IP активно развивался до 2013 года. Затем Windows-ветка остановилась. В целом, был выпущен даже двоичный подписанный драйвер. Но он был под Windows 7. Linux-ветка же продолжила развитие, и этот сервис оказался встроенным в саму операционную систему. По крайней мере, в сборку Debian он точно встроен. Причём для Linux имеется и клиент, и сервер, а для Windows исходно был сделан только клиент. Сервер под Windows сделан не был.

Существует очень хорошая статья на Хабре, которую можно использовать и как справочник по работе с данным сервисом, и как отзыв о работе с ним.

Вариант под актуальную версию Windows

Но как бы ни была хороша Windows 7, а она уже мертва. В рамках работ над All-Hardware мы рассматривали разные варианты решения одной из проблем, и надо было просто проверить ряд альтернатив по принципу «подойдёт — не подойдёт». Тратить много человеко-часов на проверку было невозможно. А переделка драйвера под Windows 10 могла затянуть в себя. Поэтому был проведён поиск в сети, который вывел на проект usbip-win. На момент его обнаружения свежий вариант был датирован 23 февраля 2020 года, то есть проект живой. Он может быть собран и под WIN7, и под WIN10. К тому же, в отличие от оригинального проекта, может быть собран не только Windows-клиент, но и Windows-сервер.

Я проверил, проект прекрасно собирается и устанавливается, поэтому дальнейшая работа велась с ним. В файле readme есть ссылка на готовый двоичный код для тех, кто не хочет самостоятельно производить сборку.

Грустная часть проверки: серверная часть

Сначала я расскажу, как проводилась проверка в рамках нашего проекта. Там всё кончилось не очень хорошо. Проверяли адаптер ST-LINK, установленный в корпус комплекса Redd, благо я уже отмечал, что в комплексе используется ОС Linux сборки Debian, а эта сборка содержит встроенный сервис USB/IP.

Согласно статье, устанавливаем сервис:

Дальше в статье подробно рассказано, как автоматизировать процесс загрузки сервиса. Как я разбираюсь в Линуксе, я уже многократно писал. Плохо разбираюсь. У меня нет привычки с умным лицом цитировать чужие тексты, слабо понимая суть. Поэтому я ещё раз напомню ссылку на замечательную статью, где всё рассказано, а сам покажу, что делал я при каждом старте ОС (благо всё было нужно только для проверки):

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

Теперь смотрим, как зовут устройство:

Получается, что нам нужно устройство и busid, равным 1-5.4.1.3.

Всё, сервер готов к работе.

Грустная часть проверки: клиентская часть

В Windows устанавливаем драйвер (делаем это только один раз, дальше он будет всегда установлен). Для этого запускаем от имени администратора файл usbip.exe с аргументом install:

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

Убеждаемся, что оно присутствует в списке. Ну, и подключаем его:

В менеджере устройств появляется новое USB-устройство, Keil его прекрасно видит…

Но на этом всё приятное кончается. Небольшая программа заливается во флэшку около минуты. Попытки шагать по строкам идут от 5 до 20 секунд на каждую строку. Это неприемлемо. Во время паузы в обе стороны идёт трафик примерно 50 килобит в секунду. Долго и вдумчиво идёт.

Честно говоря, ограничение по времени привело к тому, что я только предполагаю, почему всё было так плохо. Подозреваю, что там по сети бегает JTAG-трафик. А он бегает небольшими пакетами в обе стороны, отсюда и проблемы. Так было завершено исследование с результатом: «Для проекта не подходит».

Более весёлая часть: подготовка

Ещё тогда мне запало в голову, что я краем глаза видел, что в JTAG-адаптере CMSIS DAP по USB ходит не чистый JTAG-трафик, а команды. Сам JTAG-трафик формируется уже внутри адаптера. Давно хотел проверить это, да всё руки не доходили. Массовый перевод на удалёнку заставил это сделать (возникла задачка). Что такое CMSIS DAP? Это JTAG-адаптер, рекомендованный самой компанией ARM для контроллеров Cortex-M. Исходные коды для разных контроллеров выложены на GitHub, можно спаять адаптер на базе любого из них. Я сейчас дам ссылку на клон проекта, адаптированный под макетную плату «Голубая пилюля»: https://github.com/x893/CMSIS-DAP, но поисковые системы могут вывести и на официальный аккаунт ARM.

Чтобы не тратить на сервер целую PC, для проверки, я сделал этакий комплекс Yelloww (чисто по цвету пластика, из которого сделан корпус):

Роль сервера выполняет Raspberry Pi с установленной ОС Raspbian (это тот же Debian, а значит, там имеется требуемый сервер). Одна из «голубых пилюль» выступает в роли адаптера CMSIS DAP, вторая — в роли отлаживаемого устройства.

Точно так же ставим и настраиваем сервис. Разве что здесь список устройств, допустимых к экспорту, намного скромнее:

Понятно, что здесь экспортируем и импортируем устройство busid=1-1.4.

И вот тут конкретно с CMSIS DAP у меня периодически возникает небольшая проблемка. В менеджере устройств я вижу такую неприятность:

image loader

Напомню, что статья пишется по принципу «Лучше неплохая, но сегодня, чем идеальная, но завтра». Проблемы удалённой работы возникают прямо сейчас. Надеюсь, в обозримом будущем они уже будут не актуальны. А пока актуальны — показываю, как я обхожу данную проблему вручную. Сначала я отключаю устройство:

image loader

Затем сразу же включаю:

image loader

И оно начинает работать без проблем. В Keil меняем отладчик на CMSIS DAP:

image loader

image loader

При работе по локальной сети всё просто летает. Но понятно, что локальная сеть никому не интересна. Я попробовал пробросить порт устройства у себя дома, а затем удалённо зайти на машину на работе и потрассировать «прошивку» оттуда. Связь у моего домашнего провайдера весьма и весьма тормозная, особенно — от меня наружу. Прошивается контроллер примерно втрое медленнее, чем при прямом подключении к USB. Трассировка… Ну около секунды на строку, точно не больше. В общем, терпимо. С хорошими провайдерами, надеюсь, будет лучше.

Заключение

Проект usbip-win является современной заменой для проекта USB/IP. Он живёт и развивается. При этом он предоставляет для ОС Windows не только функцию клиента, но и функцию сервера. Совместимость с Linux-версией сохранена.

Устойчивость работы удалённого USB-устройства неожиданно поразила. Я был уверен, что возникнут таймауты. Возможно, где-то они и возникнут, но для JTAG-адаптеров не было замечено ни одного сбоя. К сожалению, не все USB-устройства могут быть проброшены через сеть по причине низкого быстродействия получившейся системы. Но в случае с JTAG-адаптерами можно рассмотреть альтернативные вещи. В частности, CMSIS-DAP вместо ST-LINK.

Оба рассмотренных проекта (usbip-win и CMSIS-DAP) могут быть скачаны с GitHub в виде исходных кодов.

Если это поможет кому-то организовать удалённый доступ к оборудованию, я буду рад. Использование Raspberry Pi позволит бросить оборудование в произвольных местах.

Источник

Привет, Хабр! В прошлой статье мы рассмотрели историю и принцип работы технологии USB over IP, узнали, как ее применяют на базе готового аппаратного решения.

Для личного использования, однако, аппаратное решение скорее не подойдет: нужно приобретать дорогостоящее оборудование, что нецелесообразно. Поэтому под катом рассказываю, как организовать клиент-серверный комплекс USB over IP на современных ОС и автоматизировать этот процесс.

Итак, USBIP прекрасно работает не только на специализированном оборудовании, но и на современных операционных системах. Это позволяет недорого или вообще без денежных вложений решать небольшие кейсы.

В данной статье мы рассмотрим организацию клиент-серверного комплекса USB over IP. В качестве клиента выступит облачный сервер Selectel (ОС — Ubuntu 20.04), а сервером будет классический bare metal-сервер, с той же версией Ubuntu. Помимо облачного клиента на Linux, мы выполним проброс устройства на клиент Windows 10.

Настройка сервера


Для начала установим необходимые инструменты и модули для работы. Все необходимые модули входят в состав пакета linux-tools. Выполняем его установку (у меня версия 5.4.0-100-generic):

root@Descartes:~# apt-get install linux-tools-`uname -r`

Далее проверяем доступные для загрузки USBIP модули ядра:

root@Descartes:~# find /lib/modules/$(uname -r) -name '*.ko'| grep usbip

/lib/modules/5.4.0-100-generic/kernel/drivers/usb/usbip/usbip-core.ko
/lib/modules/5.4.0-100-generic/kernel/drivers/usb/usbip/usbip-host.ko
/lib/modules/5.4.0-100-generic/kernel/drivers/usb/usbip/vhci-hcd.ko
/lib/modules/5.4.0-100-generic/kernel/drivers/usb/usbip/usbip-vudc.ko

Для работы сервера нам потребуются:

  • usbip-core — основа USBIP-сервера,
  • usbip-host — управление USB-устройствами,
  • vhci-hcd — модуль экспорта виртуальных USB-устройств.

Выполним запуск необходимых нам модулей:

root@Descartes:~# modprobe usbip-core
root@Descartes:~# modprobe usbip-host
root@Descartes:~# modprobe vhci-hcd

Чтобы не запускать данные модули вручную каждый раз, добавим их в конфигурационный файл modules.conf:

root@Descartes:~# vi /etc/modules-load.d/modules.conf

usbip-core
usbip-host
vhci-hcd

Чтобы USB-сервер работал в фоновом режиме, мы запустим его в качестве демона, а после проверим BusID подключенного накопителя. Этот ID понадобится нам позже для проброса ключей в клиентскую часть. Запускаем USB-сервер в качестве демона:

root@Descartes:~# usbipd -D

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

root@Descartes:~# usbip list -l

 - busid 1-1 (058f:6387)
   unknown vendor : unknown product (058f:6387)
 - busid 1-13.1 (0557:2419)
   unknown vendor : unknown product (0557:2419)

где BusID 1-1 — это наш USB-накопитель, подключенный в сервер.

Так как теперь нам известен BusID флешки, которой мы хотим поделиться с внешним миром, выполним следующую команду:

root@Descartes:~# usbip bind -b 1-1
usbip: info: bind device on busid 1-1: complete

Теперь устройство готово быть подключенным к удаленным клиентским устройствам. Далее рассмотрим настройку клиентской части.

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

По аналогии с сервером нам потребуется пакет linux-tools под необходимую версию ядра. Выполняем установку:

root@Racio:~# apt-get install linux-tools-`uname -r`

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

root@Racio:~# usbip attach --remote=188.124.55.21 --busid=1-1

Находим подключенный девайс среди остальных блочных устройств. В клиентской системе девайс определился как sda4-устройство:

root@Racio:~# fdisk -l
Device     Boot Start      End  Sectors  Size Id Type
/dev/sda4  *      256 31129599 31129344 14.9G  c W95 FAT32 (LBA)

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

Одним из вариантов подключения устройств для Windows является использование отдельного ПО — VirtualHere USB Client. Эта программа практически исключает какую-либо настройку руками.

Но мы пойдем по более интересному пути, где для Windows-клиента проброс будет осуществлен с помощью пакета usbip-client. Этот пакет содержит необходимые конфигурационные файлы для работы, в том числе каталог безопасности. Благодаря нему в будущем у нас не возникнет проблем с сертификатами. Пакет работает с Windows 7 и 10, а также с Windows Server 2008 и 2021.

Распакованный usbip-client необходимо подключить к нашей ОС как виртуальное устройство. Windows не видит старые устройства, у которых нет поддержки технологии Plug-and-Play. Чтобы добавить для них драйверы, нужно использовать утилиту ручной настройки «Мастер установки оборудования».

Для этого необходимо:

  1. Зайти в диспетчер устройств → ДействиеУстановить старое устройство.
  2. Выбрать пункт с ручной установкой оборудования и вместо конкретного типа оборудования выбрать пункт Показать все устройства. Далее выбираем Установить с диска и выбираем USBIPEnum.Inf файл из распакованного архива.
  3. Мастер установки распознает оборудование USB/IP Enumerator, его и устанавливаем.

После этого в диспетчере устройств в системных устройствах мы увидим установленный и подписанный драйвер USB/IP Enumerator.

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

C:Usersusbip usbip -l 188.124.55.21
1-1: Alcor Micro Corp. : Transcend JetFlash Flash Drive (058f:6387)
        : /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1
        : (Defined at Interface level) (00/00/00)
        :  0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50)

где 1-1 – BusID удаленного девайса.

Подключаем девайс к системе:

C:Usersusbip usbip -a 188.124.55.21 1-1
new usb device attached to usbvbus port 1

Автоматизация клиента и сервера


Каждый раз прописывать команды и организовывать связность устройств вручную как минимум муторно. Как максимум — невозможно: например, если конечный клиент — простой обыватель, не подозревающий о существовании подобной «магии». Поэтому в дополнение к классическому пробросу USB-ключа нам также стоит автоматизировать этот процесс и на стороне клиента, и на стороне сервера.

Рассмотрим, как реализовать это на практике.

Автоматизация серверной части

Аналогично разделу с базовой настройкой сервера необходимо добавить модули в автозапуск, без этого никуда:

root@Descartes:~# vi /etc/modules
usbip-core
usbip-host
vhci-hcd

Далее создаем юнит в systemd, который будет обращаться к скрипту usbipd и расшаривать наш USB-девайс автоматически после старта сетевых служб ОС:

root@Descartes:~# vi /etc/systemd/system/usbipd.service

[Unit]
Description=USBIPd
After=network.target

[Service]
ExecStart=/bin/sh /root/script/usbipd
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Обновляем конфигурацию systemd и добавляем юнит в автозапуск:

root@Descartes:~#systemctl daemon-reload
root@Descartes:~#systemctl enable usbipd

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

root@Descartes:~# vi /scripts/usbipd

#!/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

bindID='1-1' # BusID нашего USB-устройства на сервере

kernel_version=$(uname -r) - # создание переменной, содержащей текущую версию ядра системы
apt install linux-tools-$kernel_version # установка инструментов проброса для актуальной версии ядра
usbipd -D 
sleep 1
usbip bind -b $bindID # делаем USB-устройство на сервере доступным для проброса

usbip attach --remote=localhost --busid=$bindID
sleep 3

usbip detach --port=00

Выдаем разрешение на запуск скрипта:

root@Descartes:~# chmod ugo+x usbipd

Последние три строки скрипта вынесены отдельно неслучайно. ПО на стороне сервера может работать неидеально. Иногда при попытке подключения устройства к клиенту под управлением ОС Windows может возникнуть проблема, когда клиент попросту не видит на сервере устройства с BusID 1-1:

usbip -a 188.124.55.21 1-1 
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

Проблема решается путем проброса USB-девайса сервера самому себе с его последующим отключением, что и содержится в последних трех строках скрипта.

Как можно было заметить, значения параметров BindID и port в скрипте являются статичными. Это связано с тем, что сервер изначально настраивается на проброс одного единственного USB-устройства, который будет получать одни и те же значения описанных выше параметров.

Автоматизация клиентской части (Windows)

Автоматизацию клиентской машины под управлением Windows мы осуществим за счет создания исполнительного bat-файла и планировщика заданий, который будет этот файл выполнять при запуске системы. В bat-файл добавляем инструкции, необходимые для подключения:

cd C:UsersMaksonDesktopusbip
usbip.exe -a 188.124.55.21 1-1

Запускаем планировщик заданий, где указываем следующие параметры:

  • во вкладке Общие ставим галочку Выполнять с наивысшим приоритетом,
  • во вкладке Триггеры указываем При запуске (либо любой другой),
  • во вкладке Действия указываем путь до нашего bat-файла. В моем случае это C:UsersMaksonDesktopusbipscript.bat,
  • во вкладке Условия снимаем галочку с пункта Останавливать задачу, выполняемую дольше.

Остальные настройки можно оставить по умолчанию.

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

Автоматизация клиентской части (Linux)

Аналогично серверу создаем новый юнит для запуска автоматического подключения USB-устройства:

root@Descartes:~# vi /etc/systemd/system/usbip_client.service

[Unit]
Description=usbip_client
After=network.target

[Service]
ExecStart=/bin/sh /root/script/usbip_client 
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

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

root@Descartes:~# vi /root/script/usbip_client

#!/bin/sh
apt-get install linux-tools-`uname -r` -y
sleep 1
usbip attach --remote=188.124.55.21 --busid=1-1
sleep 1
echo "Подключенные устройства:"
usbip port 

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

root@Descartes:~# chmod ugo+x usbip_client

Обновляем конфигурацию systemd и добавляем юнит в автозапуск:

root@Descartes:~#systemctl daemon-reload
root@Descartes:~#systemctl enable usbip_client

Как USBIP в очередной раз «спас мир»


Удаленный доступ к USB-устройствам по сети продолжает решать многие задачи в мире IT. Это может быть организация доступа к камере видеонаблюдения в серверной стойке современного дата-центра, где, как правило, запрещено размещать собственные точки Wi-Fi. Или же настройка удаленного доступа к аппаратным USB-ключам с дорогостоящими лицензиями проприетарного ПО, что защищает их от физического воздействия человека (поломки, утери и т.д.).

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

Понравилась статья? Поделить с друзьями:
  • Расшаренный принтер перестал печатать windows 10
  • Расшаренный принтер не виден в сети windows 10
  • Расположение образа системы windows 10 в сети
  • Расшаренный принтер на windows xp не подключается к win 10
  • Расположение некоторые параметры скрыты или управляются вашей организацией windows 10