Daniele Tosatto

Application delivery and virtualization news

Virtual Reality Check (VRC) Project, the independent benchmark validated by both Citrix and VMware, is back with a new project: VDI Smackdown.

The 33-pages free report is a feature comparison of the four major VDI platform available on the market: Citrix XenDesktop, Microsoft Windows Server 2008 R2 Remote Desktop Services, Quest vWorkspace and VMware View.

The document highlights the key points that should be considered when customers define their VDI strategy.

You can download the whitepaper here.

Keeping track of the technical details of Citrix and Microsoft products can be confusing, but when was the last time you took stock of licensing? While organizations strive to be in legal compliance, that can be a complex task.

The most direct way to ensure compliance is to read through the End User Licensing Agreement (EULA) of every product that you install and to maintain detailed records. Realistically, how many administrators routinely click “I Accept” vs. those that read through the entire EULA . . . that’s what I thought.

E = Enterprise edition
P = Platinum edition
**XenDesktop Enterprise or Platinum licensing required when XenApp infrastructure used to implement App-V to XenDesktop.

Citrix and Microsoft licensing was covered as part of the Application Delivery Options for XenApp and/or XenDesktopTechtalk that I delivered a few weeks ago because licensing is certainly one of the technical considerations when deciding exactly how applications should be made available to users. Of course, you must license the operating system from Microsoft and comply with vendor application licensing. But there’s more to it when it comes to licensing for XenApp, XenDesktop, and/or App-V functionality.

Of course, XenDesktop Enterprise and Platinum licensing incorporates the respective edition of XenApp. Bottom line is that if you have XenDesktop Platinum licensing, you get all of the listed Citrix technologies.

Okay, what about Microsoft licensing? Just when you thought you understood it, there are a number of changes coming on July 1st. What you previously knew as VECD licensing doesn’t exist anymore. And there’s more . . .

The table above gives you a high-level overview of Microsoft licensing. A few notable items:
• SA or VDA licensing is required for the endpoint. The difference is whether the endpoint is a Windows-based device or a non-Windows-based device.
• Terminal Services/Remote Desktop Services Client Access Licenses include App-V to XenApp servers. However, where App-V will be used on virtual or physical desktops, additional licensing is required.

For more information on Microsoft licensing, please see:
http://download.microsoft.com/download/5/0/5/5059CBF7-F736-4D1E-BF90-C28DADA181C5/Microsoft%20VDI%20and%20Windows%20VDA%20FAQ%20v2%200.pdf
http://download.microsoft.com/download/C/6/7/C673E444-6DDD-40B8-B29F-625354F2A8F7/Licensing_Windows_for_Virtual_Desktops_Whitepaper.pdf
http://blogs.technet.com/b/yungchou/archive/2010/06/11/microsoft-vdi-licensing-primer.aspx

Have you heard of the XenApp 6 Migration Tool?

http://support.citrix.com/article/ctx125471
You can use the the cmdlets to move XenApp settings from a legacy XenApp 5 server farm and move them to a new XenApp 6 farm.
Below are the requirements, and available cmdlets you can use for migrating:
Requirements and Install:
http://support.citrix.com/proddocs/index.jsp?topic=/xenapp-w2k8-migrating/ps-migrate-xa6-requirements-install.html

  • .NET Framework 3.5 SP1
  • MSI 3.0
  • PowerShell 2.0

How To Use:

http://support.citrix.com/proddocs/index.jsp?topic=/xenapp-w2k8-migrating/ps-migrate-xa6-using-cmdlets.html

CMDLETS:

(For complete PowerShell syntax, type Get-Help cmdlet)

http://support.citrix.com/proddocs/index.jsp?topic=/xenapp-w2k8-migrating/ps-migrate-xa6-cmdlet-ref.html

Cmdlet

Description

Add-XAServerMapping Adds a server mapping.
Add-XASettingOverride Specifies a value for an object property.
Get-XALegacySettingName Outputs the settings you can use with the Add-XASettingOverride cmdlet.
Get-XAMigrationObjectCount Outputs a count of objects in the legacy and new farms.
Get-XAMigrationOption Outputs the list of migration options.
Get-XAServerMapping Outputs the list of server mappings.
Get-XASettingOverride Outputs the list of object property value overrides.
Remove-XAServerMapping Removes a server mapping.
Remove-XASettingOverride Removes an object property value override.
Set-XAMigrationOption Sets migration options.
Start-XAMigration Starts the migration.

