Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Win10 VM, GPU Passthrough, Another error code 43

Featured Replies

Hi

 

I'm trying to passtrough my GT730 card to my Win10 VM.

It shows up, but the driver fails with error code 43.

 

I searched around both herre and on google, found a couple of older issue with the same error, but no luck getting it working.

Some where talking about changing XML to avoid nvidia drivers from detecting its a VM, but that seemed to be outdated, as far i could read, and not necessary anymore?

 

Some also fixed it by changing the PCI slot, i tried that, with no luck.

 

Would be grateful for any help, im' kinda out of ideas right now.

 

Its running on a Fujitsu RS300 S6, with Unraid 6.2.4

 

VM Xml:

<domain type='kvm' id='10'>
  <name>Windows 10</name>
  <uuid>d5107eec-6391-33a8-4069-3c8d8580b402</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>6</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='1'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <vcpupin vcpu='3' cpuset='3'/>
    <vcpupin vcpu='4' cpuset='4'/>
    <vcpupin vcpu='5' cpuset='5'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/d5107eec-6391-33a8-4069-3c8d8580b402_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor id='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='6' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hypervclock' present='yes'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/user/domains/Windows 10/vdisk1.img'/>
      <backingStore/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <alias name='virtio-disk2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio-win-0.1.118-2.iso'/>
      <backingStore/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:b4:46:48'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-Windows 10/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </hostdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

PCI devices

04:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)
04:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)

 

IOMMU groups:

find /sys/kernel/iommu_groups/ -type l
/sys/kernel/iommu_groups/0/devices/0000:ff:00.0
/sys/kernel/iommu_groups/0/devices/0000:ff:00.1
/sys/kernel/iommu_groups/1/devices/0000:ff:02.0
/sys/kernel/iommu_groups/1/devices/0000:ff:02.1
/sys/kernel/iommu_groups/1/devices/0000:ff:02.4
/sys/kernel/iommu_groups/1/devices/0000:ff:02.5
/sys/kernel/iommu_groups/2/devices/0000:ff:03.0
/sys/kernel/iommu_groups/2/devices/0000:ff:03.1
/sys/kernel/iommu_groups/2/devices/0000:ff:03.2
/sys/kernel/iommu_groups/2/devices/0000:ff:03.4
/sys/kernel/iommu_groups/3/devices/0000:ff:04.0
/sys/kernel/iommu_groups/3/devices/0000:ff:04.1
/sys/kernel/iommu_groups/3/devices/0000:ff:04.2
/sys/kernel/iommu_groups/3/devices/0000:ff:04.3
/sys/kernel/iommu_groups/4/devices/0000:ff:05.0
/sys/kernel/iommu_groups/4/devices/0000:ff:05.1
/sys/kernel/iommu_groups/4/devices/0000:ff:05.2
/sys/kernel/iommu_groups/4/devices/0000:ff:05.3
/sys/kernel/iommu_groups/5/devices/0000:ff:06.0
/sys/kernel/iommu_groups/5/devices/0000:ff:06.1
/sys/kernel/iommu_groups/5/devices/0000:ff:06.2
/sys/kernel/iommu_groups/5/devices/0000:ff:06.3
/sys/kernel/iommu_groups/6/devices/0000:fe:00.0
/sys/kernel/iommu_groups/6/devices/0000:fe:00.1
/sys/kernel/iommu_groups/7/devices/0000:fe:02.0
/sys/kernel/iommu_groups/7/devices/0000:fe:02.1
/sys/kernel/iommu_groups/7/devices/0000:fe:02.4
/sys/kernel/iommu_groups/7/devices/0000:fe:02.5
/sys/kernel/iommu_groups/8/devices/0000:fe:03.0
/sys/kernel/iommu_groups/8/devices/0000:fe:03.1
/sys/kernel/iommu_groups/8/devices/0000:fe:03.2
/sys/kernel/iommu_groups/8/devices/0000:fe:03.4
/sys/kernel/iommu_groups/9/devices/0000:fe:04.0
/sys/kernel/iommu_groups/9/devices/0000:fe:04.1
/sys/kernel/iommu_groups/9/devices/0000:fe:04.2
/sys/kernel/iommu_groups/9/devices/0000:fe:04.3
/sys/kernel/iommu_groups/10/devices/0000:fe:05.0
/sys/kernel/iommu_groups/10/devices/0000:fe:05.1
/sys/kernel/iommu_groups/10/devices/0000:fe:05.2
/sys/kernel/iommu_groups/10/devices/0000:fe:05.3
/sys/kernel/iommu_groups/11/devices/0000:fe:06.0
/sys/kernel/iommu_groups/11/devices/0000:fe:06.1
/sys/kernel/iommu_groups/11/devices/0000:fe:06.2
/sys/kernel/iommu_groups/11/devices/0000:fe:06.3
/sys/kernel/iommu_groups/12/devices/0000:00:00.0
/sys/kernel/iommu_groups/13/devices/0000:00:01.0
/sys/kernel/iommu_groups/14/devices/0000:00:03.0
/sys/kernel/iommu_groups/15/devices/0000:00:05.0
/sys/kernel/iommu_groups/16/devices/0000:00:07.0
/sys/kernel/iommu_groups/17/devices/0000:00:08.0
/sys/kernel/iommu_groups/18/devices/0000:00:09.0
/sys/kernel/iommu_groups/19/devices/0000:00:0a.0
/sys/kernel/iommu_groups/20/devices/0000:00:10.0
/sys/kernel/iommu_groups/20/devices/0000:00:10.1
/sys/kernel/iommu_groups/21/devices/0000:00:11.0
/sys/kernel/iommu_groups/21/devices/0000:00:11.1
/sys/kernel/iommu_groups/22/devices/0000:00:14.0
/sys/kernel/iommu_groups/22/devices/0000:00:14.1
/sys/kernel/iommu_groups/22/devices/0000:00:14.2
/sys/kernel/iommu_groups/22/devices/0000:00:14.3
/sys/kernel/iommu_groups/23/devices/0000:00:15.0
/sys/kernel/iommu_groups/24/devices/0000:00:1a.0
/sys/kernel/iommu_groups/24/devices/0000:00:1a.1
/sys/kernel/iommu_groups/24/devices/0000:00:1a.2
/sys/kernel/iommu_groups/24/devices/0000:00:1a.7
/sys/kernel/iommu_groups/25/devices/0000:00:1c.0
/sys/kernel/iommu_groups/25/devices/0000:08:00.0
/sys/kernel/iommu_groups/25/devices/0000:08:00.1
/sys/kernel/iommu_groups/26/devices/0000:00:1d.0
/sys/kernel/iommu_groups/26/devices/0000:00:1d.1
/sys/kernel/iommu_groups/26/devices/0000:00:1d.2
/sys/kernel/iommu_groups/26/devices/0000:00:1d.7
/sys/kernel/iommu_groups/27/devices/0000:00:1e.0
/sys/kernel/iommu_groups/28/devices/0000:00:1f.0
/sys/kernel/iommu_groups/28/devices/0000:00:1f.2
/sys/kernel/iommu_groups/28/devices/0000:00:1f.3
/sys/kernel/iommu_groups/28/devices/0000:00:1f.5
/sys/kernel/iommu_groups/29/devices/0000:01:00.0
/sys/kernel/iommu_groups/30/devices/0000:04:00.0
/sys/kernel/iommu_groups/30/devices/0000:04:00.1
/sys/kernel/iommu_groups/31/devices/0000:06:00.0
/sys/kernel/iommu_groups/32/devices/0000:06:00.1
/sys/kernel/iommu_groups/33/devices/0000:07:00.0
/sys/kernel/iommu_groups/34/devices/0000:07:00.1

