Why is my Win10 VM with OVMF (UEFI) not beeing able to use the ethernet card?

bvrulez

Member
Jan 13, 2022
61
2
8
43
I can install Win10 as guest with default SeaBIOS and have internet connection. But when I attempt to do an install with OVMF (UEFI) the Windows guest will never have a working ethernet adapter. The driver will show an error.
 
Did you install Win10 using the German ISO? There is a problem with Q35 v5.2/v6.0/v6.1 where the network interfaces won't work if you installed Win using the German ISO.
 
Thanks a lot for the reply!


Code:
root@proxmox:~# pveversion -ve

proxmox-ve: 7.1-1 (running kernel: 5.13.19-2-pve)
pve-manager: 7.1-10 (running version: 7.1-10/6ddebafe)
pve-kernel-helper: 7.1-8
pve-kernel-5.13: 7.1-6
pve-kernel-5.13.19-3-pve: 5.13.19-6
pve-kernel-5.13.19-2-pve: 5.13.19-4
ceph-fuse: 15.2.15-pve1
corosync: 3.1.5-pve2
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.22-pve2
libproxmox-acme-perl: 1.4.1
libproxmox-backup-qemu0: 1.2.0-1
libpve-access-control: 7.1-5
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.1-2
libpve-guest-common-perl: 4.0-3
libpve-http-server-perl: 4.1-1
libpve-storage-perl: 7.0-15
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 4.0.11-1
lxcfs: 4.0.11-pve1
novnc-pve: 1.3.0-1
proxmox-backup-client: 2.1.3-1
proxmox-backup-file-restore: 2.1.3-1
proxmox-mini-journalreader: 1.3-1
proxmox-widget-toolkit: 3.4-5
pve-cluster: 7.1-3
pve-container: 4.1-3
pve-docs: 7.1-2
pve-edk2-firmware: 3.20210831-2
pve-firewall: 4.2-5
pve-firmware: 3.3-4
pve-ha-manager: 3.3-1
pve-i18n: 2.6-2
pve-qemu-kvm: 6.1.0-3
pve-xtermjs: 4.12.0-1
qemu-server: 7.1-4
smartmontools: 7.2-1
spiceterm: 3.2-2
swtpm: 0.7.0~rc1+2
vncterm: 1.7-1
zfsutils-linux: 2.1.2-pve1


Code:
root@proxmox:~# cat /etc/pve/qemu-server/103.conf

agent: 1
balloon: 2048
bios: ovmf
boot: order=scsi0;ide2;net0;ide0
cores: 4
cpu: Haswell-noTSX
efidisk0: local-lvm:vm-103-disk-1,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:01:00,pcie=1
ide0: local:iso/virtio-win-0.1.215.iso,media=cdrom,size=528322K
ide2: local:iso/Win10_21H2_German_x64.iso,media=cdrom
machine: pc-q35-6.0
memory: 8192
meta: creation-qemu=6.1.0,ctime=1642685514
name: Win10-UEFI
net0: virtio=66:69:6C:AA:28:5E,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsi0: local-lvm:vm-103-disk-0,cache=writeback,size=32G
scsihw: virtio-scsi-pci
smbios1: uuid=74497f5a-1253-4617-b5a5-fd86f6f4c3b4
sockets: 1
vga: virtio
vmgenid: a43eec1b-8d3c-4416-ab7e-3d9e4e03ded4



*****************************************************
I did a full re-install of two VMs today to confirm the behaviour.

1: I do this after this guide.

- SeaBIOS
- Machine=i440fx
- CPU=kvm64
- no ethernet adapter after installation.
- install VirtIO PCI driver (works fine) and the guest-agent
- reboot
- shutdown
- change the Machine from i440fx to q35 (I added this part).
- restart
- After restarting, the ethernet driver is okay and there is an adapter and a connection. Changing back to i440fx again removes the connection. This is all just for your information.

2: This second guide.

- UEFI
- Machine=q35
- CPU=Haswell-noTSX
- No ethernet adapter or working ethernet driver after the same procedure as above.

In both cases I load SCSI, NetKVM, and Ballon drivers before the installation writes to the disk. I chose them from the respective directory from the virtio ISO and then "w10/amd64".

In both cases the NetKVM takes long to load, the other ones are quick.



****************************************************
More additional info: My hardware is old, but I am confidend everything should work:

- Intel i5 4460 3,2 GHZ
- GTX 560 Ti
- 16 GB RAM
- Gigabyte GA-H97M Mainboard

Since I changed the CPU from i3 to i5 the motherboard even shows a "Vt-d" option. It is enabled. I am confidend passthrough will work.
 
Did you install Win10 using the German ISO? There is a problem with Q35 v5.2/v6.0/v6.1 where the network interfaces won't work if you installed Win using the German ISO.
Yes I did. But as updated (I did not see your comment) I am able to get network interfaces to work with SeaBIOS. I just install with i440fx and then shutdown and change to q35v6 or 6.1. Both works fine after a reboot. If I switch back to i440fx, no ethernet.

