Configure RemoteFX in Hyper-V running Windows Server 2012 with low end GPU

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.

Microsoft RemoteFX

Microsoft recommends an expensive server GPU for RemoteFX, like Nvidia Quadro or ATI FirePro, and thats 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.
  • A 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.

23 comments

  1. great post
    i would be interessted in how 3d performance with directx11.1 and remote fx will be.
    actually im searching for a low budget gpu solution for home use rdp clients.

    ReplyDelete
  2. In Windows Server 2012 the vGPU should support DirectX 11 but I am not sure about performance yet. I will play around a bit more with this (with a proper GPU) to see what it can do and write another post about it.

    ReplyDelete
  3. Will not Windows 7 Professional as Guest work with RemoteFX?

    ReplyDelete
  4. You could use Windows 7 but the performance would probably suffer compared to Windows 8. I might give it a try to see how big the difference is.
    Here are a couple of good links about the difference between running RemoteFX on guests with Win7 and Win8:

    http://www.brianmadden.com/blogs/brianmadden/archive/2012/02/02/look-out-citrix-hdx-amp-vmware-pcoip-rdp-and-remotefx-in-windows-8-is-awesome.aspx

    http://blogs.msdn.com/b/rds/archive/2012/07/25/delivering-a-fast-and-fluid-user-experience-on-wan-remotefx-in-windows-server-2012-and-windows-8.aspx

    ReplyDelete
  5. Thanks a million for your info! Your powershell script was what made the difference after A LOT of frustration. Here is my experience to share:

    i7-920@3.8GHz on ASUS X58 Mboard with 9.0GB RAM and a measly ATI HD5450 1GB card. Windows Server 2012 Datacenter, Windows 8 Enterprise VM.

    1. My original HD4850 card would not work due to poor driver support from AMD (no WDDM1.2).
    2. The 5450 is roughly 6(!) times slower BUT has a WDDM1.2 driver. Even though DXdiag reports DirectX level 11.0 and not 11.1, RemoteFX vGPU worked!
    3. Probably because the drivers are still preliminary some benchmarks did not run, not even on the host (3dMark11 and Performance Test did not work, Cinebench - OpenGL - worked on the host - didn't try in the VM, no point, Unigen Heaven worked in both the VN and the host.
    4. The Unigen benchmark achieved in the VM 90% of the host's score!!! That's very impressive!!!
    5. Windows 8 Pro are indeed "crippled", i.e. the Hyper-V additions detect that it is not an enterprise version and they disable the vGPU.
    6. I didn't bother running multiple VMs, the 90% efficiency was all I needed to see. When I'll buy a new GPU (probably a 7850 or a 8850 when it comes out) maybe that will be of interest as well.

    The most annoying part is the continuous nagging about the Remote Desktop licensing mode not conigured - Remote Desktop Services will stop working in 119 days message. Since I'm not interested in using Terminal Services that does not concern me. I even set my clock to 5 months ahead, the Remote Desktop services supposedly stopped working, but I still had my vGPU acceleration in the VM. Do you know of a way to stop the nagging?

    Thanks again for your terrific walkthrough, it's as if MSFT keeps everything semi-obscure on purpose (I can't even begin to imagine what setting up Linux in the same way must be like to a n00b in servers like me ;-) )

    ReplyDelete
  6. Konstantinos Paschalidis06 October, 2012 00:15

    I forgot to mention that you DON'T need VT-d for RemoteFX vGPU and Hyper-V (my i7-920 does not support it), all you need is VT-x, which many K series CPUs support (at least all the i7 ones - check intel ARK).

    ReplyDelete
  7. Thanks Konstantinos for your feedback. You might be right about VT-d. I will look into that and update the post accordingly.
    Sounds great that you have managed to achieve 90% performance compared to the host. I am right now playing around with a Geforce GTX 660 to see what it can do and the performance so far is not very good. I am sure its possible to get a lot better performance than I get at the moment. In Unigen Heaven I get as low as 14-15 FPS at times even on low settings, so there are room for improvements so far.
    Have you found out anything that I can use for improving the performance?

    ReplyDelete
  8. Konstantinos Paschalidis14 October, 2012 09:55

    Fact is that my HD5450 was so slow, that I got an average of 7-something FPS with low settings in Unigen Heaven. So I don't really know how my 90% result will scale with performance. From what I've gathered though browsing around the internet for RemoteFX and vGPU, finding data mostly for Server 2008 R2 versions, Nvidia consumer cards were not "playing" well with GPU remoting, whereas ATI consumer cards were a lot more "compliant". Maybe it has something to do with Microsoft's programming or with Nvidia's consumer vs workstation drivers...
    I will know more if I manage to get my hands on a faster ATI DX11.1 card.

    ReplyDelete
  9. Thank you! This is awesome! I have only one question. If I create W8 Enterprise VM with remoteFX, can I acces this VM via remote desktop from any OS? Will the remoteFX work on any OS? Thank you.

    ReplyDelete
  10. No i dont think so.
    E.g. Windows Seven uses remotefx ver7.1 but you can Upgrade it to 8.0 which is needed to work with w8

    ReplyDelete
  11. Yes, the RDP version matters. You can still connect to the VM even if you are using an older protocol, but then RemoteFX will not use hardware acceleration. One of the reasons for this is that the new version of RemoteFX which you have in Windows Server 2012 is using different compression algorithms compared to earlier versions.
    The best thing would be to use RDP version 8.0 which comes with Windows Server 2012 and Windows 8. So far Microsoft has not said when or if they will release a remote desktop client for Windows 7 with support for RDP 8.0.
    Version 7.1 should also work, but you might not get the same results. This version was released with SP1 for Windows 7.

    ReplyDelete
  12. Just bought the ATI w600 firepro. Im really curious how performance will be.
    As far as i know DirectX11,1 support and hopefully fast as hell ;)
    I will post my experience then.

    ReplyDelete
  13. Has anybody successfully gotten RemoteFX working with an AMD HD7870? It's selectable in the Hyper-V Settings for the server after installing the driver, but after restarting the server, the option for it disappears. I tried importing it into the virtual machine using Power Shell in admin mode, but it says the same thing "a GPU needs to be compatible" ... this card has 2GB RAM and is DX 11.1 / WDDM 1.2 compliant. What's the deal here?!

    ReplyDelete
  14. Finally!!! After three days, the answer came down to NOT RUNNING AN ACTIVE DIRECTORY SERVER ON THE SAME HOST MACHINE! It carried over from Server 2008 - of which I wasn't aware because this is my first server!!!

    ReplyDelete
  15. Oh, that realy realy sucks, but you're 100 % right.

    I don't see any reason, why you can't run Hyper-V with VGPU and AD on a same machine. For our organisation we bought new powerfull server, that should host AD services and virtualised Win. Multipoint server. And now I realize it is not posible.

    Shame on you Microsoft, shame on you...

    ReplyDelete
  16. Is it possible for a guest virtual machine (windows 2012 server) [on hyper-v server 2012 core] with remotefx gpu to use HDMI and usb port ?

    ReplyDelete
  17. Sure gpu Output and usb redirection is supported as ans.

    ReplyDelete
  18. Just tested with a cheap HD 5450 ATI card + Intel i7-2600 (not K!!!). No problem. After installing Hyper-V, the hypervisor runs the host OS itself so test your processor for EPT capabilities without Hyper-V installed. Thanks!

    ReplyDelete
  19. Hello, thank u for this great post!
    I'm looking for a virtual Autocad-solution in my company. U think it is possible use a Windows Server 2012 with hyper v and create a vm with again a Windows Server 2012 and enable the Remote Desktop Services. Share the Autocad application and use also Remote FX? I read that with citrix xen app they share already autocad on terminalserver, with special autocad licence. The problem before was always that ica was the better protocoll for the wan and multimedia contents. But now maybe with rdp 8 it's possible. Excuse me for my bad english...

    ReplyDelete
  20. Hi, please help me, i have a Nvidia 9800 gt ( probably this doesn t work, but that is not a problem ), i also have an intel hd 2500 from i3 3240, and in hyper v settings i see it added. My problem is in VM settings, i can't add the adaptor, and when i try your powershell commands it says to me: Add-VMRemoteFx3dVideoAdapter : Hyper-V cannot add a RemoteFX 3D video adapter to this virtual machine. To add this adap
    ter, at least one graphics processing unit (GPU) that supports RemoteFX and that meets the minimum requirements for Dir
    ectX must be available on this computer.
    At line:1 char:1
    + Add-VMRemoteFx3dVideoAdapter -VMName Windows
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Add-VMRemoteFx3dVideoAdapter], VirtualizationOperationFailedException
    + FullyQualifiedErrorId : Microsoft.HyperV.PowerShell.Commands.AddVMRemoteFX3dVideoAdapterCommand

    Whith VM is off. I have WIndows Server 2012 DataCenter, with AD DS, Hyper V and RDS instaled. nothing else except the graphics drivers

    ReplyDelete
  21. Stiv: It might work, but for Autocad you will probably want to use a proper GPU which is made for this, like the Quadro series. They cost a lot more than the consumer grade GPU´s but it will probably be worth it if you are going to use it professionally. Don´t take my word for it thou. Check if someone else has done it first.

    Maxim: Are you running Active Directory services on the same machine? Its not possible to mix those two.

    ReplyDelete
  22. This comment has been removed by a blog administrator.

    ReplyDelete
  23. This comment has been removed by a blog administrator.

    ReplyDelete