GPU passthrough tools for a home server

XDA made the case this month that the worst gaming GPU sitting in your drawer might be the best upgrade your home server ever gets. That is true, with one condition attached: the card only earns its slot once something other than the host can actually use it. Handing a physical GPU to a virtual machine or a container is a separate problem from installing it, and it is the part that eats a weekend. We tested 8 of the best apps for GPU passthrough on a home server, covering the hypervisor that binds the card, the kernel-level fixes for cards that refuse to reset, the display layer that lets you see the guest, and the container route for people who would rather share the GPU than surrender it.

What to look for in a GPU passthrough tool

Passthrough is a stack, not a single app, so evaluate each piece against what your hardware can actually do.

Quick comparison

App Best for Platforms Free plan Starting price Standout feature
Looking Glass Seeing a passed-through GPU on the host Linux host, Windows guest Free, open source Free Shared-memory frame relay, no network hop
Proxmox VE The home server hypervisor Linux (bare metal) Free, open source Free, paid support optional PCI resource mapping in the web UI
virt-manager Passthrough on a plain Linux desktop or server Linux Free, open source Free Direct control over libvirt XML
vendor-reset AMD cards that will not reset Linux Free, open source Free Device-specific reset for Polaris, Vega, Navi
i915-sriov-dkms Splitting an Intel iGPU across VMs Linux Free, open source Free Up to 7 virtual functions from one iGPU
NVIDIA Container Toolkit Sharing a GPU instead of dedicating it Linux Free, open source Free One GPU, many containers, no VFIO
Unraid The least painful passthrough UI Linux (bare metal) 30-day trial One-time paid licence Checkbox VFIO binding per device
Sunshine Getting the guest’s output off the box Windows, Linux, macOS Free, open source Free Hardware-encoded stream to any Moonlight client

The apps

1. Looking Glass: best for using a passed-through GPU without a second monitor

Looking Glass solves the problem that makes most people give up on passthrough. The GPU is inside the Windows guest, the guest renders to it, and you are sitting at a Linux host that can no longer see any of it. Looking Glass copies frames from the guest into a shared memory region (IVSHMEM) and the host client draws them in an ordinary window, with no network stack, no encoder, and no compression pass in between. That is why it feels different from VNC or RDP: you get high refresh rates and input latency low enough for games, on the same physical machine.

The 2026 setup is easier than the one most old guides describe. The Looking Glass Indirect Display Driver (LGIdd) installs in the Windows guest as a user-mode display driver and creates a virtual monitor, which means the dummy HDMI plug that used to be mandatory is not any more. It also replaces the old host application, so there is one less thing running inside the guest.

Where it falls short: It is Linux host to Windows guest only, and it needs real passthrough to exist first. Looking Glass does not create a GPU for you, it displays one you already assigned. Audio is handled separately, and the shared memory device has to be sized correctly in the VM config or the client refuses to attach.

Pricing:

Platforms: Linux (host client), Windows (guest driver)

Download: looking-glass.io · GitHub

Bottom line: If the server and your desk are the same machine, Looking Glass is the piece that makes GPU passthrough worth doing at all.

2. Proxmox VE: best free hypervisor for GPU passthrough on a home server

Proxmox VE is where most home server passthrough happens, because it is a bare-metal Debian-based hypervisor with a web UI over QEMU/KVM and LXC. For GPU passthrough it gives you a PCI device mapping layer: you register the card as a named resource on the node, then attach that mapping to a VM instead of hand-editing raw PCI addresses. Enable IOMMU on the kernel command line, blacklist the host driver, bind to vfio-pci, and the card shows up in the VM hardware list.

Proxmox VE for GPU passthrough also covers the sharing case. Since NVIDIA vGPU software 18, Proxmox has been an officially supported vGPU platform, with vGPU instances attached to guests as mediated devices through the same resource mapping system. Intel integrated graphics work through SR-IOV virtual functions on recent kernels, where the Xe driver replaced i915.

Where it falls short: The hard parts are still hard. Bad IOMMU grouping on a consumer motherboard is not something Proxmox can fix, and the ACS override patch that people reach for weakens the isolation guarantee that passthrough depends on. Expect at least one kernel command line edit and a reboot cycle before anything works.

Pricing:

Platforms: Linux (installs bare metal)

Download: proxmox.com · PCI passthrough wiki

Bottom line: The default answer for a dedicated home server box, and the one with the most community documentation when something breaks.

3. virt-manager: best for passthrough on a Linux box you already run