However, I would like to try a non-German ISO. Do you by change have a proven working link?
 
Guys, just for clarification, I use a German Windows Pro (no server) Edition! I might also try with server, I don't care. But just to let you know.

EDIT: I will try installing with 6.0. The linked threads are great. I hope they all use UEFI.
 
Last edited:
I wonder how to set up a VM with a certain qm35 version. I can just chose q35 without any option for a version. Of course I can later change it, when the VM is already created. But I suppose I have to set it up with the right version from scratch.

Bildschirmfoto 2022-01-20 um 21.07.18.png

EDIT: Okay, when running my existing VM with 5.1 I indeed do have internet!

But I am not sure this will suffice since my plan is to passthrough the GPU and in this setup I don't see the second GPU as Nvidia but just as a second basic display. I did see the Nvidia already once, but I am not sure which way I set everything up to do it. My problem then was, that I could not establish a RDP because I hat no ethernet adapter. Now I have it but I have to get the right GPU in there.

Bildschirmfoto 2022-01-20 um 21.15.30.png
 
Last edited:
Bildschirmfoto 2022-01-20 um 21.29.57.png
Got it! The monitor has to be plugged in!

I also still have internet in the VM, but I can not ping the IP from outside. SOLVED: Firewall.

RDP works. But Nvidia still with error 43.

Boot does not work any more after setting the PCI card to Primary. But maybe I also broke it by setting the Display to "none". Not sure why such changes brake the boot process and sometimes it boots fine the second time and sometimes it stays broken.
 
Last edited:
I used the english ISO to install with 6.1! Thanks a lot!

According to this guide I should now be able to

- see the error 43,
- then power down,
- set the PCI card to Primary
- and the console display to VirtIO-GPU,
- reboot
- and see a working Nvidia GPU driver.

https://www.reddit.com/r/Proxmox/comments/lcnn5w/proxmox_pcie_passthrough_in_2_minutes/

Unfortunately, my installation is broken upon reboot and comes up with a blue screen telling me it is trying to repair.

Setting the PCI GPU to "Primary" brakes it.

This probably means that my hardware is not able to do the passthrough. (?)

Bildschirmfoto 2022-01-20 um 23.05.26.png
 
Last edited:
Hi,

Can you please post the VM config and the pveversion -v
Hi @Moayad, I was able to solve the issue regarding the ethernet. Thanks for your reply, it sparked a lot of comments from others!

The error was due to the German Win ISO - a known error.

Now I am unable to reboot with my GPU set to Primary. Everything else works fine.

Do you by any chance have knowledge on this? My hardware:

- Intel i5 4460 3,2 GHZ - (can do vt-d)
- GTX 560 Ti - (any experience with this card and passthrough?)
- 16 GB RAM
- Gigabyte GA-H97M Mainboard - (shows the vt-d option is enabled)

EDIT: Maybe my card: https://forums.unraid.net/topic/50936-windows-10-nvidia-gtx-560-ti-passthrough-black-screen/

EDIT: I might try this hack (although it was done for a different card): https://forum.proxmox.com/threads/gpu-passthrough-gtx560ti-error-43-problem.46052/#post-220157

EDIT: Might try this: https://forum.proxmox.com/threads/g...installation-in-windows-10.98986/#post-427562 (DOES NOT WORK, IS THIS FOR UEFI?)

EDIT: Nvidia removed the block of using its GPUs in a VM, but how would I update my old card with the new feature? Do I just need an up-to-date driver? Will this driver be in the virtIO.ISO that is used for all the drivers? Should it not already be in there since this message is old? https://videocardz.com/newz/nvidia-enables-gpu-passthrough-for-virtual-machines-on-geforce-gpus

EDIT: I also wonder, if this is a problem of Nvidia cards, so if I use one from ASRock, will it be different? Or is it in the chip itself?

EDIT: Mh, maybe I have to install the original Nvidia drivers in addition to the virtio driver for the GPU. Did not read that somewhere but maybe it is so common that people just leave it out. (DOES NOT FIX IT)

EDIT: I have to check this: http://vfio.blogspot.com/2014/08/does-my-graphics-card-rom-support-efi.html (NOT SURE HOW TO APPLY CORRECTLY)
 
Last edited:
EDIT: Nvidia removed the block of using its GPUs in a VM, but how would I update my old card with the new feature? Do I just need an up-to-date driver? Will this driver be in the virtIO.ISO that is used for all the drivers? Should it not already be in there since this message is old? https://videocardz.com/newz/nvidia-enables-gpu-passthrough-for-virtual-machines-on-geforce-gpus

Did you read that article?
It states, that the change is in the Nvidia driver since version 465. That has absolutely nothing to do with the virtio driver package.
It also says, that the unblock is for Kepler and newer cards. Your 560 is an older Fermi2 card.
 