ADVANCED CDMLETS:

http://support.citrix.com/proddocs/index.jsp?topic=/xenapp-w2k8-migrating/ps-migrate-xa6-advanced.html

-        Get-XALegacyAdministrator
-        Get-XALegacyApplication
-        Get-XALegacyFarmConfiguration
-        Get-XALegacyFolder
-        Get-XALegacyHmrTest
-        Get-XALegacyLoadEvaluator
-        Get-XALegacyPolicy
-        Get-XALegacyPolicyConfiguration
-        Get-XALegacyPolicyFilter
-        Get-XALegacyServer
-        Get-XALegacyServerConfiguration
-        Get-XALegacySessionPrinter
-        Convert-XALegacyObject
-        New-XALegacyConnection
-        Remove-XALegacyConnection

If using hosted shared desktops or hosted VM-based VDI desktops, those virtual desktops are located within the data center with other critical systems.  If a virus made it into the data center, the entire infrastructure is at serious risk.  However, simply adding an antivirus solution to the virtual desktop can protect the environment. So what’s the big deal? Just do it right?  Well, nothing is as simple as one expects it to be.  Antivirus can have a major impact on the virtualization infrastructure, and even cause users to experience poor virtual desktop performance, if done improperly.

If the virtual desktops are streamed with Provisioning services, and those desktops start a full system scan at roughly the same time. Provisioning services only streams the portions of the disk image that are required.  However, if a full system scan is done,  those virtual desktops will eventually request the entire vDisk image. This not only overwhelms the network and Provisioning services, but also impacts the storage infrastructure as the write cache is utilized and explodes in size. Overcoming these issues is a fairly easy matter and is based on the following recommendations:

  1. The desktop image must be free from viruses. It is recommended to do a full system scan in private image (read/write) mode. This guarantees the image is clean.
  2. When the desktop image is in standard mode (read-only), the antivirus should be configured as follows:
    1. Only scan create/modify activities of files
    2. Scan on write events only
    3. Scan local drives only
    4. Exclusions
      1. Pagefile
      2. Print Spooler directory
      3. Write cache file
      4. EdgeSight database
      5. ICA client’s bitmap cache directory
    5. Remove the antivirus configurations from the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
      \Current Version\Run registry key
  3. Reconfigure antivirus so that the virus definitions file is stored on a persistent disk so antivirus doens’t have to download the entire definition file on each startup.

The RD Virtualization Host Capacity Planning in Windows Server 2008 R2 is now live on the Download Center.  This white paper is intended as a guide for capacity planning of RD Virtualization Host in Windows Server 2008 R2. It describes the most relevant factors that influence the capacity of a given deployment, methodologies to evaluate capacity for specific deployments, and a set of experimental results for different combinations of usage scenarios and hardware configurations.

Microsoft has published a new App-V Knowledge Base article.  This one talks about an issue where you may get Error 80070643 when trying to install App-V 4.5 SP2 via Microsoft Update:

=====

Symptoms

You receive an “Error 80070643″ error message when you try to install Microsoft Application Virtualization (App-V) 4.5 SP2 on the Microsoft Application Virtualization Client via Microsoft Update.

Resolution

Install Microsoft Application Error Reporting before installing the Microsoft Application Virtualization 4.5 SP2 update.
When installing Microsoft Application Error Reporting, you must use the APPGUID parameter to specify the App-V product code. The product code is unique for each App-V client type and version. Select the correct product code of the existing App-V release from the following table.

image

