VOGONS


First post, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

TL;DR: I have expanded my Retro VM Proxmox solution to include remote gaming via Sunshine/Moonlight.

NOTE: Much of this post will pull from my previous thread ( Example/How To: DOS/Windows 98 (and OS9!) Emu/Virtualization+Passthrough (over Thunderbolt!) with Proxmox (QEMU/KVM) ), which was based on Proxmox 7.4 - but I will include Proxmox 9.1 specific solutions in my Low-level explanation here.

Overview:

After getting DOS/Windows98 working with PCI passthrough (vfio) and keyboard/mouse passthrough (evdev) I decided to embark on integrating Sunshine into the above solution to allow me to play my DOS/Windows98 games via Moonlight on-the-go.

Since Proxmox is just a Debian OS (with the Proxmox customizations) it wasn't too much of a lift to install it as a workstation (i.e. installing LightDM and XFCE4) - after getting XFCE4 working, I went ahead and installed Sunshine and confirmed I was able to use Moonlight to connect to my XFCE4 session, and video/audio/keyboard/mouse all worked as expected out-of-the-box.

Next task was getting the DOS/Windows98 VM's video/audio/keyboard/mouse working over Moonlight:

Video: Solved by purchasing a VGA/HDMI capture card with low latency (Magewell, AverMedia or similar), that supported V4L/UVC - this allowed me to view the stream from my DOS/Windows98 GPU using "Guvcview" (or OBS Studio, or whatever) within my XFCE4 session and could be seen remotely over Moonlight.

Audio: Already solved in my previous thread by allowing "root" user to access PulseAudio, and configuring the VM to send the SB16/AC97 audio to the PulseAudio backend - this allowed the VM to send audio directly to my Proxmox host's speakers, which was captured by Sunshine and could be heard remotely over Moonlight.

Keyboard/Mouse: Already solved in my previous thread by assigning evdev devices to the VM - but instead of assigning the evdev devices for my physical keyboard/mouse, I instead assigned the virtual keyboard/mouse evdev devices created by Sunshine.

Details/basic instructions:

NOTE: These instructions assume you have 2 GPUs in your Proxmox rig (or more) - with at least 1 of the GPUs used for the host only (for XFCE4).

- Install Proxmox 9.1 on whatever rig you plan to use (needs to support PCI passthrough though)

- Get a DOS/Windows98 VM up and running with working PCI/keyboard/mouse passthrough, using my previous thread as a reference - do not proceed until this is working.

- To get audio working on your VM under Proxmox 9.1, I would advise using the below method to allow "root" to connect to PulseAudio:

Uncomment 'ConditionUser=!root' from the below 2 files:

/etc/systemd/user/default.target.wants/pulseaudio.service
/etc/systemd/user/sockets.target.wants/pulseaudio.socket

Add root to 'pulse-access' group:

sudo usermod -aG pulse-access root

Reboot, and test access (as root):

pactl info

Example argument for VM:

args: -device ac97 -audio driver=pa,server=/run/user/0/pulse/native,id=audio0

- Install chromium/lightdm/xfce4/guvcview:

apt install chromium guvcview xfce4 lightdm

- Install Sunshine

wget https://github.com/LizardByte/Sunshine/releases/download/v2025.924.154138/sunshine-debian-trixie-amd64.deb
dpkg -i sunshine-debian-trixie-amd64.deb

- Launch XFCE4, log in as a regular user (or root, your preference) and start Sunshine, then make sure you can connect to it with Moonlight. I would also recommend testing the video/audio/keyboard/mouse over Moonlight with something basic (like a YouTube video) - do not proceed until this is working.
- Connect your DOS/Windows98 GPU's output to the capture card's input
- Launch Guvcview, and open the stream from the capture card and make it Full Screen
- SSH into Proxmox, and use the below command to check each evdev device individually to find which ones were created by Sunshine (will include the string 'passthrough' in the name):

udevadm info -a -n /dev/input/eventX | grep name

- Once you have identified which evdev devices correlate with "Keyboard passthrough" and "Mouse passthrough" you can attach them to your DOS/Windows98 VM, using my previous thread as a reference.
- Start your DOS/Windows98 VM, and if everything is working correctly you will have video/audio/keyboard/mouse working in Moonlight.

