Proxmox - Bazzite VM with iGPU Passthrough
I have been using Proxmox for the last few years for my homelab needs and it has been a great experience so far. I do daily snapshot for my VMs and can rollback easily if there's a problem. Passing through the Intel iGPU to my Jellyfin VM was really easy. I just need to disable the i915 module in the Proxmox host by blacklisting it in modprobe. Then, I pass the iGPU to Jellyfin VM and it was successfully detected. The Jellyfin VM can use the iGPU to do transcoding without any issues.
Recently, I have a more ambitious plan. I have a mini PC with AMD 8845HS as my home server. This CPU has an AMD 780M iGPU, which supposedly has enough computing power to do some light gaming. My plan is to have a VM which can use the iGPU to output image through the HDMI port to my TV.
iGPU Passthrough
Passing through the 780M iGPU was not as straightforward as an intel iGPU. Initially, I simply blacklisted the radeon and amdgpu module with modprobe. Then, when I passed the iGPU to a guest VM, the Proxmox host crashed and needed a hard restart with the power button. Additonally, using SeaBIOS also results in hard crash, I need to use OVMF.
After a (long) googling session, I found a GitHub repository that have exactly what I need. Their readme is quiet elaborate and it is meant for a Windows guest VM. For a Linux guest, I only need the romfile for my iGPU. I downloaded the romfile for my exact iGPU then place them under /usr/share/kvm/
directory on the host. Then I edited the configuration file for my guest VM found here /etc/pve/qemu-server/<guest-id>.conf
.
-hostpci0: 0000:c6:00.0,pcie=1
+hostpci0: 0000:c6:00.0,pcie=1,romfile=vbios_8845hs.bin,x-vga=1
Bazzite
Now that iGPU passthrough works with a Linux guest, I need to choose a distro to game on. At first, I wanted to use SteamOS. Some people have reported success with SteamsOS recovery image to unofficially install it on machines with AMD CPU and GPU. However, my attempt to install SteamOS always resulted in a black screen when booting the recovery image. This could be because of the virtualization or the iGPU passthrough but I don't want to spend too much time debugging it. Luckily, I saw a YouTube video using Bazzite as an alternative of SteamOS and decided to give Bazzite a try.
I was initially really puzzled about the huge size of the ISO file of Bazzite. It was around 9GB, when normally other distros like Ubuntu is only around 2GB. Nevertheless, I still installed it as a guest VM on my Proxmox machine. It works out of the box without any tinkering after installation. Connecting my Xbox controller via Bluetooth also works. Now I can game on my TV at 4K resolution with 120Hz refresh rate and HDR! Of course, if the game is too demanding for the iGPU, I can use steam link to stream the game from my main PC.
What doesn't works
No variable refresh rate (VRR) when using HDMI
One huge downside of using Linux as my gaming OS for my TV is that the HDMI port doesn't support VRR. Apparently, the HDMI forum disallowed anyone to release an open source implementation of HDMI 2.1 specs. There are some posts online (like this or this) that talks about a DP to HDMI cable/adapter that can pass the VRR signal. However the comments in their amazon listing also contains a lot of negative results.
Xbox dongle
Connecting my Xbox controller via Bluetooth works, but I had some difficulties connecting it to a Xbox dongle. Officially, the Xbox dongle only works in windows, but Bazzite come preinstalled with xone, a Linux driver that support Xbox dongle. My dongle is detected by the OS just fine. I can see the status of pairing mode with this command cat /sys/bus/usb/drivers/xone-dongle/*/pairing
and even set them to 1. However, the pairing light never light up on the dongle. A few posts online said that I needed to enable secure boot with the enrollment key from Bazzite to make xone works, since the driver is not signed. I decided to just simply use Bluetooth for now.
Conclusion
Overall, I'm thrilled with how this project turned out. I really enjoy my times using Bazzite and I never feel the need to change to Windows. I hope this experience highlights the power and flexibility of open-source solutions for even niche use cases like iGPU gaming on a Linux VM. If you're looking to push the boundaries of your homelab and explore alternative gaming setups, I highly recommend diving into the world of Proxmox and Linux gaming distros like Bazzite.
Member discussion