hi

is the 730 your only gpu in the server?

if yes, then you need an extra GPU in slot 1, while you put your 730 in another slot.

then use the steps provided in this guide to extract the rom of 730.

https://lime-technology.com/forum/index.php?topic=52960.0

the guide also tells how to use the rom in the xml of our vm's...

-d

  • Author

There is an integrated one on the server, but its not plugged in atm, only used with when i initially installed unraid, just running "headless" now.

The 730 was then added later on.

 

hi

is the 730 your only gpu in the server?

if yes, then you need an extra GPU in slot 1, while you put your 730 in another slot.

then use the steps provided in this guide to extract the rom of 730.

https://lime-technology.com/forum/index.php?topic=52960.0

the guide also tells how to use the rom in the xml of our vm's...

-d

There is an integrated one on the server, but its not plugged in atm, only used with when i initially installed unraid, just running "headless" now.

The 730 was then added later on.

 

hi

is the 730 your only gpu in the server?

if yes, then you need an extra GPU in slot 1, while you put your 730 in another slot.

then use the steps provided in this guide to extract the rom of 730.

https://lime-technology.com/forum/index.php?topic=52960.0

the guide also tells how to use the rom in the xml of our vm's...

-d

So activate the igpu so that you can passthrough the 730... Not sure if the passthrough will work directly, without rom. If not working, dump the rom and use it. You might be able to disable the igpu after that...

  • Author

Okay, so i just got home and tried plugging in a monitor on the iGPU, reboot, no signal.

So i plugged in to the GPU, and there was the boot seq. and unraid.

 

Then i removed the GPU, and tried iGPU again, then it shows on the iGPU.

So seems like the server chooses the GPU over the iGPU? I've been through the bios, and dont seem to see any settings about it.

