Core Ultra 9 285T iGPU passthrough on PVE 9.x + keep VM console output?

rpool

New Member
Dec 9, 2025
7
0
1
Hi all,
I’m on Proxmox VE 9.1.1 and trying to passthrough the Intel Core Ultra 9 285T iGPU to a VM for media decode.


Host


  • CPU: Core Ultra 9 285T
  • MB: Gigabyte Z890 AI TOP
  • PVE: 9.1.1
  • BIOS: VT-d enabled, iGPU enabled

VM
  • OS: FeiNiu OS 1.0.0 (Linux-debian-based)
  • Machine: pc
  • BIOS: OVMF (UEFI)
I’ve already completed the prerequisite steps for passthrough.

What works
iGPU passthrough works with legacy IGD + ROM from https://github.com/LongQT-sea/intel-igpu-passthru:

Code:
qm set [VMID] --machine pc \
              --vga none \
              --bios ovmf \
              --hostpci0 0000:00:02.0,legacy-igd=1,romfile=igd.rom

Issue
After enabling legacy-igd=1 (and --vga none), the Proxmox VM console stays black/no output.
I’d like to keep a working console for troubleshooting.


Questions
  1. Is there a recommended way to retain console output while using Intel iGPU passthrough on PVE 9?
  2. Any known best practices for Core Ultra (Arrow Lake) iGPU passthrough on PVE 9?

Thanks!
 
Try UPT mode:
Code:
qm set [VMID] --machine q35 \
              --bios ovmf \
              --hostpci0 0000:00:02.0,romfile=igd.rom \
              --args "-set device.hostpci0.bus=pci.0 -set device.hostpci0.addr=2.0 -set device.hostpci0.x-igd-opregion=on"

Then change Display to Default or something else.
 
Try UPT mode:
Code:
qm set [VMID] --machine q35 \
              --bios ovmf \
              --hostpci0 0000:00:02.0,romfile=igd.rom \
              --args "-set device.hostpci0.bus=pci.0 -set device.hostpci0.addr=2.0 -set device.hostpci0.x-igd-opregion=on"

Then change Display to Default or something else.
I tried this config:
Code:
args: -set device.hostpci0.bus=pci.0 -set device.hostpci0.addr=2.0 -set device.hostpci0.x-igd-opregion=on
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 4
cpu: host
hostpci0: 0000:00:02.0,romfile=igd.rom
vga: std

After applying it, the VM stays on a black screen in the PVE console (looks like a hang).
 

Attachments

  • 1765285816623.png
    1765285816623.png
    43.1 KB · Views: 3
I bet it's output to the physical monitor as the main display.
but I can't see anything in the main display.
I found that q35 doesn’t work for me regarding console output after iGPU passthrough.
With i440fx, the PVE console still shows output after passthrough.
So it seems machine type-related, and not related to the ROM file or any other args.
 
I don’t really get the use case here. If someone need physical display output then do legacy IGD passthrough for display output, along with passthrough of a physical mouse and keyboard so they can use it like a normal desktop PC.

If someone just wants to set it up for media decoding, passthrough iGPU or passthrough SR-IOV virtual function then they can simply set up remote access (e.g., an SSH server) and configure it remotely from another PC.

If they need a virtual console in the Proxmox GUI, they can temporarily remove the iGPU PCI device in the VM hardware tab and change the display back to the default.
 
Last edited:
I don’t really get the use case here. If someone need physical display output then do legacy IGD passthrough for display output, along with passthrough of a physical mouse and keyboard so they can use it like a normal desktop PC.

If someone just wants to set it up for media decoding, passthrough iGPU or passthrough SR-IOV virtual function then they can simply set up remote access (e.g., an SSH server) and configure it remotely from another PC.

If they need a virtual console in the Proxmox GUI, they can temporarily remove the iGPU PCI device in the VM hardware tab and change the display back to the default.
Yeah, that makes sense. My main goal is iGPU media decoding. I just occasionally need the Proxmox virtual console to quickly check runtime status or troubleshoot, so that’s why I brought this up.


and really thanks for your help.