---
title: Configure RemoteFX in Hyper-V running Windows Server 2012 with low end GPU
date: 2012-08-30 14:14:00 +0200 CEST
draft: false
author: John Roos
----

This is for experimenting with RemoteFX in Hyper-V in a lab environment using Windows Server 2012. I wanted to see what I could do with RemoteFX on a slow GPU. To see how far I could get I started off with the Intel HD 2500, which is built into the Intel Core i5 3550 processor (Ivy Bridge). You can go through these steps with any supported hardware, and you probably get better results if you don’t use the HD 2500 as I did. If you want to use RemoteFX for gaming you really need a proper GPU.

RemoteFX

Microsoft recommends an expensive server GPU for RemoteFX, like Nvidia Quadro or ATI FirePro, and that’s probably what you want to use in a proper production environment. This article will totally ignore this fact and go for the most low end you can get and see how it goes.

Hardware requirements for Hyper-V

Lets first go through what you need to get this to work. You can get the hardware requirements from Microsoft or any other resource, but some of the requirements are not clear for everyone so I will just go through a few of them.

  • A processor that supports Intel VT or AMD-V. Not all processors today support this. One example is the K series from Intel which does not have this feature. If you are building a new machine for virtualization make sure to pick the right CPU. AMD and Intel have all the information you need on their websites where you can compare the different features.
  • An NX bit-compatible CPU. Intel calls this XD bit and AMD calls this Enhanced Virus Protection or NX bit. Check the specifications of your processor.

Hardware requirements for RemoteFX

As I mentioned before there are a number of requirements which you can find elsewhere. This post will only go through two of them.

  • The server’s CPU must support Second Level Address Translation (SLAT). This is usually not a big issue if you have a fairly modern CPU. Intel calls this Extended Page Table and has supported this on most of their desktop CPU´s since late 2008. AMD calls this Rapid Virtualization Indexing and haven’t had support as long as Intel, but still since late 2011.
  • At least one DirectX 11.1 capable graphics card must be installed on the server. This is an upgrade compared to 2008 R2 where 9.0c and 10.0 was required. I have tried myself with a DirectX 9 card and the GPU was not available to use for RemoteFX on Windows Server 2012.

Installation

There are a number of steps to go through to get RemoteFX running in a virtual machine. This is one way to do it.

1. Install Windows Server 2012 on the host machine

Only Standard and Datacenter editions support Hyper-V. More about editions here: http://en.wikipedia.org/wiki/Windows_Server_2012#Editions

2. Install GPU drivers for Windows 8

Go to your GPU vendor to get the latest drivers. There are usually not that many drivers for server versions of Windows but for Windows 2012 it seems to work fine with drivers for Windows 8 since its the same core.

3. Add the Hyper-V role

To get RemoteFX to work for this scenario you don’t have to do anything different than usual when adding a role.

4. Add the Remote Desktop Services role

Include Remote Desktop Virtualization Host (found in the Role Services list). Some people say that you also need Remote Desktop Session Host but I have tried to disable this service once its installed and it works fine anyway so its probably not needed.

5. Make the GPU available for virtual machines

Enable the GPU in Hyper-V settings on the host so that virtual machines can use it. This requires that the GPU drivers is properly installed (step 2).

6. Create a new VM and install Windows 8 Enterprise

If you have a look on the following link you will see that Enterprise is the only version of Windows 8 which supports RemoteFX: http://en.wikipedia.org/wiki/Windows_8_editions#Comparison_chart

7. Install Hyper-V Integration Services on the guest OS

This might have automatically been installed on the VM but otherwise it should be installed.

8. Enable remote desktop on the guest OS

This was important in Windows Server 2008 R2, but not as important in Windows Server 2012. On 2008 R2, once RemoteFX worked on the VM you would not be able to just “Connect” to the VM in Hyper-V manager. You had to use a terminal services client. So if remote connections was not enabled you could not connect to the machine. However, in Windows Server 2012 they have made some improvements so you actually can use Connect. However, I would still recommend remote desktop.

9. Add the RemoteFX GPU to the VM

You need to turn off the VM before adding a GPU. If you try to enable the GPU in the VM setting you will get a message saying that none of the installed GPU´s support RemoteFX. This seems to be a bug and can be easily worked around with a couple of PowerShell commands. First you need to import the module for remote desktop services:

Import-Module RemoteDesktopServices

When the import is done (should be instant) you need to add the GPU adapter to the VM. Run the following command and replace VirtualMachineName with the name of your VM. If you have several VM´s you can run this command once for each VM:

Add-VMRemoteFx3dVideoAdapter -VMName VirtualMachineName

If you now check the settings on the VM you will see that your GPU has been added where it said you couldn’t before. Here you can also limit the resolution on the VM which can help to avoid degraded performance.

10. Verify RemoteFX is working on the VM

Start the VM. When booted into Windows you should check device manager to make sure it has installed drivers for the RemoteFX GPU. It might require an extra restart before its installed properly. Check the Event Logs as well to make sure everything looks ok. Run dxdiag to make sure its working. On the host you can also check the event logs to verify that the RemoteFX GPU was enabled on the client:

Application Logs\Microsoft\Windows\RemoteDesktopServices-RemoteDesktopSession Manager

Now you have enabled RemoteFX in a virtual machine. If you were using a poor GPU like I did first you will notice some poor performance. However, there are a couple of ways to tweak the performance for the GPU, mainly configuring group policies. There are some online resources for this but I might write another article about this later.