Only thing i can find, is to disable the iGPU, but that doesn't really help me.

 

Any suggestions?

 

There is an integrated one on the server, but its not plugged in atm, only used with when i initially installed unraid, just running "headless" now.

The 730 was then added later on.

 

hi

is the 730 your only gpu in the server?

if yes, then you need an extra GPU in slot 1, while you put your 730 in another slot.

then use the steps provided in this guide to extract the rom of 730.

https://lime-technology.com/forum/index.php?topic=52960.0

the guide also tells how to use the rom in the xml of our vm's...

-d

So activate the igpu so that you can passthrough the 730... Not sure if the passthrough will work directly, without rom. If not working, dump the rom and use it. You might be able to disable the igpu after that...

  • 2 weeks later...
  • Author

So tried a lot of stuff now.

Tried dumping the rom from the gpu, and seems successful.
I then load the vm with the rom, like described in the video guide, but i still get error code 43.

I tried reinstalling a couple of times, no luck.
Also noticed that i get the error even before the nvidia driver was installed, so when its just recorgized as somthing like "Basic display driver.....".

I then tried making a fresh vm with newest virtio, and switched to seabios with loaded rom.
I then noticed i got "Basic display driver", without error code 43, so actually thought everything was going well, until i installed driver, then i got error code 43 again.

Having exactly the same issue with a GT730 on my Intel S5500BC board.

IOMMU group 18
	[10de:1287] 02:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 730] (rev a1)
	[10de:0e0f] 02:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)

"vfio_iommu_type1.allow_unsafe_interrupts=1" is needed as my system doesn't support interrupt remapping.

 

VM is starting, no errors but black screen.

Cheking dmesg gives me the following lines:

vfio-pci 0000:02:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
vfio-pci 0000:02:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff

 

Message goes away if I use GPU's ROM dump in the VM's xml declaration and instead the following is displayed:

vgaarb: device changed decodes: PCI:0000:02:00.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem

...but sadly same black screen is happening.

 

If I log onto my Win10 VM (via autostarted TeamViewer) under Device Manager --> Display Adapter --> I see "Microsoft Basic Display Adapter" with Code 43 error (exactly like TheBekker) whether I run with (default without ROM dump) or with altering XML putting declaration with the ROM dump.

 

Btw BIOS size is 59.904 bytes and dumping went without issues or "kernel in use" messages on "lspci -v" and I also see that HD Audio device was passthrough just fine under Device Manager/

Also GT730 certainly has support for EFI in case someone had that doubt.

 

I'm not sure exactly where the issue lies, but I believe it has to do with the fact that the motherboard uses the GPU I want to passthrough as it's the default output GPU during system boot. Sadly there is no option in BIOS to switch from iGPU to GPU as TheBekker said as well. Dunno if disabling the GPU framebuffer via kernel parameters (like video=efifb:off,vesafb:off) could help or another option I don't know.

I tried stubbing the card ID in kvm.conf options but no difference.

Other options I tried are "pcie_acs_override=downstream" and "i915.enable_hd_vgaarb=1" again with no difference.

 

Is there a way we can force unRaid to use iGPU for output in order for GT730 will be free 100% for the VM passthrough?

 

Really frustrating... :(

Edited by mfilos

OMG just tried a BIOS by another forum member found on this thread: 

...and the passthrough now works!!! It's not the same GT730 (as checking the BIOS file it's a PNY and mine is a Palit but anywayz). The odd part is that the BIOS is 131.584 bytes while my dump was 59.904 bytes!

Apparently my BIOS was a custom one (as I bought this card from eBay and it doesn't seems like a valid BIOS if having fan profile and my GPU is fanless - lol).

Now I'm having artifacts all over the place and when I installed drivers I also have Error code 43 as TheBekker has.

 

Oh well... more stuff to troubleshoot :S

Edited by mfilos

At last I did it!

Turned out that the BIOS I had from another user wasn't the correct one plus my dumped one was also not complete.

Once I put a second GPU as Primary and had the actual GT730 as secondary, I had a succesful passthrough without issues (and I also dumped the BIOS just fine).

Without the second GPU, I continued having the issue until I put the BIOS in the XML file and everything works like a glove now (without artifacts).

 

TheBekker mate I saw in your config you have HyperV on. I putted it off (no declaration in features except acpi/apic) and works just fine (also saw on other threads that HyperV needs to be off.

 

One more happy UnRAIDer :)

  • Author

I just bought another gpu to put in the server, and see if it makes a difference, since it looks like the integrated one turns off when a dedicated one is added.
I'll return with my findings.

  • Author

Okay, so i just put in a GT710, booted up my vm with the GT730, and now it seems to work.
I will try a bios dump later in the weekend maybe, with the cards swapped, so i might dump it correctly, so i can run without the GT710.

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.