Note: If you need to find the product code, you can use the Orca.exe database editor or a similar tool to examine Windows Installer files to find the value of the ProductCode property. For more information about using Orca.exe, see Windows Installer Development Tools (http://go.microsoft.com/fwlink/?LinkId=150008).

1.     Locate the Microsoft Application Error Reporting install program, dw20shared.msi, which can be found in the Support\Watson folder on the release media.

2.     To install the software, run the following command:

msiexec /i dw20shared.msi APPGUID={valuefromtable} REBOOT=Suppress REINSTALL=ALL REINSTALLMODE=vomus

If you try installing the App-V server and get error 25100 or 25109 then take a look at this one:

Symptoms

When you attempt to install the Application Virtualization 4.5 Management Server either through a typical installation option or a custom option that includes the Application Virtualization Management Web Service on Windows Server 2008 or Windows Server 2008 R2, you may encounter the following error:
Error 25100. An internal error occurred.
or
Error 25122. The installation program was unable to register the ASP.NET web service extension.

Cause

This issue happens when trying to install the Application Virtualization Management Service version 4.5 on a Windows Server 2008 or Windows Server 2008 R2 server that has either the .NET 4.0 client profile or full installation of the .NET 4.0 framework. This issue occurs because the installer attempts to use the .NET 4.0 Framework path for registering the ASP.NET web extensions.
You will also see the following in the Softgrid-server-setup.log file:
[2010-04-22 16:29:57] (1408:3660) Running command “”C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe” -ir -enable“.
[2010-04-22 16:29:57] (1408:3660) ::CreateProcess error 0×2.

For the latest version of this article and details on the resolution see KB2212140.

From an App-V point of view, App-V with HTTP deployment method is not too complicated, but there are some aspects that have the potential to cause confusion in the community and with this Microsoft hope to avoid the confusion and hopefully, one can test, play and deploy this method with confidence.

In this article, we will discuss the following:

The configuration of IIS

- The installation of IIS

- The creation of the virtual directory

- The MIME types

The creation and configuration of the Publishing Document

- How HTTP streaming works with App-V and how we use and create the Publishing Document

- Testing the Publishing Document

The configuration of the App-V Client

- The configuration of the HTTP server

- The configuration of the App-V client settings

- More information

For the creation of this document, a Windows Server 2008 R2 machine has been used with Internet Information Services 7.5 and a Windows 7 client with App-V for Windows Desktops 4.6 x64.

The configuration of IIS

The configuration of the IIS server is not that complicated for use with App-V; however, there are some things we should keep in mind.

The installation of IIS

When installing IIS for App-V, we should make sure the following role components are installed:

· Common HTTP Features – ALL except HTTP redirection

· Application Development – ALL

· Health and Diagnostics – HTTP logging and Request Monitor only

· Application Development – ALL

· IIS 6 Management Compatibility – ALL

· Security – ALL authentication options

· Management Tools – ALL

The creation of the virtual directory

A virtual directory in IIS must be created in order to represent the App-V content share that contains all application packages. The virtual directory has to be pointed to the location where the content share is. The content share should be configured as a default file share. For the virtual directory, the default settings can be maintained, but make sure that the virtual directory is located under the default website and that Directory Browsing and Read are checked.

The MIME types

In IIS, we have to configure a couple of MIME types to make sure we can handle the App-V files properly. Below is a summary of these MIME types:

image

The creation and configuration of the Publishing Document

Whether HTTP Publishing and Streaming works or fails depends mostly on the Publishing Document. The Publishing Document is an .aspx page to which the App-V client connects to send its request for applications (icons, FTA’s etc.). If the Publishing Document is not functioning properly for any reason, the clients will not be able to connect and the App-V applications will not work. There are several methods to create a proper Publishing Document, some of them are easy and some complicated and some of them are suited for quick tests and some not.

We can create a Publishing Document manually, which is a good one for testing purposes. However, when we are looking for a larger deployment, we would not be happy to process each application package manually. This would also be prone to errors and it would require manual modification when a new package is deployed to the environment. Because this is not desired, we can also use more complicated ways to achieve our goal, making our lives much easier in the end by creating your Publishing Document automatically.

How HTTP streaming works with App-V and how we use and create the Publishing Document

When we deploy App-V with Management or Streaming servers, the App-V clients are configured to point to the App-V server, which handles their request. When we only use IIS for the publishing and streaming of App-V applications, we need to have a slightly different approach.

From a client perspective, we do not have to do much, except configuring it to point to a HTTP server and configure some settings. However, from the IIS point of view, we should understand some things before we can implement this properly.

When the App-V client performs a Desktop Configuration Refresh (DC Refresh), it sends a request to the IIS server. With this request, the client is asking what applications are available, and where icons should be placed and whether this application has File Type Associations (FTA’s). The client needs to receive this information in XML format.

Therefore, in order for the client to get all information properly, we have to make sure that this information is accurately available on the IIS server. In order to achieve this, we have to make a Publishing Document. This Publishing Document is an .aspx file that is located in the root of the content directory. The client needs to be pointed to this page in order to work, but this will be discussed later on. This Publishing Document needs to contain information about the Desktop Configuration, which includes (but is not limited to) the Refresh Settings, the Refresh Interval, Reporting Settings and of course, the Applist.

A basic Publishing Document looks like this:

image

The POLICY part of the document will specify how (and if) the Desktop should be configured, whether we want a refresh on login to occur or not and on what interval and whether we want to enable reporting.

The part between the APPLIST tags is interesting. This is the part where the XML should be placed that specifies the applications, their icons and FTA’s etc. Back in the old days, there was no ‘easy’ way to create this piece of information. We had to perform a DC refresh on a client with Verbose Logging enabled, because that way the complete APPLIST was parsed to the client in the App-V Client Log. We could then reuse this piece to create the Applist in the Publishing Document.

Nowadays, this is much easier. When we create an App-V package, the Sequencer creates an XML manifest file for each application, and this manifest file contains all publishing information. An example of a manifest file looks like this:

image

As we can see here, we have a ready-to-go APPLIST section. This part can be used to automatically create the APPLIST, making our lives very easy.

We can configure the Publishing Document to call another piece of code that parses all manifest files of all applications on the Content Share so that a proper Publishing Document is created. For this to work, we need to modify the original Publishing Document a bit:

image

As you can see, we have added a section at the top of the page. This piece is referring to a class file called publishing.aspx.cs and this code is responsible for parsing the XML manifest files that exist on the content share. This code also makes sure that the parsed info will be placed in the Publishing Document between the APPLIST tags. So simply said, the Publishing Document calls a CodeFile class file, and this class file is responsible for the creation and placement of the APPLIST. Below is an example of the Class file. Please note that there are various options for this file, and that it is not limited to the example below. In this example, we use a C# method that uses an algorithm to check for XML manifests files and to process the info to the APPLIST.

image

Testing the Publishing Document

When we have created the Publishing Document, we can test it to see if it works. Of course, when your App-V Client refreshes, publishes and launches applications correctly, it seems to be working just fine but if this does not work, we need to troubleshoot this. When we move to the IIS server and browse to the publishing.aspx page from Internet Explorer, we should see an error, and it should also be telling us where this error is located. An example is a failing DC Refresh, resulting in the error below (0A-400001F4). This error basically means that the IIS Server returns an Internal Error 500.

image

When we now browse to the publishing page from the Internet Explorer, we get a more detailed error:

image

This would be the best way to troubleshoot these kinds of issues. Even a verbose App-V client log will not show detailed info on the problem in the Publishing Document.

When the DC refresh is happening properly, but applications that are not published or launched, we have an issue in another part of the configuration (probably the client configuration).

The configuration of the App-V Client

As mentioned earlier, the configuration of the server on the client is not that difficult. However, there are some settings we should keep in mind in order to have a succesfull deployment.

The configuration of the HTTP server

In the server section of the App-V Client Management Console, we need to specify a name for the server, which can be anything you like. The hostname should represent the machine name that runs the IIS server. When selecting a Standard HTTP Server as the server type, the port will be automatically changed to port 80. The path to the Publishing Document should be in the format /content/Publishing.aspx if the aspx page is in the content directory.

The configuration of the App-V client settings

In the App-V Client registry, we should configure the SourceRoot for the Applications, Icons and OSD’s.

This can be configured here: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftGrid\4.5\Client\Configuration:

image

This would make the deployment of applications much easier. Setting these SourceRoots makes sure that the Client always looks in the right directions for the necessary files. When configured the SourceRoot overwrites the part before the subfolder in the HREF section of the OSD file. For example, when the OSD is set to RTSP://server:554/appsubfolder/app.sft and the ASR is set to \\branchserver\content, the RTSP://server:554 part will be overwritten by \\branchserver\content.

In order to make this work, we have to make sure that the subfolders are properly configured in the applications XML manifest (which can be done on the Sequencer). When we look at the below snippet of a manifest file, we see that it points to %SFT_MIME_SOURCE%/DeepZoomComposer.osd for the OSD.

image

Usually, the application files are located in a subfolder on the content share. If this would be the case, and if the package would be located in \\appvcontent\deep zoom composer, and we would set the ASR to http://IISSERVERNAME:80/contentname, this would fail because the client will look in http://IISSERVERNAME:80/contentname/DeepZoomComposer.osd. So on the sequencer, we should make sure the Package Folders are set right so that we do not have to modify the XML manifests afterwards.

When we have issues with the locations, we can see this in a verbose client log very well. We would see entries like the ones below that tell us the wrong location where the client looks for the files.

Could not load OSD file http://servername:80/content/application.osd

The app manager could not create an application from ‘http://servername:80/content/application.osd’ (rc 24603C4A-40000194)

More information

HTTP Publishing in App-V (Part 1): http://blogs.msdn.com/b/johnsheehan/archive/2009/03/24/http-publishing-in-app-v-part-1.aspx#comments

Support for Client Reporting over HTTP: http://technet.microsoft.com/en-us/library/ee956912.aspx

How to Configure the IIS Server: http://technet.microsoft.com/en-us/library/cc843650.aspx

.NET Framework General Reference – @ Page:

http://msdn.microsoft.com/en-us/library/ydy4x04a(vs.71).aspx

http://msdn.microsoft.com/en-us/library/ydy4x04a(VS.85).aspx

If you were asked what desktop resources your needed how would you answer? If you ask me what type of desktop I need, I’m going to say, 2+ cores with at least 4+ GB of RAM, 500+GB hard drive, etc. If you look at what I really need, you will see 1 core and maybe 2-3 GB of RAM. In fact, when I look at my resource consumption, I get close to 2.5 GB of RAM by the end of the day due to the number of applications I have running, memory leaks in some of my applications, and applications not freeing up memory when closed.

Like me, many users only consume a fraction of their total potential desktop computing power, which makes desktop virtualization extremely attractive. By sharing the resources between all users, the overall amount of required resources is reduced. However, there is a fine line between maximizing the number of users a single server can support and providing the user with a good virtual desktop computing experience.
Improperly allocating resources to the virtual desktops is the 7th most common mistake make. Other mistakes, discussed previously, include:

10. Not calculating user bandwidth requirements

9.   Not considering the user profile

8.   Lack of Application Virtualization Strategy

One of the lessons we learned from virtual desktop implementations is trying to push the hypervisor, any hypervisor, too hard results in a poor user experience. The following recommendations help optimizing the environment by focusing on the hypervisor:

Parameter Hypervisor Description
CPU Allocation Citrix XenServer
Microsoft Hyper-V
VMware vSphere
Users should start with a single vCPU and be granted a second if needed due to the following:

  • Most user-based applications are only single-threaded and will not benefit from a multiple CPU configuration.
  • Many user applications do not require significant amounts of processing, which negates the need for more CPU power.
  • By allocating multiple vCPUs for each virtual desktop, extra resources are required to switch requests across the different cores.
Command Tuning Citrix XenServer
Microsoft Hyper-V
VMware vSphere
The XenDesktop controller sends low-level commands to the hypervisor layer to perform tasks on the virtual machines (start, stop, reboot, etc). If too many tasks are sent out simultaneously, the connection to the hypervisor layer can become sporadic. These tasks often have a large impact on the server resources, which impacts the users. It is advisable to throttle the number of commands sent
Transparent Page Sharing VMware vSphere Transparent Page Sharing allows the vSphere hypervisor to share portions of memory that are identical between virtual machines. This has the potential to improve the virtual desktop performance by having a positive impact on memory consumption.This feature will typically only provide value in older operating systems, like Windows XP and Windows Server 2003, which have 4KB memory pages.  Newer operation systems, like Windows 7 and Windows Server 2008, have large memory pages (2MB) by default. The larger memory pages makes the likelihood of finding exact duplicates of memory very difficult.
Memory Ballooning
Memory Overcommit
VMware vSphere
Note: XenServer and Hyper-V support for dynamic memory is new. It is assumed the results will be similar, but testing is required.
Memory ballooning or memory overcommit shifts RAM dynamically from idle virtual machines to active workloads. Memory ballooning artificially induces memory pressure within idle virtual machines, forcing them give back memory so other virtual machines can consume it (each hypervisor does it differently but the overall concepts are similar).
In practical applications, this has shown to be an impediment to positive user experiences. Forcing virtual desktops to free up memory is only a temporary solution. If a large group of idle or low-usage virtual desktops become active (after lunch, for example), they will require more memory. But if many of the virtual desktops on the same hypervisor are experiencing increased loads, where will the extra memory come from? With no free memory, the hypervisor is forced to page to disk, which is slow.
A desktop is not a server. A desktop is running desktop applications which often have more memory leaks and poor cleanup processes when compared to server applications. Most desktops consume more memory as the day progresses due to these leaks, which will put strain on any overcommit feature. It is advisable to disable this feature.

Feature Overview

The goal of RemoteFX USB redirection is simple: the user should be able to use any device they want, and have it just work. RDP has numerous high-level redirections that allow specific types of devices to be used effectively in a remote session, such as:

  • Easy Print, which allows users to print to local printers in remote sessions
  • Drive Redirection, which allows users to access the file system on any local drive in a remote session, including USB drives
  • Smart Card Redirection, which allows users to authenticate to and in a remote session by using smart cards/e-tokens
  • Plug-and-Play Device Redirection, which allows users to access PTP digital cameras, MTP music players, and POS for .NET devices in a remote session, among others
  • Input Redirection, which allows the use of keyboards/mice in remote sessions
  • Audio Redirection, which allows recording and playback of audio in remote sessions
  • Port Redirection, which allows the use of serial and parallel ports in remote sessions

However, there are many devices which are not covered by these redirections, such as scanners, multifunction printers, webcams, and more. RemoteFX USB redirection acts as a catch-all mechanism that redirects these USB devices! Unlike high-level redirections such as drive redirection, RemoteFX USB redirection happens at the port protocol (USB request block or URB) level, and is similar to how one can redirect serial or parallel ports via RDP. This provides some unique advantages, as you’ll see below. However, RemoteFX USB redirection is meant to supplement high-level redirections, not to supplant them. By combining RemoteFX USB redirection with RDP high-level device redirections, you can have the best of both worlds. Here is a table that compares and contrasts the two forms of redirection.

RemoteFX USB Redirection… RDP High-Level Device Redirection…
Does not require drivers on the client Requires drivers for the device to be installed on the client
Requires the device driver to be installed on the server Generally does not require drivers on the server
Uses one redirection method for many types of devices Uses a specific, unique method for each type of device being redirected
Forwards URBs to and from the device over the RDP connection Exposes high-level device functionality in the remote session by using an optimized protocol for the device type
Enables only one session to use a device at a given time; the local client cannot use the device while an RDP session is using it Enables any number of sessions to access the device simultaneously, including the local client
Is optimized for the LAN, like the rest of RemoteFX Works with both LAN and WAN

Setting up a Basic Deployment

Now that you’ve seen what RemoteFX USB redirection can do, let’s take a look at how to set up the feature.

Prerequisites

You will need the following:

  • A RemoteFX-capable client (Remote Desktop Connection 7.1 or later)
  • A virtual machine hosted on a RemoteFX host (Windows 7 SP1 or later)
Enabling RemoteFX USB redirection on the clients
  1. In order to redirect USB devices from a given machine, the RemoteFX USB redirection feature must be enabled. In Group Policy, navigate to Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Connection Client\RemoteFX USB Device Redirection, and edit “Allow RDP redirection of other supported RemoteFX USB devices from this computer.” Enable the policy, and specify whether you wish to allow all users or only admins to redirect devices.
    clip_image002
  2. On the client machines, run “gpupdate /force” (without quotes) from an Administrator command prompt to enable/disable the feature, and then restart the computer for the changes to take effect. The feature will not work until you restart.
Using the feature
  1. On the client, open Remote Desktop Connection. If the tabs are not listed, click Options to expand the dialog box.
  2. On the Local Resources tab, click More to display the Local devices and resources dialog box. If at least one supported RemoteFX USB device is connected, it should be listed in the device tree under Other supported RemoteFX USB devices.

    Note: The heading “Other supported RemoteFX USB devices” will only appear if the RemoteFX USB redirection feature is enabled on the client (apply the Group Policy setting, run gpupdate, and then restart) and at least one supported RemoteFX USB device is connected and available for redirection.
    clip_image003
    clip_image004

  3. After you are connected, the devices that you have selected should appear in the remote virtual desktop.
    clip_image005