Technical

Fix Proxmox GPU Passthrough Black Screen on VM Start

Fix Proxmox GPU Passthrough Black Screen on VM Start

Proxmox GPU passthrough black screen on VM start is almost always one of three things: the GPU didn’t actually bind to vfio-pci, the VM can’t read the GPU’s ROM, or the display output is misconfigured. Here’s how to check each one, in order.

Numerous wires and cables mounted into server patch panel in modern data center

Check VFIO binding first

If the GPU is still using its normal driver on the host, the VM gets nothing. Run this on the Proxmox host:

lspci -nnk | grep -A3 VGA

Look for “Kernel driver in use: vfio-pci”. If it says nvidia, amdgpu, or anything else, your passthrough isn’t set up. You need to add the GPU’s vendor and device IDs to a vfio config file, update initramfs, and reboot. The exact file depends on your setup, but on a standard Proxmox install it’s /etc/modprobe.d/vfio.conf with a line like options vfio-pci ids=10de:1e84.

Close-up of two high-performance RTX 2080 graphics cards showcasing their sleek design and cooling fans.

GPU ROM issues

Some cards, especially older ones, have a broken or missing ROM that prevents the VM from initializing them. You’ll see a black screen and the VM might even boot fine otherwise. The fix is to dump the ROM from a working state or download one and pass it to the VM. In the VM’s config file, add:

hostpci0: 01:00,pcie=1,romfile=vbios.bin

Place the ROM file in /usr/share/kvm/. If you can’t get a ROM, try booting the VM once without the GPU, install drivers, then shut down and add the GPU. Sometimes that’s enough.

Display output

If VFIO and ROM are fine, the issue is where the VM sends its display. If you’re using a physical monitor, make sure the VM’s display is set to “none” and you’re using the GPU’s output. If you’re using remote access, you need a virtual display like VirtIO-GPU or QXL, but that can conflict with passthrough. For a headless setup, set display to “none” and use RDP or VNC inside the guest.

Also check the VM’s BIOS: UEFI usually works better for GPU passthrough than SeaBIOS. And if you’re passing through an NVIDIA consumer card, you might hit the driver’s virtualization check. That’s a whole other mess, but the workaround is to hide the hypervisor flag in the VM config.

One more thing: if you’re using Proxmox 8 or newer, the default is to use pcie=1 for better compatibility. Older guides might not mention it.

This is a common pain point. I’ve seen forum threads where people swap cables, reinstall drivers, and sacrifice a goat before checking if vfio-pci actually grabbed the card. Start with the basics.

If you’re also dealing with storage for your VMs, check out Shrink LVM-Thin Proxmox: Safe Methods and Dead Ends for some related headaches.

Leave a comment

Comments are reviewed before they appear. Your email is never published.