Одним из существенных недостатков Hyper-Vперед другими гипервизорами (например, ESXi или Proxmox) являются отсутствие полноценной возможности пробрасывать USB устройства с хоста в виртуальные машины. Начиная с версии Hyper-V 2012 R2 появился ряд изменений, касающихся возможностей USB Passthrouth, однако этот функционал все еще уступает возможностям конкурентов. В этой статье мы расскажем об особенностях проброса USB устройств в Hyper-V.
Особенности USB Passthrough в Hyper-V
Под термином USB passthrough понимается возможность проброса USB устройства из хостового гипервизора (или по сети с другого сервера/устройства) в виртуальную машину. С помощью USB passthrough вы можете прокинуть внутрь ВМ токен, USB ключ, модем или любое другое оборудование, подключенное через USB порт.
Плохая новость в том, что в Hyper-V нет нормальной поддержки проброса USB устройств, вы не сможете пробросить любое USB устройство с физического хоста в виртуальную машину (в VMWare с этим на порядок лучше – см. статью USB passthrough в VMWare ESXi). Есть несколько встроенных возможностей использования USB устройства в Hyper-V, но у всех них есть существенные ограничения. На данный момент можно использовать следующие технологии для проброса USB устройства в Hyper-V.
- Проброс USB дисков с хоста Hyper-V;
- Расширенные возможности консоли Hyper-V — Enhanced Session Mode;
- Проброс USB устройства через RDP сессию;
- Использование программного/аппаратного средства для проброса USB по сети (USB over IP).
Проброс USB диска в виртуальную машину Hyper-V
Вы можете довольно просто пробросить подключенный к хосту USB диск напрямую внутрь любой запущенной виртуальной машины Hyper-V. Рассмотрим, как предоставить виртуальной машине Hyper-V прямой доступ к USB диску.
- Данная инструкция работает только для USB дисков, которые в системе видятся как fixed, т.е. флешки, смарт-карты и прочие removable-устройства прокинуть внутрь виртуальной машины не получится ( хотя есть небольшой трюк, позволяющий заставить Windows видеть сменное устройство как жесткий диск);
- Для таких дисков невозможно создать снапшот/чекпоинт.
- Подключите внешний USB диск к хосту Hyper-V (это может быть как любой хост с Windows и установленной ролью Hyper-V, так и Free Hyper-V Server). Диск появится в системе и ему будет назначена буква диска (если буква диска не назначилась, см. статью);
- Откройте консоль управления дисками Disk Management (diskmgmt.msc) на хосте Hyper-V. Щелкните правой кнопкой мыши по диску (левая колонка, в нашем примере USB диск размером 20 Гб имеет идентификатор Disk 1) и выберите Offline. Если у вас используется Windows Server Core или Hyper-V Server, в которых отсутствуют некоторых графические оснастки, вы можете управлять локальными дисками с помощью PowerShell модуля управления дисками. Следующие команды могут вывести список физических дисков на хосте и перевести указанный диск в режим offline:
Get-Disk
Get-Disk -Number 1 |Set-Disk -IsOffline:$true - Запустите консоль Hyper-V Manager. Откройте свойства виртуальной машины, в которую вы хотите пробросить USB диск. Добавьте новый диск в разделе SCSI Controller. Укажите, что это физический диск (Physical hard disk). В выпадающем меню выберите ваш USB диск (он будет выглядеть как-то так: Disk 1 20.00 Gb Bus 0 Lun 0 Target 1).Примечание. Не нужно выключить виртуальную машину при добавлении SCSI жесткого диска. Для SCSI устройства поддерживается горячее добавление и удаление дисков (hot-add и hot-remove).
- Теперь покажем, как получить доступ к USB диску на Hyper-V хосте из гостевой ОС виртуальной машины на примере Windows. Откройте консоль виртуальной машины или подключитесь к ней по RDP(как включить rdp). Авторизуйтесь в гостевой ОС. Запустите диспетчер дисков. ОС должна увидеть новый диск. Если он находится в оффлайн статусе, щелкните по нему провой кнопкой и выберите Online. На данный момент разделам на диске не назначены буквы дисков или точки монтирования. Чтобы исправить это, щелкните ПКМ по разделу на диске и в контекстном меню выберите Change Drive Letter and Paths. Назначьте разделу любую свободную букву диска или укажите точку монтирования.
Все! Вы напрямую пробросили внешний USB диск внутрь виртуальной машины Hyper-V и можете его использовать.
Для безопасного извлечения USB диск можно открыть консоль Hyper-V Manager и перейти в окно настроек виртуальной машины. В разделе SCSI Controller выберите жесткий диск, который нужно удалить и нажмите Remove. Сохраните изменения. После этого жесткий диск можно физически извлечь из USB порта хоста Hyper-V.
Проброс USB устройств через Enhanced Session Mode в Hyper-V
В версии Hyper-V, представленной в Windows Server 2012 R2/ 8.1 практически любые USB устройства можно прокинуть внутрь виртуальной машины с помощью технологии Enhanced Session Mode (ESM). Для подключения используется утилита Hyper-V Manager
vmconnect.exe
. Она позволяет подключится к консоли виртуальной машины и выбрать USB устройства, которые нужно пробросить.
Сначала нужно включить Enhanced Session Mode в настройках сервера Hyper-V. Это можно сделать с помощью PowerShell:
Set-VMHost -EnableEnhancedSessionMode $true
Или в меню Hyper-V Settings -> Enhanced Session Mode.
Перезапустите службу Hyper-V Virtual Machine Management:
Get-Service vmms | Restart-Service
В разделе Integration Services настроек ВМ нужно включить опцию Guest Services.
Для проброса USB устройства через Enhanced Session Mode нужно запустить консоль Hyper-V, выбрать ВМ и нажать Connect. Либо вы можете запустить утилиту vmconnect.exe (Virtual Machine Connection), указать Hyper-V сервер и имя ВМ (утилита поддерживает некоторые параметры командной строки, поэтому вы можете отдавать пользователям настроенный bat файл).
Ели ВМ поддерживает Enhanced Session Mode, появится окно, похожее на свойства RDP подключения. Нажмите Show Option -> Local Resources -> Local device and resources -> More.
Выберите USB устройства на вашем компьютере, которое нужно пробросить в ВМ. Если устройства, которое вам нужно, сейчас не подключено, выберите опции Other supported Plug and Play (PnP) devices и Devices that I plug in later.
Теперь все подключённые к вашему компьютеру USB устройства будут автоматически доступны в консольной сессии виртуальной машины Hyper-V.
Основные возможности и ограничения Enhanced Session Mode
- В качестве гостевых ОС поддерживается только Windows (начиная с Windows 8.1/Windows Server 2012 R2);
- Вам не нужен прямой доступ к ВМ. Все подключения выполняются через Hyper-V хост (вы подключаетесь к нему через сеть по порту TCP 2179), а подключение к ВМ выполняется через шину VMBus;
- На компьютере пользователя должен быть установлен Hyper-V Manager