virt-manager is the graphical front end to libvirt, and it is the right tool when the home server is just a Linux install you did not want to reformat into a hypervisor distribution. Add a PCI host device to the guest, and libvirt handles the vfio-pci handoff at VM start and gives the card back at shutdown. The interface exposes the underlying XML directly, which matters here, because passthrough tuning lives in places a wizard will not take you: CPU pinning, hugepages, hiding the hypervisor from NVIDIA drivers, and attaching the IVSHMEM device that Looking Glass needs.

Because it runs on top of libvirt and QEMU/KVM, everything you learn transfers. The same domain XML works from the command line with virsh, from virt-install in a script, and on any distribution that ships libvirt.

Where it falls short: No web UI, so you are either sitting at the machine or forwarding a session to it. There is no built-in device mapping abstraction like Proxmox has, so PCI addresses in the XML can shift if you move cards between slots. Single-GPU passthrough, where the host has no other graphics, needs your own start and stop hook scripts to tear down the display manager and rebind drivers.

Pricing:

Platforms: Linux

Download: virt-manager.org · GitHub

Bottom line: The lightest path to passthrough when the server is a general-purpose Linux machine rather than a dedicated hypervisor.

4. vendor-reset: best for AMD cards that hang on VM shutdown

vendor-reset exists because of one specific and infuriating failure: you shut down the guest, try to start it again, and the GPU is gone until the entire host reboots. Several AMD generations do not implement a working function-level reset, so the card ends up in a state the kernel cannot recover. vendor-reset is a Linux kernel module that hooks the reset path with ftrace and applies device-specific reset sequences, with no kernel patching required.

Coverage includes Polaris (RX 470, 480, 570, 580, 590, and the 5xx laptop parts), Vega 56 and 64, Radeon VII, Instinct MI100, and Navi cards including the 5600 XT, 5700, and 5700 XT. Those are exactly the cards being sold cheaply second hand right now, which makes this module quietly essential for the reader who just bought one. Install it as a DKMS module and set the reset method for the affected device to device_specific.

Where it falls short: It is not universal. If your card is outside the supported families, this module will not help, and some users still hit edge cases where a guest crash rather than a clean shutdown leaves the device wedged. It is a kernel module, so kernel upgrades can require a rebuild.

Pricing:

Platforms: Linux

Download: GitHub

Bottom line: Install it before you conclude your used AMD card is incompatible with passthrough, because it usually is not.

5. i915-sriov-dkms: best for splitting an Intel iGPU across several VMs

i915-sriov-dkms takes a different position: instead of dedicating one card to one guest, it turns an Intel integrated GPU into multiple virtual functions that several VMs can hold at once. The project packages the SR-IOV-capable i915 and xe driver code as a DKMS module for kernels that do not ship it, and on Intel UHD Graphics it can expose up to 7 virtual functions. For a home server that is a small form factor Intel box, this is the difference between one VM getting hardware acceleration and every VM getting it.

It also answers the second-GPU problem in a useful way. If the iGPU can be split, the host keeps a function for itself and the discrete card stays free for a single heavyweight guest, or you skip the discrete card entirely.

Where it falls short: The project describes itself as highly experimental and community-run, with no Intel affiliation. It tracks specific kernel version ranges, so a host kernel upgrade can break the build until the module catches up. Recent Intel platforms have moved to the mainline xe driver, which changes the setup path depending on the generation you own, and some Meteor Lake and Lunar Lake configurations are not covered.

Pricing:

Platforms: Linux

Download: GitHub

Bottom line: The best value in GPU virtualization if your server already has an Intel iGPU doing nothing.

6. NVIDIA Container Toolkit: best for sharing the GPU instead of surrendering it

NVIDIA Container Toolkit is the honest alternative to passthrough for most home server workloads. Rather than binding the card to vfio-pci and locking it inside one VM, it wires the host’s NVIDIA driver and device nodes into containers, so several containers can use the same GPU concurrently. Install the host driver, install the toolkit, and containers get GPU access with a runtime flag. The CUDA toolkit is not needed on the host.

For a home server, that covers a large share of the reasons anyone puts a GPU in the box in the first place. It avoids every IOMMU grouping problem, every reset bug, and the requirement for separate host graphics, because the host driver never lets go of the card. The equivalent route for system containers is Incus, which has a gpu device type that can attach a physical GPU, an SR-IOV virtual function, or a mediated device to containers and VMs.

Where it falls short: Containers share a driver version with the host, so a guest that needs a different driver stack, a Windows userspace, or a real display output is out of scope. This is not a substitute for passthrough when the goal is a gaming VM. It is also NVIDIA-only.