Did you read that article?
It states, that the change is in the Nvidia driver since version 465. That has absolutely nothing to do with the virtio driver package.
It also says, that the unblock is for Kepler and newer cards. Your 560 is an older Fermi2 card.
Thanks for the clarification! Since this is new for me some of the details are not that obvious to me. I could understand if it is just for newer architecture. But since it also sais the feature is in the driver I wonder why this feature might not be in the virtio driver for my specific card.

Are those drivers not refering to the same level? As I understand I use the virtio instead of a native Nvidia driver. Since the cards itself (also older ones) in principle are able to do passthrough - it just is disabled by the card detecting that it is in a VM - I wonder why the virtio driver is not enabling it. But maybe I am wrong and the virtio driver is an addition to the one the article refers to.
 
With a pci(e) passed through graphics card, you are using the normal Nvidia (in your case) driver from their website as you would do with a graphics card setup bare metal.

Latest driver for your card is from the 391 branch. Remember: you would at least need 465 for the unblock.
For the "why" you have to ask Nvidia. On the other hand; your card is 11 years old...
 
With a pci(e) passed through graphics card, you are using the normal Nvidia (in your case) driver from their website as you would do with a graphics card setup bare metal.

Latest driver for your card is from the 391 branch. Remember: you would at least need 465 for the unblock.
For the "why" you have to ask Nvidia. On the other hand; your card is 11 years old...
Thanks a lot for clarification! I was totally unaware that I have to install the normal drivers. I will test this. Yes, the card is old. I bought my whole setup for 170 bucks and then some 35 more to upgrade from i3 to i5. :)

I am more or less playing around to find some definite results I can use for a final setup. Since the Geforce 710 seem to be doing fine with passthrough (other than my 560Ti) it might not even be related to the block. (EDIT: I just checked the driver version for the 710 and since it is larger than 465 maybe this indicates that tje 560Ti really is unsupported.) But as I understand proxmox can hide the fact that Win is running in a VM.
 
Last edited:
Well, loading the original Nvidia driver did not change anything.

I might try another PCI slot.

Of course, I will also buy a 710 to check it out.

But I read in the docs to make more interesting progress in general. So here my IOMMU group output, just in case:

Code:
root@proxmox:~# ./show_iommu.sh

IOMMU Group 0:
    00:00.0 Host bridge [0600]: Intel Corporation 4th Gen Core Processor DRAM Controller [8086:0c00] (rev 06)
IOMMU Group 1:
    00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller [8086:0c01] (rev 06)
    01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF114 [GeForce GTX 560 Ti] [10de:1200] (rev a1)
    01:00.1 Audio device [0403]: NVIDIA Corporation GF114 HDMI Audio Controller [10de:0e0c] (rev a1)
IOMMU Group 2:
    00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
IOMMU Group 3:
    00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
IOMMU Group 4:
    00:14.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB xHCI Controller [8086:8cb1]
IOMMU Group 5:
    00:16.0 Communication controller [0780]: Intel Corporation 9 Series Chipset Family ME Interface #1 [8086:8cba]
IOMMU Group 6:
    00:1a.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB EHCI Controller #2 [8086:8cad]
IOMMU Group 7:
    00:1b.0 Audio device [0403]: Intel Corporation 9 Series Chipset Family HD Audio Controller [8086:8ca0]
IOMMU Group 8:
    00:1c.0 PCI bridge [0604]: Intel Corporation 9 Series Chipset Family PCI Express Root Port 1 [8086:8c90] (rev d0)
IOMMU Group 9:
    00:1c.2 PCI bridge [0604]: Intel Corporation 9 Series Chipset Family PCI Express Root Port 3 [8086:8c94] (rev d0)
IOMMU Group 10:
    00:1c.3 PCI bridge [0604]: Intel Corporation 9 Series Chipset Family PCI Express Root Port 4 [8086:8c96] (rev d0)
IOMMU Group 11:
    00:1d.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB EHCI Controller #1 [8086:8ca6]
IOMMU Group 12:
    00:1f.0 ISA bridge [0601]: Intel Corporation H97 Chipset LPC Controller [8086:8cc6]
    00:1f.2 SATA controller [0106]: Intel Corporation 9 Series Chipset Family SATA Controller [AHCI Mode] [8086:8c82]
    00:1f.3 SMBus [0c05]: Intel Corporation 9 Series Chipset Family SMBus Controller [8086:8ca2]
IOMMU Group 13:
    03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
IOMMU Group 14:
    04:00.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 41)
 
I installed a GT 710, loaded the driver, set the GPU to Primary, rebooted, and it works fine.

But when I try to install Android Studio 4.1 with HAXM for the Emulator, it still fails, saying my CPU does not support Vt-x. Do I have to mess with the hypervisor in Windows 10?
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!