The above is a pretty basic walkthrough, and doesn't deep-dive too much - but if you already have a DOS/Windows98 VM working in Proxmox with a passed-through GPU/keyboard/mouse (and working audio) then adding Guvcview (to capture the GPU output) and Sunshine (to forward the host video/audio/keyboard/mouse to a remote machine) makes for a relatively easy remote retro gaming server.

Bonus:

If you want to leverage Moonlight's gamepad feature to control DOS/Windows98 games, you can do so using EVMAPY (or several other options that support evdev) to map gamepad inputs to keyboard/mouse inputs - the resulting evdev device(s) can be attached to the VM as an additional keyboard/mouse.

Reply 1 of 4, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

Additional notes:

- Obviously, the lower the latency of the capture card, the happier you will be with sensitive games like first person shooters.
- For my Proxmox host's GPU, I chose to use a Quadro K2200 (PCI-E) as it supports NVENC natively for near-lossless encoding for Sunshine.
- For my DOS/Windows98 VM, I prefer to use either an FX 5200/5500 (PCI) or 6600/7600 GT (PCI-E) GPU - both have great compatibility with PCI passthrough to DOS/Windows98 under Proxmox.
- The above solution can also be leveraged to access other types of VMs remotely for gaming, such as WinXP/7 or Hackintosh (with appropriate GPUs).
- I have also used Sunshine's evdev devices successfully with "qemu-system-ppc" (requires a special build of QEMU) to remotely access my OS9/OS10 VMs as well, but they don't support GPU passthrough so no graphics acceleration for now.

If you need drivers for retro VMs in Proxmox (example: AC97 driver for Windows98), I recommend using DosFreak's repository:

ProxMox Drivers for all operating systems

Reply 2 of 4, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie

For completeness-sake, I will be adding a list of GPUs that I have personally tested with Proxmox (9.1)/DOS+Win98 on my Dell Precision T5810 & T3610:

Working:

Cirrus Logic CL-GD5446 1mb/2mb (PCI)
EVGA/PNY/XFX FX 5200 128mb/256mb (PCI)
Remanufactured (Unknown Brand) FX 5500 256mb (PCI)
BFG 7600 GT 256mb (PCI-E) *Also works with Snow Leopard/Lion (Hackintosh) VM
BFG 7950 GT 256mb (PCI-E) *Also works with Snow Leopard/Lion (Hackintosh) VM

Not Working:

Dell FX 3000 256mb (PCI-E)
BFG 7900 GS 256mb (PCI-E)
EVGA 8800 GT 512mb (PCI-E)
BFG 9600 GT 512mb (PCI-E)

I plan to test/add more GPU results in the near future.

Reply 3 of 4, by sangokushi

User metadata
Rank Member
Rank
Member
FrankensteinTech wrote on Yesterday, 21:19:
For completeness-sake, I will be adding a list of GPUs that I have personally tested with Proxmox (9.1)/DOS+Win98 on my Dell Pre […]
Show full quote

For completeness-sake, I will be adding a list of GPUs that I have personally tested with Proxmox (9.1)/DOS+Win98 on my Dell Precision T5810 & T3610:

Working:

Cirrus Logic CL-GD5446 1mb/2mb (PCI)
EVGA/PNY/XFX FX 5200 128mb/256mb (PCI)
Remanufactured (Unknown Brand) FX 5500 256mb (PCI)
BFG 7600 GT 256mb (PCI-E) *Also works with Snow Leopard/Lion (Hackintosh) VM
BFG 7950 GT 256mb (PCI-E) *Also works with Snow Leopard/Lion (Hackintosh) VM

Not Working:

Dell FX 3000 256mb (PCI-E)
BFG 7900 GS 256mb (PCI-E)
EVGA 8800 GT 512mb (PCI-E)
BFG 9600 GT 512mb (PCI-E)

I plan to test/add more GPU results in the near future.

Do you know if Voodoo PCI passthrough is possible?

Reply 4 of 4, by FrankensteinTech

User metadata
Rank Newbie
Rank
Newbie
sangokushi wrote on Today, 06:46:

Do you know if Voodoo PCI passthrough is possible?

I haven't tested any of the Voodoo cards, but I would imagine they would work fine - the Cirrus Logic card is much older, and it worked without issue. 😀

I have a Voodoo Banshee around here somewhere, i'll find it and then give it try and report back.