[SOLVED] SUCCESS: ASUS Intel NUC 13 Pro (i5-1340H) iGPU Passthrough on Proxmox VE 9

phatbeetz

New Member
Feb 15, 2026
1
0
1
After a day of hacking around with Chat GPT I've managed to get iGPU passthrough on Proxmox VE 9. Ive asked Chat GPT to write a summary of what we did to get this going. Hope this works for you.

Note massive credit goes to https://www.youtube.com/@Automation-Avenue

His video is at this link: https://www.youtube.com/watch?v=Pjjyuk4YU78&t=1241s

Also to the contributors at https://github.com/LongQT-sea/intel-igpu-passthru


Note for this exercise my Windows 11 install was VM100



HARDWARE

Model: Intel NUC 13 Pro
CPU: Intel Core i5-1340H (Raptor Lake-P, 13th Gen)
iGPU: Intel UHD Graphics (PCI ID 8086:a7a8)
No discrete GPU installed
Host OS: Proxmox VE 9
Guest: Windows 11 (VMID 100)

Goal: Use the NUC as a Proxmox host AND as a local Windows desktop via HDMI.


WHY THIS IS DIFFICULT

Modern Intel mobile iGPUs:

  • Do not expose a standalone VGA ROM
  • Require GOP firmware injection
  • Require proper LPC routing
  • Detect virtualization aggressively (Code 43)
  • Fail under Q35 machine type
The working solution requires:

  • Legacy IGD mode
  • Injected GOP ROM
  • i440fx (machine: pc)
  • Hiding the hypervisor CPUID bit

BIOS SETTINGS (NUC 13 PRO)

Enter BIOS (F2 at boot).

Advanced → Video:

Primary Display → HDMI1 (or the HDMI port you are using)
IGD Minimum Memory → 128MB
IGD Aperture Size → 128MB
Display Emulation → Persistent Display Emulation
Inconsistent Display Warning → Countdown

Also ensure:

Secure Boot → Enabled
UEFI Boot → Enabled
CSM → Disabled (if present)

Save and exit.


STEP 1 – ENABLE IOMMU

Open Proxmox shell.

Edit GRUB:

nano /etc/default/grub

Replace the line starting with GRUB_CMDLINE_LINUX_DEFAULT with:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off video=vesafb:off initcall_blacklist=sysfb_init"

Save and exit.

Run:

update-grub

Then reboot:

reboot

After reboot, verify:

cat /proc/cmdline

You must see intel_iommu=on and iommu=pt in the output.


STEP 2 – BIND THE IGPU TO VFIO

Confirm the GPU ID:

lspci -nn | grep VGA

For the NUC 13 Pro you should see 8086:a7a8.

Create the VFIO config:

nano /etc/modprobe.d/vfio.conf

Add:

options vfio-pci ids=8086:a7a8 disable_vga=1

Save and exit.

Update initramfs:

update-initramfs -u

Reboot:

reboot

Verify binding:

lspci -nnk -s 00:02.0

You must see:

Kernel driver in use: vfio-pci

If you do, VFIO binding is correct.


STEP 3 – DOWNLOAD AND INJECT INTEL GOP ROM

This is required for Alder Lake / Raptor Lake mobile.

Install git if needed:

apt update
apt install git -y

Download the ROM repository:

cd /usr/share/kvm
git clone https://github.com/LongQT-sea/intel-igpu-passthru.git

Copy the correct ROM for 12th/13th Gen H-series:

cp intel-igpu-passthru/roms/ADL-H_RPL-H_GOPv21_igd.rom igd.rom

Verify the ROM header:

hexdump -n 4 -C /usr/share/kvm/igd.rom

It must start with 55 aa.


STEP 4 – CREATE WINDOWS 11 VM (VM100)

Create VM normally in the GUI:

VM ID: 100
BIOS: OVMF
Add EFI disk
Install Windows completely

After installation, shut down VM100.


STEP 5 – APPLY FINAL WORKING CONFIGURATION

Stop the VM if running:

qm stop 100

Edit the VM config:

nano /etc/pve/qemu-server/100.conf

Remove any previous GPU or CPU passthrough entries.

Use this exact configuration:

bios: ovmf
machine: pc
vga: none

memory: 8192

hostpci0: 0000:00:02.0,legacy-igd=1,romfile=igd.rom

args: -cpu host,kvm=off,hv_vendor_id=GenuineIntel,hypervisor=off -set device.hostpci0.x-igd-opregion=on -set device.hostpci0.x-igd-lpc=on

Important notes:

  • Use machine: pc (i440fx)
  • Do NOT use Q35
  • Entire args line must be on ONE line
  • Do NOT define CPU elsewhere in the file
  • Do NOT use pcie=1
  • Do NOT use x-vga=1
  • Do NOT use rombar
Save and exit.


STEP 6 – FULL POWER OFF (CRITICAL)

Do NOT just reboot.

Run:

shutdown -h now

Wait 20 seconds.

Power the NUC back on.

Start the VM:

qm start 100


EXPECTED RESULT

  • HDMI disconnects from Proxmox console
  • Monitor reconnects
  • Windows boots normally
  • Intel UHD loads official driver
  • No Code 43
  • No warning triangles
  • Full hardware acceleration

CODE 43 FIX (IMPORTANT)

If you get Code 43 after installing Intel drivers, the fix is:

In the args line, include:

kvm=off
hv_vendor_id=GenuineIntel
hypervisor=off

This hides the hypervisor CPUID bit. Modern Intel drivers check for virtualization and will throw Code 43 if detected.

After modifying args, always perform a full power off (shutdown -h now) before testing again.


WHY Q35 DOES NOT WORK HERE

Q35:

  • Designed primarily for discrete GPUs
  • Does not correctly expose legacy IGD routing for mobile CPUs
  • Breaks LPC routing required by modern Intel iGPU firmware
  • Causes flickering or black screens
Using machine: pc (i440fx) provides correct legacy routing and stable HDMI initialization.


FINAL RESULT

This setup provides:

  • Proxmox VE 9 host
  • Intel NUC 13 Pro (i5-1340H)
  • Single iGPU system
  • Windows 11 VM100
  • Direct HDMI output
  • Official Intel drivers
  • Stable operation
  • No discrete GPU required
Legacy IGD + injected GOP + i440fx + hidden hypervisor bit is the correct solution for modern Alder/Raptor Lake mobile iGPU passthrough.


As a note here is my 100.conf file:

args: -cpu host,kvm=off,hv_vendor_id=GenuineIntel,hypervisor=off -set device.hostpci0>
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 4
efidisk0: local-lvm:vm-100-disk-2,efitype=4m,ms-cert=2023w,pre-enrolled-keys=1,size=4M
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=igd.rom
machine: pc
memory: 8192
name: Win11
net0: virtio=BC:24:11:5E:47:F8,bridge=vmbr0,firewall=1
numa: 0
ostype: win11
scsi0: local-lvm:vm-100-disk-0,iothread=1,size=132G
scsihw: virtio-scsi-single
usb0: host=6901:2701
vga: none

Hope this helps someone! Please note I am no expert I've just been hacking around.
 
Thank you very much, it helped and I did the same for my setup