Windows sees virtual machine - code 43


Recommended Posts

I have been struggling to get gpu passthrough working for some time now, but it just won't work on Unraid.

 

When ESXi is installed on the system, the gf 1070 will pass through fine to a Windows guest, but the same on Unraid will result in code 43 -- the install is a virtual machine.

 

Hyper-V has been set to 'no', but despite of this Windows still clearly states the system is a virtual machine in the task manager*. Nothing's hidden from the guest it seems.

 

Edit: Yeah, turns out Hyper-V should be set to 'yes'. Still didn't fix the problem, but finally got an error in the log.

 

The hardware:

Gigabyte Aorus Pro X570 + Asus ROG Strix X570-E Gaming (tried both; same problem)

Ryzen X3950

EVGA 1070

 

I have tried all the xml additions googling help with code 43 will give to no avail.

Since the OS is saying it's a virtual machine, I'm not suprised by the Nvidia drivers being aware too... -- this must be the issue, right?

Booting without a VNC gpu will give a black screen.

ROM has been dumped and set up.

 

 

Does anyone have any idea why Windows won't get fooled? I am fairly desperate at this point.

 

*On the 'Performance' tab. If the system's not virtual, it will state whether it is virtualization-capable or not.

Edited by Pinch
Link to comment

@Pinch: please attach diagnostics zip (Tools -> Diagnostics -> attach whole zip file) but AFTER doing the common steps below.

@berta123: please start a new topic with your own details and diagnostics zip, again AFTER doing the common steps below.

 

Common steps:

  1. Boot Unraid in Legacy mode (go to Main -> Flash and scroll to the bottom to see what mode Unraid boots as. If it doesn't say Legacy then make sure the permit UEFI boot is unticked, save, reboot and recheck)
  2. If you have another graphics card (either iGPU or a dedicated card that is not the one to be passed through), make sure Unraid boots with this and NOT the card to be passed through. Connect a monitor either to onboard port (if iGPU) or the other card and be 100% sure Unraid boots with that.
  3. Start a brand new template (don't be lazy and edit an existing one, start a new one), pick Q35 machine type (latest available version) + OVMF + Hyper-V On + VNC graphics + everything else the same. If Windows doesn't boot (e.g. because it was installed with SeaBIOS) then reinstall Windows.
  4. Once Windows boots successfully, turn on RDP if possible. If not possible, install a VNC server solution. Note: VNC graphics and passed-through GPU don't work with each other so you can only pick either one, hence this step to enable RDP / VNC from within the VM to check stuff.
  5. Report exactly in your post how you obtained the vbios file + whether you watched SpaceInvader One tutorials on Youtube on that topic (and if you haven't watched them then watch them)
  6. Connect a monitor to the graphics card to be passed through. Some cards won't initialise without a monitor attached.
  7. Edit the template and remove VNC graphics and add the graphics card + HDMI audio but without vbios. If it doesn't work, RDP / VNC in and check the error code and install drivers etc.
  8. If (7) doesn't work, edit template with the vbios and report back.

 

 

 

Link to comment

Check out Spaceinvader one on youtube, he has a good guide on this. It worked for me with a 1660.
I found the main steps required were to:

A: follow the steps to upload a vbios for the GPU
B:ensure all elements of the card are passed through as a multifunction device
C Make sure unraid is not booting in UEFI mode. Note that when selecting boot device in BIOS you may see a UEFI boot and normal boot option for the same USB stick. I selected UEFI by accident when switching between boot drives and it broke my previously working passthrough.
 

Link to comment

I found that most guides on youtube or otherwise blast past using EDID emulators or headless plugs (dongles) for displayport/HDMI.

 

The dongle emulates having a monitor plugged in without the monitor actually being there. 

 

All the settings listed  above would never be 100% for me personally and i would still get the dreaded code 43. Since i believe Nvidia's drivers/cards seem to look for a monitor being plugged in to stop virtualization on their consumer GPUs. 

 

Since using the dongles i have found getting code 43 much less likely or none existent. For me within unraid i use BIOS: OVMF, Machine: i440fx-4.2, Hyper-v: yes, Graphics rom BIOS (dumped from the GPU itself), pass through the Nvidia Audio as well (even if you wont use it).

 

In KVM, Unraid and vmware ESXI i have seen similar behaviour cleared up by using the dongles.

 

 I use a Displayport dongle myself on a 1660 3GB but i have seen this work on 1080ti's for example.

 

Here are some examples on amazon (i am in no way affiliated to these sellers or products.):

 

Displayport example:

https://www.amazon.co.uk/DP-DisplayPort-emulator-Headless-2560x1600/dp/B071LQHQMV/ref=asc_df_B071LQHQMV/?tag=googshopuk-21&linkCode=df0&hvadid=217971167670&hvpos=&hvnetw=g&hvrand=17762952164112151129&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1007016&hvtargid=pla-412706487727&psc=1

 

HDMI example:

https://www.amazon.co.uk/Headless-Display-Emulator-Headless-1920x1080-generation/dp/B06XT1Z9TF

 

Edited by m1012000
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.