Hardware acceleration in Windows VM on ESXi

Have an older e3 here. HD accel works in Windows native, but in the esxi host it doesn’t seem to. Device has a warning ‘Windows has stopped this device because it has reported problems. (Code 43)’ .

In esxi the device is listed as ‘Xeon E3-1200 v3 Processor Integrated Graphics Controller’’.

Anything missing?

@Eds89 said:
I would be inclined to agree.

Have you tried any 4K content? I have tried the Elysium 4K sample file, which when trying to direct play pins the VM CPU at 100% and it really struggles to buffer and play it.
If I force conversion, it tries to buffer, but the player just quits out of the stream with no errors.

Sorry for the delay. I’ve got no 4k device and so 4k video wasn’t relevant until now.
Just tried the same sample, cpu is near 0 but playback doesn’t start on my device. Will try some other devices, sources etc.

@Lattice said:
Have an older e3 here. HD accel works in Windows native, but in the esxi host it doesn’t seem to. Device has a warning ‘Windows has stopped this device because it has reported problems. (Code 43)’ .

In esxi the device is listed as ‘Xeon E3-1200 v3 Processor Integrated Graphics Controller’'.

Anything missing?

Afaik only Xeon cpu with SKU ending on 5 or 6 (e.g. E3-1225) do have an integrated gpu. I asume you got one of this models, as there is some kind of graphics controller detected. What’s your ESXi version and build?
edit: What’s the exact Xeon model?

Under ESXi 6.7, I’m having similiar issues with “‘Windows has stopped this device because it has reported problems. (Code 43)’ .” I’m trying to pass through a GT 710 but Windows Simply isnt having it. Curious if anyone discovered anything with this topic since its been dead for awhile.

Hi briankfree,

did a little research on this and found the following thread from another forum:

(Third Post here is the important one)

Key part here seems also this:

As for 43, that means it still seeing it as a VM. so you might missed a step in the settings.

  1. Edit CPU and enable Expose hardware assisted virtualization to the guest OS.
  2. Change the memory to reserve all memory.
  3. add the hypervisor.cpuid.v0 = FASLE to configuration.

Hope this helps

I was able to get this working in windows by adding the configuration svga.present = “FALSE” you lose display in console you must use Remote Desktop.

I was also able to get this working in Ubuntu with the combination of svga.present = “FALSE” and installing the latest mainline kernel (currently 4.18.3)

For information, I got my 1070ti working perfectly now in ESXi 6.7 with these additions.

hypervisor.cpuid.v0 = FALSE
SMBIOS.reflectHost = “TRUE”
pciPassthru0.msiEnabled = “FALSE”

So I got the iGPU to work in ESXi 6.7, boy is it a bear to do. At least my pain is your gain…

I have a Lenovo ts-140 Xeon E3-1225v3. I just finished testing in Handbrake and Im getting almost 110fps encoding using Quicksync on Intel QSV encoding and Windows 10 shows 15-20% GPU utilization.

The E3-1225v3 comes with Intel HD graphics p4600/p4700

I was getting Error 43 no matter what I did and after 4 days of almost the entire day messing around, I got it.

So anyway, what I had to do was this:

  1. Pop in a secondary video card. It isnt used by anything, it but it does show up in ESXi as a device. Any video card will do. The idea is to make your iGPU not be primary. (a secondary graphics card might not be necessary but it only worked for me when I finally put one in)

  2. I set the bios to initialize the IEG (Internal built in graphics) for graphics. I set it to 256mb of memory, and the key here, set it to allow multi monitor. If you dont, it turns off the other video card you put in

  3. Boot your ESXi 6.7 box, and you will see two graphics cards listed, the internal Intel one and whatever your second card is. You want to enable pass through on your intel card.

  4. You also want to add the Intel graphics to your VM and reserve all memory

  5. You need to edit the VM options and add this line to the config of the VM, or edit the VMX file and add it

pciHole.start=2048
SVGA.Present=FALSE

That’s it, for INTEL based iGPU pass through you DO NOT need the following. I discovered putting those settings in causes error 43.

hypervisor.cpuid.v0 = FALSE
SMBIOS.reflectHost = “TRUE”
pciPassthru0.msiEnabled = “FALSE”

Now here is the key that alot of trial and error it took me to figure out. You cannot do this if your VM is running on BIOS, it must be EFI.

There’s one important reason for this, You will get Error 43 no matter what you do if you dont set SVGA.Present=False. And you CANNOT do that with a BIOS machine, it wont boot. It just freezes, but the machine DOES boot all the way and is accessible by RDP if it is a EFI based OS and VM.

What I discovered is I was getting error 43 with a EFI machine up until I set SVGA.Present to FALSE. When I had both videos set up, I was still getting error 43, but when I turned off the VMware SVGA adapter, then the iGPU began to work.

Now on my setup, I have a VGA monitor hooked up to the host machine. I see nothing on my monitor. When I boot the VM, the montior goes black and stays black…

Hope this helps anyone in the future.

Thanks for this! I have two TS140 w E3- 1225 and a 12275v3 CPUs and while running them bare metal plex today, This might be on the horizon

Hi,

i’m new to Plex Pass and used to play video via Infuse and Kodi, but anyway I’m in Plex Pass, so I’d aware the HW is not working so I’ve search this post and your reply is awesome, but how could you solve the screen goes black when your apply “SVGA.Present=FALSE”?

Sorry for my bad English…and Thanks.

been a while since i dealt with this. but the VM will be blank, you have to use remote desktop to access it. Before you turn on svga.present=false, set up your machine to allow RDP access under advanced settings, then access it with remote desktop

1 Like