Pricing:

Platforms: Linux

Download: GitHub · Incus

Bottom line: Try this first. A large number of people who spent a weekend on VFIO did not actually need a VM.

7. Unraid: best paid option for passthrough without the config archaeology

Unraid is the commercial home server OS that made GPU passthrough approachable, and it is still the shortest path from bare metal to a working gaming VM. The VM manager in the web UI lists PCI devices with their IOMMU groups visible, and binding a device to VFIO is a checkbox rather than a kernel parameter you edit by hand. Attach the GPU and its audio function to a Windows or macOS guest, point it at a VirtIO driver ISO, and start it. Docker containers and the array run alongside on the same box.

Unraid also surfaces the information that other tools make you dig for. Seeing which devices share an IOMMU group before you commit saves the specific frustration of discovering, three hours in, that your GPU shares a group with the USB controller.

Where it falls short: It is paid, with tiers based on how many storage devices you attach and a renewal model for continued feature updates after the included period. The array is opinionated and built around parity rather than a striped pool, which not everyone wants. Advanced passthrough tuning still drops you into virsh and raw XML, the same as anywhere else.

Pricing:

Platforms: Linux (boots from USB, bare metal)

Download: unraid.net

Bottom line: Worth the licence if your time is worth more than the price and you want passthrough working this evening.

8. Sunshine: best for reaching a passthrough VM from anywhere in the house

Sunshine is the last pick because it answers a question the other tools ignore. Looking Glass assumes you are sitting at the server. Most home servers are in a cupboard, a rack, or a basement. Sunshine runs inside the guest that now owns the GPU, encodes its output with that GPU’s hardware encoder, and streams it to a Moonlight client on a laptop, phone, tablet, TV box, or Steam Deck. The passed-through card does the encoding, so the cost to the guest is small.

Sunshine hosts run on Windows 11, Linux, macOS 14.2 and later, and FreeBSD, and Moonlight clients exist for nearly every platform. On a Linux guest it works headless with a virtual display; on Windows it wants a display present, which is where a virtual display driver or the guest’s own virtual monitor comes in.

Where it falls short: It is a network stream, so it carries encode and decode latency that Looking Glass does not. Over a wired LAN that is fine for most games and every desktop task, but it is not the same experience as shared memory on the same machine. Setup is a per-guest job rather than a host-level one.

Pricing:

Platforms: Windows, Linux, macOS

Download: GitHub · Moonlight

Bottom line: Pair it with Looking Glass rather than choosing between them: one for when you are at the server, one for when you are not.

How to pick the right one

FAQ

What do I need for GPU passthrough on a home server? A CPU and motherboard with IOMMU support (Intel VT-d or AMD-Vi) enabled in firmware, a GPU that lands in a usable IOMMU group, and a way for the host to keep displaying something after the card is handed over. That last part means integrated graphics, a second GPU, or a single-GPU setup with hook scripts.

Does NVIDIA still block GPU passthrough with Code 43? No. NVIDIA stopped blocking virtualization on GeForce cards from driver 465.89 onward, and virtualization is officially supported on consumer cards now. Older guides that tell you to hide the hypervisor CPUID flag are describing a problem that no longer applies to current drivers, although the setting is harmless if it is already in your config.

Why does my AMD GPU only work once per host boot? That is the AMD reset bug. Several Polaris, Vega, and Navi cards do not implement a working reset, so the GPU cannot be reclaimed after the guest shuts down. The vendor-reset kernel module adds device-specific reset sequences for the affected families and usually fixes it.

Can two VMs share one GPU? Not with plain passthrough, which is exclusive to one guest at a time. Sharing needs SR-IOV virtual functions (available on recent Intel integrated graphics and on some datacentre cards) or NVIDIA vGPU, which is licensed per concurrent guest on supported hardware. For containers rather than VMs, the NVIDIA Container Toolkit or Incus can share a single GPU freely.

Do I need a dummy HDMI plug for Looking Glass? Not with the current setup. The Looking Glass Indirect Display Driver creates a virtual monitor inside the Windows guest, which removes the dummy plug requirement that older guides describe.

Is Hyper-V a realistic option for this? Rarely at home. Discrete Device Assignment needs server-class hardware with Native PCI Express Control and ACS support on the PCIe root complex, and it is not supported on Windows 10 or 11 Pro. GPU partitioning in Windows Server 2025 is the newer path, but the hardware and edition requirements still put it outside most home builds.