Windows Server Remote Desktop Services (RDS) is used to present server-based desktop sessions across the network to thin clients or PCs, but it has always been limited by slow graphics rendering, restricting the programs that can be delivered to simple office productivity applications.
Furthermore, in Windows Server 2008 R2 prior to SP1, virtual machines hosted on Hyper-V weren’t able to directly harness the processing power of the server’s physical GPU, limiting the real-world applications of Microsoft’s VDI solution.
But with Microsoft’s 2008 purchase of Calista Technologies, which provides an extension to the remote desktop protocol (RDP) for virtualizing the entire GPU, it’s now possible to stream high-quality 3D graphics and audio over RDP, including multimedia applications, and redirect a wider range of USB devices.
This technology was rebranded by Microsoft as RemoteFX and consists of three main features:
- Hardware-accelerated compression for Remote Desktop Clients over a LAN
- Superior USB redirection; for example, making USB devices connected locally to PCs or thin clients available in remote server-based desktop sessions
- Server-side GPU rendering for 3D graphics in VMs
The Hyper-V Remote Desktop (RD) Virtualization Host server role supports all of these RemoteFX features, but the Remote Desktop Session Host (terminal services) role only supports hardware-accelerated compression.
Hardware-accelerated compression for the RDP protocol and GPU-rendered 3D graphics in VMs enable graphic- and multimedia-intensive applications, such as Aero-enabled Windows desktops and 3D CAD programs, to be delivered to thin clients in a virtual desktop infrastructure over a LAN.
While the RDP protocol has supported high-level redirection of USB devices for some time, RemoteFX can redirect previously unsupported devices, such as webcams, scanners and multifunction printers. RemoteFX USB redirection must be enabled using the Allow RDP redirection of other supported RemoteFX USB devices from this computer setting on clients in Group Policy under:
Computer Configuration | Administrative Templates | Windows Components | Remote Desktop Services | Remote Desktop Connection Client | RemoteFX USB Device Redirection
For Windows RD Virtualization Host servers, the CPU must support Second-Level Address Translation (SLAT). This is referred to as Extended Page Tables (EPT) on Intel processors and Nested Page Tables (NPT) on AMD products. The server should have at least one GPU with dedicated video memory that supports both DirectX 9.0c and DirectX 10.0. Check with the GPU’s manufacturer to ensure that the card supports RemoteFX.
If you intend to install multiple GPUs in one server or utilize Hyper-V’s Live Migration feature to move virtual workloads between servers, ensure that the GPUs are all identical. Microsoft states that the current release of RemoteFX can support up to 12 virtual machines per physical GPU. RemoteFX hardware encoders can also be installed in servers for increased scalability.
When installing RemoteFX on a RD Session Host server, the CPU must additionally support Streaming SIMD Extensions 2 (SSE2). Remote Desktop clients need to run Windows 7 Service Pack 1 or another Windows OS that supports the Remote Desktop Connection 7.1 client, such as Windows Thin PC.
Installing and Configuring RemoteFX
This example shows how to configure RemoteFX where the RD Virtualization Host and Session Host server roles are already installed on one server as a basic VDI solution. Before following the instructions below, make sure you have a good understanding of Hyper-V. For more information, see Go Virtual with Hyper-V.
First, start by adding RemoteFX to the RD Virtualization Host:
- Open Server Manager from Administrative Tools on the Start menu.
- In the left pane of Server Manager, select Roles.
- In the right pane of Server Manager, locate the Remote Desktop Services section and click Add Role Services.
- In the Select Role Services Wizard, check RemoteFX under the Remote Desktop Virtualization Host node and click Next.
- On the Confirm Installation Selections screen, click Install.
- On the Installation Results screen, click Close and then restart the server as prompted.
- Open Remote Desktop Session Host Configuration from the Remote Desktop Services folder under Administrative Tools on the Start menu.
- In the central pane of the console, right click RDP-Tcp under Connections and select Properties from the menu.
- Switch to the Client Settings tab, check Limit Maximum Color Depth and make sure that 32 bits per pixel is selected. Click OK and close the Remote Desktop Session Host Configuration console.
- In the Search programs and files box on the Start menu, type gpedit.msc to open the Local Group Policy Editor.
- Locate the Configure RemoteFX setting under Computer Configuration | Administrative Templates | Windows Components | Remote Desktop Services | Remote Desktop Session Host | Remote Session Environment and set it to Enabled.
- Open Hyper-V Manager from Administrative Tools on the Start menu.
- Right click the VM where you want to enable RemoteFX in the central pane of Hyper-V Manager and select Settings from the menu.
- Under Hardware in the left pane of the Settings dialog, select Add Hardware.
- In the list of available hardware on the right, select RemoteFX 3D Video Adapter and click Add.
- On the following screen, configure the supported number of monitors and screen resolution and click OK.
- On a Windows 7 SP1 machine that has a connection to the LAN on which the RemoteFX-enabled VM is connected, type Remote Desktop Connection in the Search programs and files box on the Start menu.
- Switch to the Experience tab in Remote Desktop Connection. To ensure RemoteFX is enabled for the connection, select LAN (10 megabits per second or higher) from the drop-down menu under Choose your connection speed to optimize performance.
Figure 1 – Select Role Services (RemoteFX)
While RemoteFX hardware-accelerated compression is supported by RD Session Hosts, RemoteFX is an installable role service for the RD Virtualization Host role only.
Once the server has rebooted, configure the RD Session Host role to enable support for RemoteFX:
Figure 2 – RDP-Tcp Properties
Next, configure the Hyper-V VMs to support RemoteFX. Note that to complete the following procedure, the VM you wish to configure must be shut down. Additionally, ensure that Remote Desktop Services is configured and working in the VM before adding the RemoteFX 3D video adapter hardware so that you can continue to connect to the VM once the RemoteFX video adapter driver has installed:
Figure 3 – Hyper-V Manager VM Settings Dialog
Now start the VM from the Hyper-V Manager console and the driver for the new RemoteFX adapter should install. Restart the VM as prompted. Once the driver for the RemoteFX adapter has installed in the VM, it’s no longer possible to connect to the VM from the Hyper-V Manager console.
Finally, configure the Remote Desktop Connection client on a Windows 7 SP1 machine so that you can connect to the RemoteFX-enabled VM:
Figure 4 – Remote Desktop Connection
You can now connect to the VM by entering its IP address or DNS name on the General tab and enjoy the Aero theme and other capabilities enabled by RemoteFX in the Remote Desktop Connection window.
If you are using the Personal Virtual Desktops or Virtual Desktop Pools features, additional configuration will be required to enable RemoteFX. For more information, see the full documentation on Microsoft’s website.