USB Redirection for WVD

I thought I would do a quick post on getting USB redirection working on the WVD Spring 2020 Release.

By standard WVD has some higher level redirection configured already (remote audio etc) but not all settings are automatically in place for USB redirection which requires RemoteFX settings.

With the new Spring 2020 release there was added the ability to configure RDP Settings via the Azure Portal. This was really welcome but unfortunately not all options are available to you there.

To check the available settings go to the Window Virtual Desktop service in the portal and go to Host Pools.

Select the relevant Host Pool and click Properties.

All the lovely RDP Settings

If you select the RDP settings option, you will see all the configurable options for the Host Pool. This easily allows you to turn on Audio Input for microphone support.

Adding USB Direction with PowerShell

The standard settings are good, but one thing it does not allow is USB direction for Plug and Play devices. In order to do this we need to crack out PowerShell!

First ensure you have installed the new WVD PowerShell Module. If not run the following.

Install-Module -Name Az.DesktopVirtualization

As the new WVD Spring 2020 Release is ARM we first need to connect to Azure.

$creds = Get-Credential
Connect-AzAccount -Credential $creds

Once connected get the Azure Subscriptions.

Get-AzSubscription

Select the relevant subscription

Get-AzSubscription -SubscriptionName <Name> | Select-AzSubscription

Now we need to get the relevant WVD Host Pool and set the RDP Settings to allow USB device direction.

Run the following to get the current RDP settings for the Host Pool.

Get-AzWvdHostPool -ResourceGroupName <Resource Group Name> -Name <Host Pool Name> | Select CustomRdpProperty

We now need to amend the RDP Settings to include the following setting

devicestoreredirect:s:*;camerastoreredirect:s:*;

This is done as below taking the existing RDP Settings and adding the extra settings (seen at the end)

Update-AzWVDHostPool -ResourceGroupName <Resource Group Name> -Name <Host Pool Name> -CustomRDPProperty "audiocapturemode:i:1;audiomode:i:0;drivestoredirect:s:;redirectclipboard:i:1;redirectcomports:i:0;redirectprinters:i:1;redirectsmartcards:i:1;screen mode id:i:2;devicestoreredirect:s:*;camerastoreredirect:s:*;"

Once completed re run the Get-AzWvdHostPool command to check it has applied.

Required Group Policy

Next we need to set GPO settings on both the client and the Session Host.

Client Side

The client settings are simple and can be applied individually for test, or via AD across multiple servers.

On my machine I have added the policy under Local Group Policy as my machines is not domain joined.

Under Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Connection Client > RemoteFX USB Device Redirection

Enable the policy Allow RDP Redirection of other supported RemoteFX USB devices from this computer

Server Side

On the Session Hosts you will need to configure the following setting.

Under Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Device and Resource Redirection

Disable the policy item Do not allow supported Plug and Play device redirection

This seems odd to Disable the policy, but the default is to NOT allow USB redirection of supported Plug and Play devices. Therefore, disabling this policy actually enables the redirection.

Now we should be all set to test out USB direction in the client!

Testing!

First login to the WVD platform. You will need to use the Remote Desktop Client as the USB redirection will not work through the HTML 5 web client.

Once you have connected you should see a fancy new icon on the Remote Desktop bar. This icon allows you to select which local USB devices are in use within the WVD session.

The Local Devices and Resources icon should now show

I am going to select my Xbox 360 wired controller to do a little gaming on my GPU accelerated WVD server 🙂

Simply click the icon. Then select the USB devices you wish to pass through, click OK and away you go.

Connected USB devices should show

I then loaded up Super Meat Boy and had a quick test. Controller recognised and all good to go!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s