Unable to passthrough GTX 1050 Ti to Win 10 (Code 43)


Coxeroni

21 posts in this topic Last Reply

Recommended Posts

Dear fellow passthroughers,

 

I am new to this whole VM passthrough thingie but did my best to passthrough my GTX 1050 Ti -> but failed.

My machine is a Fujitsu Primergy TX 1310 M3 pre-built server with Xeon E3-1225 v6 and a C236 board from Fujitsu (D3521-A1). The graphics card is an ASUS GeForce® GTX 1050 Ti Cerberus Advanced 4GB, the vBios I got from this unoffical techpowerup Bios https://www.techpowerup.com/vgabios/198967/198967 and hex edited the header away. Strangely, my iGPU of the Xeon is deactivated since I put the 1050 in. So the 1050 is the primary and only GPU. The Bios has no option for graphics whatsoever.

I had to enable PCIE ACS override (set it to downstream), the IOMMU groups now look like this:

IOMMU group 0:	[8086:5918] 00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
IOMMU group 1:	[8086:1901] 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 05)
IOMMU group 2:	[8086:a12f] 00:14.0 USB controller: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller (rev 31)
[8086:a131] 00:14.2 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Thermal Subsystem (rev 31)
IOMMU group 3:	[8086:a13a] 00:16.0 Communication controller: Intel Corporation 100 Series/C230 Series Chipset Family MEI Controller #1 (rev 31)
IOMMU group 4:	[8086:a102] 00:17.0 SATA controller: Intel Corporation Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode] (rev 31)
IOMMU group 5:	[8086:a149] 00:1f.0 ISA bridge: Intel Corporation C236 Chipset LPC/eSPI Controller (rev 31)
[8086:a121] 00:1f.2 Memory controller: Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller (rev 31)
[8086:a123] 00:1f.4 SMBus: Intel Corporation 100 Series/C230 Series Chipset Family SMBus (rev 31)
IOMMU group 6:	[8086:15b7] 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
IOMMU group 7:	[10de:1c82] 01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
[10de:0fb9] 01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)

My machine is only able to boot Unraid in UEFI mode, in Legacy mode I get the message that the USB drive is not bootable.

 

In VM setup, I tried every combination that I could imagine:

  • i4770fx/Q35: with Q35 there was always an unknown device in Device Manager of Win10
  • SEA-Bios/OMVF: Both boot and yield similar results
  • Hyper-V on/off: Both boot and yield similar results
  • "paired" the GPU and sound device of the 1050 Ti via space invaders route (mutlifunction)
    • but also tried to only passthrough the GPU.

 

Attached is the config that I thought is best, with i4770fx and OMVF and Hyper-V on:

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm'>
  <name>Windows 10 - UEFI - i440fx</name>
  <uuid>25a754ed-b851-98ce-0a5c-b20e66778a0f</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/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='1'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <vcpupin vcpu='3' cpuset='3'/>
  </cputune>
  <os>
    <type arch='x86_64' machine='pc-i440fx-4.2'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/25a754ed-b851-98ce-0a5c-b20e66778a0f_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none'>
    <topology sockets='1' cores='4' 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 - UEFI - i440fx/vdisk1.img'/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <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/Win10_1909_German_x64.iso'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <boot order='2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio-win-0.1.160-1.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='nec-xhci' ports='15'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:cc:0d:28'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <rom file='/mnt/user/system/198967.rom'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
</domain>

Here, I can connect via Teamviewer and navigate through Windows GUI and the graphics card shows as GTX 1050 Ti, but with Code 43 Error.

 

The vBios is the one linked above, I also tried to dump my own bios, but since I have no other graphics card in the machine, this has probably failed (can I dump the vbios, when my GPU is the only GPU?).

 

So what else can I do?

 

0. Legacy booting Unraid does not work on any of the USB ports and with any of the Bios settings.

1. Get another 1050 Ti that has a "valid"/verified entry at techpowerup?

2. Get a cheap GPU as primary GPU and dump the vBios?

  - do I need to dump the vBios if I use the 1050 Ti as secondary GPU?

 

Any help is appreciated, also stating the obvious, as I said I am new to this.

 

 

Edited by Coxeroni
Link to post

Hello,

 

funny enough i have the same problem. Tried everthing.

 

 * Bios = legacy

 * Used the Bios from techpower and removed the header

 * multifunction = 'on' and changed the numbers

 * Downstream for same Group

 

Nothing helped. What can we try?

 

 

 

Best PCR

Link to post

Thanks for chiming in.

I ordered a GT 710 which I hope I can use as primary GPU, but I don't even know if this will help. Hope I can return it in case my motherboard doesn't accept it or it doesn't help with the VM.

I feel a bit lost here, I hoped I can toss the PS4 controller into the corner ;)

Link to post

Hey I think I solved my Error 43 with changing and adding some lines in the xml file:

first at the vendor_id type in a 12characters long ID Example: 2D76A8B352F1

then add the rest, it should end above the features closing bracket.

So the idea is to hide the VM for Nvidia, because the driver don't want to be installed on a VM I think.

 

<vendor_id state='on' value='2D76A8B352F1'/>
   </hyperv>
   <kvm>
     <hidden state='on'/>
   </kvm>
   <ioapic driver='kvm'/>

 </features>

 

Hope it helps

Link to post

No, I read an article where someone said you can fill the vendor_id up with 12 random characters from 0-F.

But funny thing, I played around and now the error 43 is back:S

 

I will let you know when I found that one option wich fixed the error for me

Edited by Wulferine
Link to post

Ok found the settings wich prevented me from installing the driver.

1. I switched back to Legacy Mode in the flash settings from Unraid

2. Go to the bios and Seach something like "Other PCI Device ROM Priority" and select Legacy only.

Then I reinstalled the graphics driver in the VM and now it works again.

 

Hope this time it helps :)

Edited by Wulferine
Link to post
  • 1 month later...

No I gave up after trying to get the system to work with an additional GPU. The problem was that a) whenever I had a dedicated GPU installed m iGPU was deactivated and b) when I had both a GT 710 and the 1050 Ti installed, I couldn't choose which one of them was primary and c) I still couldn't successfully pass the secondary GPU (sadly the GT 710) to the VM.

 

The problem is probably the MoBo/Bios which doesn't give enough options to trick the VM into accepting the card. Bummer...

Link to post
  • 6 months later...

Same issue here guys. I've got two 1050Ti (see specs in footer). No matter which I place in primary, I can't get win10 vm to boot without code43. Sad.

 

I'm not sure if it's my setup or my hardware. Thinking of getting a 1660 Ti for gaming, but nervous that it won't work as primary GPU on vm :(

Link to post

It might be your motherboard, I think at least in my case it was where the root problem lies. 

I can't see your specs and I am also not an expert since I gave up on this. But you might investigate in that direction before getting any other graphics card. 

Link to post

Guys I just fixed it thanks to @rachid596 In my case I've got two 1050ti and was never able to pass my primary because unraid OS was using it during boot. You have to add "video=efifb:off" to the flash drive. That prevents the primary video card from being used at all (even if you isolate it in vfio)

 

So in addition to the change above, I've got my vm using a modified vbios (downloaded from techpowerup and hex edited). And I have the vfio set to bind the primary gpu as well.

 

See details here:

 

Edited by bigbangus
Link to post

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.