VMware vSphere

 View Only
Expand all | Collapse all

How to remotely connect to passthrough graphic card?

  • 1.  How to remotely connect to passthrough graphic card?

    Posted Jul 29, 2013 06:32 AM

    I want to setup a workstation-class virtual machine with passthroughed workstation graphic. This is what I'm using:

    ESXi 5.1 Update 1 (Build 1065491)

    Virtual Machine Version: vmx-9

    Virtual Machine OS: Windows 7 x64 with Service Pack 1

    I assigned a workstation-class graphic card (FirePro S10000) to this VM as a passthrough device. In the VM it's correctly recognized and I can successfully install latest AMD FirePro graphic driver without any problem.

    VMWare Tools and VMWare View Agent 5.2.0 are also installed on the VM; VM is registered to my connection server.


    Basically I followed this article: http://www.vmware.com/files/pdf/techpaper/vmware-horizon-view-graphics-acceleration-deployment.pdf

    On page 19, it mentioned Proprietary NVIDIA Capture APIs should be enabled; I ran this command on my VM but seems it supports NVIDIA GPU only.


    I tried two ways to connect to the VM

    1. From a PC (using VMWare Viewer 5.3.0, PCoIP protocol and full screen)
    2. From a PCoIP Zero Client (Dell Wyse P45)

    Both ways can connect to the VM. However, only the virtual GPU can be used.

    I also tested FirePro V4900 (previous generation AMD workstation graphic card); the result is the same.

    I guest that's because I did not enable the capture APIs for AMD Graphic card; but I have not idea how.



  • 2.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 29, 2013 07:18 AM

    I am not aware of any functionality from AMD to make this work, AMD do not have any "capture API" similar to what Nvidia have.

    If you want to pursue this I would suggest to get in contact with AMD and see if they have any plans to implement such functionality.

    // Linjo



  • 3.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 30, 2013 06:00 AM

    Hi Linjo,

    So even I pass-through an AMD professional graphic card to a VM, I still can't remotely connect to the VM and use it as a virtual graphic workstation.

    But, if I pass-through a NVIDIA professional graphic card - because NVIDIA has the "Proprietary Capture APIs", I can use the full rendering power of the discrete graphic card - from a remote Zero Client / low configuration PC / laptop

    Is that correct?

    Thanks,

    Philip



  • 4.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 30, 2013 07:13 AM
    So even I pass-through an AMD professional graphic card to a VM, I still can't remotely connect to the VM and use it as a virtual graphic workstation?

    No, that is not what I said. There are other solutions potentially could achieve this that do not need a "capture API".

    But this does not currently work with Horizon View and PCoIP since AMD GPU:s does not have a capture API. (That I know of...)

    But, if I pass-through a NVIDIA professional graphic card - because NVIDIA has the "Proprietary Capture APIs", I can use the full rendering power of the discrete graphic card - from a remote Zero Client / low configuration PC / laptop

    Is that correct?

    Yes, with the vDGA functionality (currently in Tech Preview) you can dedicate a supported Nvidia GPU (Most of the professional cards, not the gaming GPU:s) to a VM and remote to it with PCoIP from a client that supports PCoIP (There are clients for all major platforms) and fully use the GPU rendering power.

    // Linjo



  • 5.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 30, 2013 12:10 PM

    Thanks, Linjo.

    For the AMD part, I made it work by plugging a real monitor to the graphic card, then remotely control it using TeamViewer. By manually set the AMD graphic to Primary now I can run my workstation applications.

    But the TeamViewer protocol (I don't know the name of it) really sucks. Besides there's no zero client using TeamViewer.

    Also plugging four 24-inch monitors behind every server is not really feasible in the server room...


    Microsoft RDP does not use real GPU either...

    Really no way to use PCoIP now?

    HP guys tried to sell the RGS solution but I've not test it yet.

    Most my applications work great on AMD FirePro cards and not so well on NVIDIA Quadro cards. So I'd prefer to use AMD FirePro cards.



  • 6.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 30, 2013 01:41 PM

    For the AMD part, I made it work by plugging a real monitor to the graphic card, then remotely control it using TeamViewer. By manually set the AMD graphic to Primary now I can run my workstation applications.

    But the TeamViewer protocol (I don't know the name of it) really sucks. Besides there's no zero client using TeamViewer.

    Also plugging four 24-inch monitors behind every server is not really feasible in the server room...

    Yes, that is one of the ways and as you have noticed PCoIP is a superior remote protocol.

    Microsoft RDP does not use real GPU either...


    Well actually they do in some instances when running RemoteFX on Hyper-V


    Really no way to use PCoIP now?


    No, not with AMD GPU:s currently. 

    But there are constant improvements in this area and with the architecture of for example vSGA it is possible for AMD to develop a driver for their GPU. But that will not be Direct-Passthrough-

    HP guys tried to sell the RGS solution but I've not test it yet.


    RGS might be able to do that, but as far as I know there is very little development on RGS nowadays and I am not updated in their capabilites.


    Most my applications work great on AMD FirePro cards and not so well on NVIDIA Quadro cards. So I'd prefer to use AMD FirePro cards.


    That is interesting as Nvidia is considered the leader in the professional GPU space. Can I ask what applications these are and the requirements?


    // Linjo






  • 7.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 30, 2013 02:06 PM

    Hi Linjo,

    Thank you very much for the input.

    RemoteFX on Hyper-V is a virtual GPU solution very similar to vSGA. It works good for most DirectX application but professional apps needs OpenGL.

    That is interesting as Nvidia is considered the leader in the professional GPU space. Can I ask what applications these are and the requirements?

    OpenCL accelerated applications, PTC Creo 2.0, CATIA and SolidWorks. NVIDIA Quadro is good but if you consider the price, AMD FirePro can provide almost same performance at half price. Another example is that OIT (Order Independent Transparency) is a key feature implemented in PTC Creo 2.0 but it works on AMD GPUs only.



  • 8.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 30, 2013 02:13 PM

    True, if you need OpenGL then RemoteFX is not an alternative.

    If I where you I would try RGS or maybe a Teradici PCOIP Host-card. (But that would be a 1:1 solution and might not fit your needs...)

    // Linjo



  • 9.  RE: How to remotely connect to passthrough graphic card?

    Posted Jul 30, 2013 02:20 PM

    Teradici PCoIP host card should work but I can't install 4 of them plus 4 workstation graphic card in a 2U server...

    Thank you very much for your input I'll try RGS any way :smileyhappy:

    Cheers,

    Philip



  • 10.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 17, 2013 05:43 PM

    Hi There,

    I am trying to do the exact same thing as you- create a workstation class VM capable of supporting OpenGL capable 3D Applications via Remote Connection (vDGA).

    Setup

    Esxi 5.1U1

    Guest OS: Windows server 2012 configured as RDSH

    PCI passthru GPU: AMD firepro V7900. This is a secondary Display Adapter.

    Primary Graphics Card for Host ESXi is a low end Nvidia which allows me to have vSGA capablilities.

    Problems with Hardware Acceleration

    The display card passes through without any issues, AMD Firepro driver is installed correctly and after manually disabling the vSGA  (VMWare 3D SVGA Adapter) display in device manger the Firepro card is reported as working properly. However, when remoting via Teamviewer and running "DxDiag", the loaded display driver is shown as "Microsoft Basic Display Driver" not capable of supporting openGL 2.0. My Firepro card is capable of openGL 4.1.

    I do not have vmware view setup and haven't yet checked via PCoIP connections.

    based on your post here. I am guessing here that since I do not have a physical display connected to the firepro card, the AMD display driver is not loaded and thus not available for GPU acceleration in a remote setting.

    Philip can you please confirm if you have the same issue- that is , if you DISCONNECT your display from the passthrough GPU  and then remote into that machine using Teamviewer and run DxDiag.exe, do you also get "Microsoft Basic Display Driver" as the display driver?

    2. Have you looked at Thinanywhere 3D Accelerator plugin for RDP.(www.thinanywhere.com) They claim to allow openGL 3d acceleration over RDP protocol so you can use your 3d applications over an RDP session without having to resort to PCoIP solutions.

    3.Have you looked at this post with respect to use of PCoIP for 3d acceleration http://myvirtualcloud.net/?p=2811

    A




  • 11.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 22, 2013 11:38 AM

    Hi,

    Actually I have solved this problem by contacting AMD local FirePro support.

    AMD local FirePro support guy sent me a software utility called "emulateEDID" tool, the tool allows me to activate the AMD graphic card by faking/emulating a monitor EDID.

    After emulating EDID the AMD GPU is activated and when I connect to my VM using VMWare Viewer and PCoIP protocol, the VM is set to extended desktop mode.

    Then I can manually

    1. set the fake monitor that connected to AMD GPU as primary

    2. Disable the 2nd monitor (also fake one, connects to VMWare virtual GPU), but leave the VMWare virtual GPU enabled)

    After these steps I can remotely connect to my VM and use AMD GPU as the only activated GPU.

    Sorry for the late response and hope this can help you solve your problem.



  • 12.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 22, 2013 02:14 PM

    Interesting, I will have to look into that a bit more.

    Maybe the emulateEDID-tool is doing the same as the monteray-enable from Nvidia.

    Thanks for posting.

    // Linjo



  • 13.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 22, 2013 03:47 PM

    Similar but EDID emulation is the shortcut.

    Nvidia monteray exposed the on-screen framebuffer from driver to to VMWare View Agent;

    AMD EDID emulation allows VMWare Agent to capture the on-screen contents from Microsoft API.


    And also I've tested HP RGS. Without EDID emulation, RGS does not work either; After EDID emulation, RGS works as well as VMWare View Agent + View Client.

    But HP RGS needs extra money so, VMWare View Agent + View Client + EDID emulation is the best solution.



  • 14.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 22, 2013 05:11 PM

    Thanks Philip,

    I was also able to achieve the same result. But I used a home made Displayport Dummy Dongle as described here (Macminicolo Blog (Build a Dummy Dongle for a headless Mac mini)).

    There is also a hardware EDID emulator made by Gefen ( Gefen, LLC - DisplayPort Detective) which gets the same result but is super expensive.

    However the software tool is probably the best solution. Would it be possible for you to share this tool with me or point me to a link to down load it and the usage instructions. I understand the risks involved as mentioned in this link.( ftp://188.220.249.230/USBDisk_1/GCU/ventuz/ati%20card%20walkthrough.txt)

    Meanwhile the Thinwnywhere plugin for openGL 3d over RDP is not working at this time. I am working with their support to see if it will work at all.

    A



  • 15.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 22, 2013 06:14 PM

    I actually found the utility on the same link:

    ftp://188.220.249.230/USBDisk_1/GCU/ventuz/emulateEDID.zip

    // Linjo



  • 16.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 23, 2013 09:45 PM

    THanks

    A



  • 17.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 23, 2013 10:02 PM

    thanks Linjo

    That link actually gives a password protected file.

    this one has no restrictions ftp://188.220.249.230/USBDisk_1/GCU/ventuz/emulateEDID/emulateEDID.exe

    Anyone downloading must read usage instructions since improper use can destroy your display.

    A



  • 18.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 23, 2013 10:24 PM

    Philip would you be able to post the usage instructions for emulate EDID with the firepro card.

    Thanks.

    A



  • 19.  RE: How to remotely connect to passthrough graphic card?

    Posted Sep 24, 2013 02:08 PM

    Sure. There're several steps to follow:

    1.  Dump the EDID binary

    You can use the Monitor Asset Manager tool. Run the tool and the list of monitor connected will be listed on the left side, select the monitor and then click File --> save, save the EDID as .bin file.

    Monitor Asset Manager tool is available at: http://www.entechtaiwan.com/util/moninfo.shtm

    2.  Confirm the Connector

    Run command prompt as Administrator, then run emulateEDID.exe without any parameter;

    All connectable “Connector ID” is listed. As shown in the figure below, the number 0-9 is DisplayID. DP, DVI and HDMI connections are shown is Digital; VGA is shown as VGA.

    DisplayID is calculated by Windows and there's no pattern. You may need to check each time you run this tool.

    In this example, 2 Dell 2312HM and one HP LA2306 are connected.

    3.  Once you know the DisplayID, type this command:

         emulateEDID.exe <ConnectorID> <EDID file>

         For example, if you have saved the EDID of HP LA2306 as la2306.bin, you need to run

         emulateEDID.exe 4 la2306.bin

         emulateEDID.exe 5 la2306.bin

         Please note both digital and analog port should be "emulated"

         Reboot the system to let the change take effect. After the emulation, an HP LA3206 monitor will be detected no matter it’s really connected.

    4.  If you need to restore hot plug detection on this port, just run the tool with connection ID and no other parameters, for example:

         emulateEDID.exe 5

    Now with emulated EDID and choose PCoIP protocol in connection server, you're fine to go!

    Just use View Client to connect to your VM and choose the emulated Monitor as primary.

    Use AMD Catalyst Control Center to disable the secondary monitor.

    You can run dxdiag to check if AMD graphic is used.



  • 20.  RE: How to remotely connect to passthrough graphic card?

    Posted Oct 31, 2014 02:27 AM

    Hi, I'm having the exact same product using AMD r5000's in Passthrough I can get them to work fine but I hae to disable the SVGA 3D adapter and when ever the VM reboots I have to reenable then disable again so if this would fix that problem it would be great! anyway if you have a copy let me know how I can get a copy.

    Thanks

    Jack



  • 21.  RE: How to remotely connect to passthrough graphic card?

    Posted Oct 31, 2014 12:10 PM

    Hi there. I have the same card and used to have similar problem. It was actually pretty easy to solve - just upgrade the Tera2 chip firmware on R5000 to the latest. Also if you're using a PCoIP zero client, upgrade it's firmware too.

    You can download the Tera2 firmware from Teradici website: PCoIP® Firmware 4.6.0 General Availability (GA): Release Details (15134-2249)



  • 22.  RE: How to remotely connect to passthrough graphic card?

    Posted Oct 19, 2016 03:16 AM

    I will probably get no love here given how old this thread is, but here's my deal:

    - I have a Win10 VM that successfully passes through an AMD HD6450. I then hook this up via cat6 ethernet passthrough from my basement (ESXi whitebox host) to our master bedroom and I watch TV on Windows Media Center and 1080p movies via Kodi. It works great!!

    - I have another Win10 VM that successfully passes through an AMD HD5450 to a monitor. What I'd like to do is use the Horizon client to connect via PCoIP to watch movies/TV.  PCoIP only works if I disable the GPU passthrough.  When the GPU passthrough is set up, I get the notorious black-screen during a PCoIP session and shortly after it times out.

    I've looked at the logs in \ProgramData\VDM\Logs, but not sure which is best to look at.  Since I didn't know which to check, I looked at debug, the log, the pcoip_agent log, and the pcoip_server log

    Any advice?