Как пробросить usb порт через rdp
USB Redirector RDP Edition позволяет перенаправлять USB-устройства на удаленный компьютер при работе через Remote Desktop . Он состоит из двух частей — серверной части и рабочей станции. Таким образом, USB-устройства, подключенные к рабочей станции, становятся доступными на удаленном ПК, виртуальной машине или сервере терминалов. USB Redirector RDP Edition отлично подходит для решений Virtual Desktop / VDI, где необходимо перенаправить USB-устройства на удаленную виртуальную машину.
Использование USB-устройств в среде виртуализации десктопов
Все больше и больше крупных и малых компаний стремятся использовать виртуальную рабочую среду для своих сотрудников, потому что она гибкая, простая и безопасная. Каждому пользователю, работающему через удаленный рабочий стол, может потребоваться доступ к его / ее USB-устройствам, подключенным к рабочей станции или тонкому клиенту, в сеансе RDP на виртуальном рабочем столе. И USB Redirector RDP Edition позволяет это сделать!
Это решение является наиболее подходящим для однопользовательских приложений, где одна виртуальная машина используется только одним пользователем одновременно. Это также может быть использовано при перенаправлении устройств на сервер терминалов. Но учтите, что из-за особенностей Windows все USB-устройства являются глобальными в системе, на которую они перенаправлены. Для многопользовательских сред, где вам необходимо изолировать USB-устройства во время сеанса RDP, вы можете использовать наше другое решение USB Redirector TS Edition

USB Redirector RDP Edition работает в качестве фоновой службы
USB Redirector RDP Edition работает в качестве фоновой службы, это означает, что вам не нужно постоянно держать приложение открытым. После того, как вы закончили настройку программы, вы можете безопасно закрыть ее. USB Redirector продолжит работать даже после перезагрузки.
Перенаправление локальных USB-устройств в сеанс удаленного рабочего стола в 4 этапа
Примечание: когда USB-устройство является общим, оно не может использоваться локально, потому что оно стало доступным только для использования удаленными USB-клиентами! Чтобы снова сделать устройство доступным локально,вам нужно отменить общий доступ.
Лицензирование
Только серверная часть или USB Redirector RDP Edition должны быть лицензированы. Это означает:
- Если вы используете виртуальные машины, вам нужно столько лицензий, сколько у вас есть виртуальных машин.
- Если вы используете терминальные серверы, вам нужно столько же лицензий, сколько и терминальных серверов.
- Если вы используете обычные рабочие станции, вам нужно столько лицензий, сколько у вас рабочих станций, действующих как RDP-сервер.
Лицензия позволяет подключать определенное количество устройств. Это число для сервера, а не для пользователя.
Лицензия должна применяться на сервере терминалов / виртуальной машине.
Рабочая часть USB Redirector RDP Edition является БЕСПЛАТНОЙ.
Системные Требования
USB Redirector RDP Edition работает в следующих операционных системах (32- и 64-разрядных):
- Windows XP (SP3 или новее)
- Windows 2003 Server (SP1 или новее)
- Windows Vista
- Windows 2008 Server
- Windows 7
- Windows 2008 R2 Server
- Windows 8
- Windows 2012 Server
- Windows 8.1
- Windows 2012 R2 Server
- Windows 10
- Windows 2016 Server
Каĸ пробросить USB наĸопитель через RDP соединение?
Если не брать в расчёт такие вопросы как: «Как мне подключиться к серверу?», «Что такое VPS/VDS?», «Как поменять конфигурацию на сервере?», «Как мне играть в Майнкрафт на вашем сервере?», «Можно ли скамить мамонтов через эти ваши VPS серверы?» и др., то вопрос связанный с пробросом USB накопителей до своего VPS сервера — входит в ТОП 5 или даже в ТОП 3.
Зачем это нужно?
«Подскажите, можно ли как-то настроить сервер таким образом, чтобы при подключении флешки к моему компьютеру, файлы с неё были доступны на сервере?», «У меня макбук, как с него подключиться к моему VPS и перекинуть файлы на сервер?», «Можно ли как-то перекинуть файлы с телефона на мой сервер?» — Частые вопросы в дайджесте обращений в нашу поддержку.
Казалось бы, используй Ctrl + C, скопируй нужный файл на своём компьютере, затем подключись к серверу и нажми Ctrl + V. Но подобная процедура не всегда удобна и подойдёт скорее в тех случаях, когда необходимо перекинуть несколько небольших файлов.
А если нам необходимо постоянно работать с документами на USB накопителе? Постоянно просматривать на нём файлы, перекидывать их с USB накопителя и обратно? Или, например, на сервере расположено программное обеспечение вашей компании, а вы — сотрудник, которому необходимо отредактировать свой рабочий документ с помощью него, и при этом вы не хотите загружать свой документ на сам сервер?
Способ с простым копированием файлов через буфер обмена становится всё менее удобным. В этих случаях проще будет просто подключить нужный вам USB накопитель к вашему устройству и путём нескольких простых настроек, пробросить его до VPS сервера. Таким образом, у нас всегда будет доступ к нужным нам файлам, без необходимости прерывать работу и выходить с сервера (Также, по примерам из этой инструкции — можно будет настроить доступ не только к подключённым к вашему устройству USB накопителям, но и к любому диску/папке на устройстве).
Настройĸа USB для операционной системы Windows
Если вы пользуетесь операционной системой Windows, то каких-либо сторонних программ вам скачивать не нужно. На системах под управлением этой операционной системы, подключение USB накопителя можно настроить через встроенное официальное приложение «Подключение к удалённому рабочему столу». Для его открытия — выполните следующие команды: Пуск -> Программы -> Стандартные -> Подключение к удалённому рабочему столу Или используйте Win + R (либо щёлкните правой кнопкой мыши по кнопке «Пуск», выберите «Выполнить») наберите mstsc , нажмите ОК. В открывшемся окне необходимо выбрать пункт «Показать параметры» и указать данные для авторизации (IP, логин и пароль).
Берём эти данные из личного кабинета:

