IGD passthrough for Intel NUC8i7BEH
Host Configuration
Virtualization Environment: Proxmox 7.0 (GRUB)
Hardware: Intel NUC NUC8i7BEH
BIOS: UEFI Mode
Proxmox Configuration
Enable IOMMU
Update /etc/default/grub
.
Find the line with GRUB_CMDLINE_LINUX_DEFAULT
. Set to
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off,vesafb:off" |
Then save the changes and update grub by calling update-grub
Load VFIO module
Add the following to /etc/modules
:
1 | vfio |
Blacklist the drivers
Add the following to /etc/modprobe.d/pve-blacklist.conf
1 | blacklist snd_hda_intel |
Enable VFIO for IGD
Run the following command to get the device ID of iGPU
1 | $ lspci -n | grep -E "0300" |
Copy the value 8086:3ea5
. Add this line to /etc/modprobe.d/vfio.conf
:options vfio-pci ids=8086:3ea5
Verification
Reboot. If the booting freeze at Loading initial ramdisk ...
means the IGD driver has been blacklisted.
Extract IGD ROM
TLDR: here is the premake ROM file.
Following the guide from this link https://github.com/tmbeck/nuc-passthrough. Generate and copy the ROM file to /usr/share/kvm
of the host.
Configure VM configuration
- Set
Machine
toDefault (i440fx)
. Legacy IGD is not compatible with q35. - Set
Display
tonone
. Legacy IGD requires VGA mode to benone
.
Update VM configuration
Edit /etc/pve/qemu-server/<vmid>.conf
. <vmid>
refer to VM ID.
Add this line to the end of the file:
1 | hostpci0: 0000:00:02.0,legacy-igd=1,romfile=<rom-file>.rom |
<rom-file>
is the ROM file name copied into /usr/share/kvm
.
Booting the Windows VM
Make sure remote access is working properly. There will be no signal output from HDMI.
Go to the Device Manager
. Ensure the IGD driver is working properly with no error code like 43.
You can also pass through USB controller 0000:00:14.0
to use USB devices like keyboards and mouses.
Reference
https://pve.proxmox.com/wiki/Pci_passthrough
https://github.com/tmbeck/nuc-passthrough
https://blog.timzhong.top/2020/09/27/pve-direct-pcie/
https://www.10bests.com/win10-htpc-on-pve/