Методы проброса USB устройства через сеть (USB over IP или в RDP сессии) позволяют сохранить доступ к USB ключу при миграции виртуальной машины на другой хост (Hyper-V Live Migration /vMotion).
Вот из за таких «телодвижений» не люблю использовать hyper-v
Все же должно быть быстро и ясно, что бы протестировать что то на виртуальной системе
«это вам не нужно» отвечу любимой мантрой линуксоидов
Вооще в 2022, ознакомившись с аналогами, и правда не могу представить вариант, при котором обязательно использовать Hyper-V вместо бесплатного Proxmox, у которого возможности на голову выше, в том числе проброс любого устройства или порта USB, в том числе HASP-ключа, для чего в случае с виндовой виртуализацией нужно обязательно покупать отдельную железку/софтину.
Про мантру с вами согласен, но когда имеется альтернатива, похоже и правда «это вам не нужно» =)
Работаю и с Proxmox и с Hyper-V
так вот Proxmox любит менять «порт подключения» так что после ребутов самого хоста usb-устройства имеют иные «идентификаторы», и, естественно виртуалки получают не свои устройства. Приходится выключать виртуалки чтоб устройства освободить и назначить другим ВМ. особенно «радостно» становится когда несколько HASPов, например, выглядят снаружи одинаковыми и нужно методом перебора выяснять какой ключ от какого ПО и какой виртуалки. pfSense тоже от такого восторга что usb-момед не на своем месте становится в раскоряку и ждет пока ему интерфейсы переназначат заново. Так что нифига не «на голову выше». Диски перекинуть между виртуалками в Proxmos’е (по крайней мере до версии 7.0-11 так было) тоже не на раз-два: пришлось ручками конфиги виртуалок править и название дисков менять (ZFS), и, конечно же все это с остановкой самих ВМ.
Про проброс usb-устройств в Hyper-V: вообще не использовал, сказать не могу (использовал usbip с убунты, но это несколько другое решение), а вот с дисками сильно проще — на гарячую парой кликов
Данная инструкция работает НЕ только для USB дисков !!!
Любые диски, подключенные по SATA, можно подключить в виртуальную машину ( при условии, что их можно перевести в режим OFFLINE )
usb диск не получается сделать offline, нет такой опции
А проброс ключа 1C каким-то образом возможен, кроме USB over Ethernet?
USB-вебкамера так же просто?
Через Enhanced Session Mode не захотела.
У меня не видит флешку. Всё настроил. Сделайте инструкцию по ошибкам и пробросу веб-камеры
Статьи по заказу — по отдельному тарифу 🙂
ДЛя проброса USB камеры и других устройств можно использовать RemoteFX.
Включить параметр GPO «Allow RDP redirection of other supported RemoteFX USB devices from this computer» в
Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Connection Client > RemoteFX USB Device Redirection
Теперь можно подключиться к консои ВМ:
«vmconnect.exe localhost /edit» ->»Show Options», на вкладке «Local Resources» нажать «More» и выбрать камеру в разделе «Other supported RemoteFX USB Devices».
Ну и вот если уж прям совсем подробно:
_https://social.technet.microsoft.com/Forums/windows/en-US/a11eee73-86e0-4782-b2ab-60dfd19556ab/how-to-add-webcam-to-a-hyperv-virtual-machine?forum=win10itprovirt
Enable group policy changes to allow RemoteFX 3D video adapter to work in the HyperV Host
Enable group policy changes to allow RemoteFX 3D video adapter to work in HyperV Client
Enable group policy changes to allow audio to be redirected to HyperV client
Enable group policy changes to allow audio to be recorded from HyperV clientss
Allow enhanced session mode" in hyper manager - server settings
Add RemoteFX 3d Video Adapter in hyperV manager - settings for a given virtual machine
Add the resources to the VM during when a "local resources" menu pops up during boot
На эту страницу я заходил ранее. Эта инструкция для Hyper-V, где он включён как компонент Windows. Вот цитата оттуда: I was able to add my Webcam and USB headset to a VM running on my Windows 10 Pro machine
А у нас гипервизор без GUI, Window Hyper-V Server 2019, который бесплатный, там нет графического интерфейса, это Core. Всё это я пробовал, и ничего не работает. Покажите, снимите видео, где Хайпер-Ви без гуя, и посмотрим, будет ли это работать
Ок, а откуда вы планируете прокидывать USB устройства? По сети или локальные устройства с хоста? По идее при пробросе локальных устройств с самого хоста HV в ВМ все должено работать аналогично
Одной из существенных проблем гипервизора HyperV является невозможность пробросить USB устройство в виртуальную машину.
Есть решение этой проблемы — open source проект usbipd-win. С его помощью можно пробросить USB устройство, подключенное к машине под управлением Windows в любую другую по сети, либо в локальный Linux, работающий по WSL2 (инструкция от microsoft).
На базе проекта usbip существует много различных продуктов. Конкретно usbipd-win это только сервер под Windows. Я начал с него, потому что он максимально просто устанавливается и настраивается. Можно через winget поставить:
> winget install usbipd
Либо скачать msi пакет из репы. Далее смотрим список подключенных устройств и публикуем одно из них:
> usbipd list
> usbipd bind —busid=4-3
Опубликованный с помощью этого сервера ключ можно подключить к Linux или Windows машине. Под Linux достаточно установить соответствующие пакеты с утилитой и модулем ядра. Для Debian вот эти:
# apt install usbip hwdata usbutils
После этого можно смотреть список опубликованных ключей и подключать один из них:
# usbip list —remote=10.20.1.56
# usbip attach -remote=10.20.1.56 —busid=4-3
Для подключения этих ключей в Windows, нужно установить Windows Agent. Взять его можно из другого репозитория usbip-win. Там есть инструкция по установке агента. Она немного замороченная, по сравнению с установкой сервера, но ничего особо сложного нет. Вопрос решаемый.
Точно так же можно публиковать USB устройства с Linux по сети на другие машины. Есть пакет сервера и под OpenWRT. Таким простым и бесплатным способом можно решить вопрос проброса USB ключей. Для HASP работает отлично.
а для rutoken не проверяли?
Всем привет! Нужна помощь использующих Hyper-V как в последних версиях этого гипервизора ситуация с пробросом ключей Ru-Token в гостевые ОС?
Рутокен работает