Переходим в раздел «Локальные ресурсы»:


Далее нам необходимо попасть в раздел «Локальные устройства и ресурсы» и нажать Подробнее.

В открывшемся окне выбираем пункт «Диски» и находим нужное нам USB устройство (в нашем случае это NIKON D5000 (F:) ). Также вы можете выбрать любой диск на вашем ПК и он тоже будет доступен на вашем VPS сервере.

И подключаемся к серверу. Теперь в окне управления дисками, мы видим дополнительный диск. Это и есть наше USB устройство.

Настройĸа USB для операционной системы Mac OS
Если же вы пользуетесь операционной системой Mac OS, то вам придётся выполнить несколько дополнительных действий, относительно операционной системы Windows. На Mac OS нет встроенного RDP клиента, так что для подключения к VPS серверу его необходимо скачать и установить. Существует множество различных RDP клиентов, и каждый имеет свой дополнительный функционал. Мы же для подключения будем использовать официальное приложение компании Microsoft — Microsoft Remote Desktop (Удалённый рабочий стол), т.к оно достаточно удобное и в нём есть весь необходимый нам функционал для настройки USB. Скачать его можно бесплатно в магазине App Store.

Скачиваем и запускаем RDP клиент. Если вы уже являетесь его пользователем, то, вероятно, у вас уже настроено подключение к нужному вам серверу. Если нет, то подробнее с тем, как подключиться к вашему VPS серверу из-под Mac OS, используя это ПО, вы можете ознакомиться в одной из наших статей справочника.
Теперь мы можем приступить к настройке USB накопителя. Наводим курсор мыши на нужный нам сервер и в левом нижнем углу нажимаем на кнопку с изображением карандаша (Если интерфейс вашей программы отличается, то, возможно, вы используете устаревшую, или более новую версию ПО).

В открывшемся окне переходим во вкладку «Folders», ставим галочку в пункте «Redirect folders» и жмём на + в левом нижнем углу.

Далее, в открывшемся окне «Finder», в правом столбце необходимо найти нужное нам USB устройство (в нашем случае это устройство с именем Samsung ) и нажать на кнопку Open.

Как мы видим, в списке появилось наше устройство. Теперь у нас есть доступ ко всем данным на нём, и при подключении к серверу — мы сможем ими воспользоваться. Если необходимо получить доступ только к определённым папкам, то по этому же примеру мы выбираем нужное нам устройство Samsung и затем папку (таким образом, можно получить доступ к абсолютно любой папке из Mac OS). После всех изменений жмём кнопку Save.

Готово. Теперь осталось просто подключиться к серверу и открыть проводник. Тут мы видим наш системный диск, а также — дополнительный диск с USB накопителем, подключённым к нашему устройству.

Настройĸа на операционных системах iPadOS/iOS/Android
Не только на устройствах под управлением десктопных версий ОС есть возможность предоставить доступ к папке или USB накопителю. На устройствах под управлением операционных систем iOS и Android также есть такая возможность, хоть слегка и ограниченная. Здесь есть возможность предоставить доступ лишь к одной конкретной папке на устройстве, наименование которой схоже с названием самой программы (возможно, в сторонних альтернативных клиентах есть более расширенный функционал, но наш пример построен на основе официального программного обеспечения компании Microsoft «Удалённый рабочий стол» или «RD Client» для устройств под управлением iOS/iPadOS). Скачать его можно в App Store (для iOS) или Google Play (для Android).

