One more homelab post. It works, and I’m not sure why.

There is a particular sort of despair that hits you when you have finally solved a problem, you are looking at all of the notes you took during the process and all of the sources you reviewed looking for solutions… and you come to the conclusion that you have no idea which of the random things you threw at the problem was the determining factor in making it finally work.

That’s where I’m at today.

The short version is that, after I installed Bazzite on to an AMD-based mini PC I had and determined that it worked surprisingly well, I moved on to step two of the project – virtualizing Bazzite so I could run games off my home server without having a computer devoted solely to the task.

Spoiler: It worked!  Eventually.

I was following this as my template, which was close to but not quite a tutorial.

I even wound up using the same GPU he recommended, the AMD W5500.  It’s basically a single slot, lower-power version of the RX580 – not the world’s most up-to-date GPU, but more than enough for my purposes.  It was also only $65 on eBay.

(This is not mine.  It’s a random picture from the internet because I didn’t think to take any photos before putting the side panels on)

The biggest challenge of the whole process was trying to understand PCIe passthrough.  In really basic terms, it’s telling the computer hosting the virtual machines that, while the computer has a GPU plugged into it, it shouldn’t use it – rather, it should let a virtual machine take it over.  That way, Bazzite running in the VM has a real GPU and can actually play 3D games.

I had to set up PCIe passthrough when I initially created my Proxmox server, because I wanted to pass through the SATA controllers to the instance of Unraid I was running and I also needed to pass through a USB port so Unraid would see the USB drive that it uses as its license.  That was actually really easy!  I didn’t have to do any special configuration other than selecting the SATA controller in the system settings for the Unraid VM.

GPU Passthrough was not so forgiving, for reasons that eventually made sense.  See, Proxmox is just Linux.  And, like any operating system, it wants display hardware to put up a user interface, even if the UI in question is nothing more than a black screen with a login prompt.

So, it grabs the GPU and doesn’t want to release it – and, while it’s in this state, nothing else can take it over.  The real problem, then, becomes convincing Proxmox to not take ownership of the GPU.

I am not sure how I eventually accomplished this.  There’s a whole set of steps where you blacklist drivers and unload kernel modules and… in the end it was working, but I could not tell you why.  It may have even come down to needing a monitor plugged into the computer’s onboard video.  (Normally I would run this server in headless mode, with no monitor)  I’m not certain and right now I don’t want to try to undo anything to see when it breaks.

I do get one warning when launching the VM.

I don’t like this warning.  Mostly because I don’t know what it’s telling me.  But it doesn’t seem to affect anything.

Anyway, adding a GPU to my main server did increase the power it sucks down a bit.  It idles at like 80 watts now.  Thanks to living in the Pacific Northwest, that’s only about 3 cents a day in energy costs and I think I can deal with that.

This entry was posted in homelab, videogames. Bookmark the permalink.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.