Monthly Archives: February 2024

Using Sunshine without HDMI dummy plug

I have been having fun with Sunshine streaming on Win11 for quite some time, the performance is so good that it feels like I’m using my PC locally.

One thing that bug me for quite some time for the current setup is that, I’m always a Linux fan and I really wanna switch back to Arch Linux instead of Win11. Since I will be streaming using Sunshine for most of the time, the easiest and the most compatible way to do it is using Windows.

Thanks to the Chinese New Year long weekend, I can finally spend some time to really look into it and see whether I can get rid of my Win11 after all. There are two things that preventing me from using Linux for game streaming.

  1. Sunshine or Steam link gaming streaming on Wayland is really bad, either black screen or mouse cursor missing.
  2. On Windows, there is a open source driver that I can use to stream without the needs of HDMI dummy plug.

If the above 2 issues are solved, I can switch back to Arch Linux completely. The first issue is actually quite easily fixable. I just need to switch back to Xorg instead of Wayland. I like Wayland and I believe it is the future, but the current state of Wayland for my use case is just not possible. Switching back to Xorg actually is the easiest way out of the mess.

Second issue is a bit more tricky. The reason why I need this is that, I have multiple computers. One always on M1 Mac Mini, one relatively powerful desktop computer and a mini PC from Minisforum. Sometimes, when I’m done using my Mac and I forgot to switch my KVM switch back to my gaming PC, I will no longer able to connect to it and Sunshine will just fail to start since there is no Monitor connected.

After some googling, I found this reddit post that explaining how to enable a virtual screen without even a HDMI dummy plug:

The beauty of this is that after setting this up, there is no need to buy another HDMI dummy plug and it just work with multiple resolution settings. The post did not explain it steps by steps, so I did some trial and error to make it work. Let me list down what I did, so that I can refer to it in case I need to reinstall Linux on my PC in the future.

First thing we need is an EDID file, we can get it from this page:

https://git.linuxtv.org/edid-decode.git/tree/data

The one that I’m using is samsung-q800t-hdmi2.1, since it support 4K and 1280×800 for the Steam Deck.

After downloading the above file, we need to create a edid folder in:

/usr/lib/firmware/

So it will be like this in the end:

/usr/lib/firmware/edid/samsung-q800t-hdmi2.1

Next, we need to set the kernel parameter for our system to pick this EDID file. If you are like me, using GRUB and grub-mkconfig, you can just add the following line into /etc/default/grub.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash drm.edid_firmware=HDMI-A-2:edid/samsung-q800t-hdmi2.1 video=HDMI-A-2:e"

After that, we will need to regenerate the GRUB config:

# grub-mkconfig -o /boot/grub/grub.cfg

We need to replace HDMI-A-2 to whichever free HDMI output you have in your GPU, we can use the following commands to figure that out:

for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done

Finally, we need to add the EDID file to your initramfs config and regenerate the initramfs image. I’m using Arch Linux, so all I need to do is add the full edid file path to my mkinitcpio.conf FILES section:

Then we need to regenerate it using the following command:

# mkinitcpio -p linux

After that, you just need to reboot your system and you will be able to find a new virtual monitor in the monitor setting.