Настройка подключения к серверу очень схожа с версией для Mac OS. Мы также нажимаем + в левом верхнем углу и указываем данные для подключения. После запуска программы и настройки подключения к VPS серверу, нам необходимо нажать и удерживать нужный нам сервер до появления дополнительного меню. В нём мы выбираем пункт «Изменить».

Далее, нам необходимо пролистать в самый низ, до раздела «перенаправление звука и устройств» и включить ползунок на пункте «Хранилище».

В случае с iOS и iPadOS, после переключения этого ползунка — у нас появится доступ к файлам, которые находятся в приложении Файлы -> На iPad/iPhone -> RD Client.

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

Пара слов в заĸлючении
Как видно, эта процедура достаточно проста и не требует каких-либо специфических навыков. Справиться может любой и даже самый неискушённый пользователь. Вы можете задаться вопросом — «А как же Linux?». Удивительно, но за 3 года работы на этой должности, мне ни разу не попадался пользователь, который поинтересовался бы — «А как пробросить USB порт на Linux?». Вероятно, они из совсем другой лиги и подобных вопросов не задают. Тем не менее — мы протестировали несколько клиентов для этой ОС на возможность проброса USB, но нужный функционал нашёлся только в «xfreerdp», взаимодействие с которым осуществляется только через терминал.
Это не совсем то, что нужно и если кто-то из читателей знает RDP клиенты для Linux, в которых реализован такой же простой функционал, как и в версиях для Windows, Mac OS, iOS и Android — будем рады почитать про это в комментариях.
Проброс USB-портов из Windows 10 для удалённой работы
Когда человек много лет рыл бункер и запасал там продукты, он должен испытывать глубокое моральное удовлетворение, если бункер понадобился. Он будет довольный заявлять: «А я говори-и-и-ил!» То же касается и того, кто делал запасы продуктов в кладовой, когда все закупались в магазинах только на сегодня. А вот с нашим комплексом для удалённой работы Redd как-то и не хочется злорадствовать. Он проектировался для удалёнки в мирное время. И использовался задолго до первых новостей из Китая.
Давно я про него ничего не писал. Другие проекты отвлекают, да и интерес, судя по рейтингу последней из опубликованных статей, уже упал. Сил на подготовку статьи отнимают много, и это имеет смысл делать только если оно нужно достаточному числу читателей.
Но так как сейчас удалёнка у всех на устах, возникло желание поделиться одной наработкой, которая может кому-то помочь. Это не наша разработка, я проводил исследования в рамках работы над сервисом удаленной работы с отладочными платами All-Hardware. Вот их результаты сейчас и опишу. Проект USB/IP известен многим. Но он давно свёрнут авторами. Самые свежие драйверы были под WIN7. Сегодня я опишу, где скачать вариант для WIN10, и покажу, как я его проверял. Кроме того, разработчики современного аналога уверяют, что у них сделан не только Windows-клиент, но и Windows-сервер (правда, в этом режиме я тестирование не вёл: задача того не требовала). Но кому-то это тоже может оказаться полезным.
Предыдущие статьи цикла
- Разработка простейшей «прошивки» для ПЛИС, установленной в Redd, и отладка на примере теста памяти.
- Разработка простейшей «прошивки» для ПЛИС, установленной в Redd. Часть 2. Программный код.
- Разработка собственного ядра для встраивания в процессорную систему на базе ПЛИС.
- Разработка программ для центрального процессора Redd на примере доступа к ПЛИС.
- Первые опыты использования потокового протокола на примере связи ЦП и процессора в ПЛИС комплекса Redd.
- Веселая Квартусель, или как процессор докатился до такой жизни.
- Методы оптимизации кода для Redd. Часть 1: влияние кэша.
- Методы оптимизации кода для Redd. Часть 2: некэшируемая память и параллельная работа шин.
- Экстенсивная оптимизация кода: замена генератора тактовой частоты для повышения быстродействия системы.
- Доступ к шинам комплекса Redd, реализованным на контроллерах FTDI
- Работа с нестандартными шинами комплекса Redd
- Практика в работе с нестандартными шинами комплекса Redd
Введение
Сначала краткий рассказ, что такое 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 позволит бросить оборудование в произвольных местах.
- системное программирование
- Redd
- USB-порты
- USB-устройства
- USB
- удалёнка
- удаленная работа.
- Системное программирование
- Программирование микроконтроллеров
- Компьютерное железо
Как пробросить usb порт через rdp




Проброс USB порта
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот