Skip to content

Instantly share code, notes, and snippets.

@Haelle
Created February 22, 2026 10:48
Show Gist options
  • Select an option

  • Save Haelle/f7a2f5eb3655f6e668d8d1859fe12fd3 to your computer and use it in GitHub Desktop.

Select an option

Save Haelle/f7a2f5eb3655f6e668d8d1859fe12fd3 to your computer and use it in GitHub Desktop.
Sunshine headless display on Linux

Sunshine with headless display on Linux

Context

  • GPU : NVIDIA GeForce GTX 1660 SUPER (driver 590.48.01)
  • Connectorr : HDMI-A-1 → TV Samsung 2560x1440
  • Session : KDE Plasma sur Wayland
  • Capture : KMS via /dev/dri/card1 (nvidia-drm)
  • Permissions : OK (user in video group, /dev/dri/card1 accessible)

Sunshine use KMS/DRM to capture the screen. But when the Samsung TV is off, the DRM connector switch to "disconnected", KMS planes doesn't have any active framebuffer, and Sunshine do not find any monitor.

Plan : make the GPU think there is always a screen connected by injecting the EDID of the Samsung TV via Kernel params.

Steps

1. Save the Samsung TV EDID

  • File : /sys/class/drm/card1-HDMI-A-1/edid (available only if TV is on)

  • Target : /usr/lib/firmware/edid/samsung-tv.bin

    sudo mkdir -p /usr/lib/firmware/edid/
    sudo cp /sys/class/drm/card1-HDMI-A-1/edid /usr/lib/firmware/edid/samsung-tv.bin

2. Add EDID in initramfs (mkinitcpio)

  • File : /etc/mkinitcpio.conf
  • update FILES=() in :
    FILES=(/usr/lib/firmware/edid/samsung-tv.bin)
    

3. Add Kernel params in Limine

  • File : /etc/default/limine
  • Add at the end of line KERNEL_CMDLINE[default] the params :
    drm.edid_firmware=HDMI-A-1:edid/samsung-tv.bin video=HDMI-A-1:e
    
    • drm.edid_firmware=HDMI-A-1:edid/samsung-tv.bin → force EDID of the TV on this connector
    • video=HDMI-A-1:e → force the connector to be enabled
  • Final version :
    KERNEL_CMDLINE[default]+="quiet nowatchdog splash rw rootflags=subvol=/@ root=UUID=068e3dcb-7850-4b6b-baea-1e05a3925fd7 resume=UUID=7a1d8d9f-9a66-4612-b0f1-a5c93c3c64fc drm.edid_firmware=HDMI-A-1:edid/samsung-tv.bin video=HDMI-A-1:e"
    

4. regen initramfs

sudo mkinitcpio -P

5. Update Limine config

sudo limine-update

6. Reboot and test

cat /sys/class/drm/card1-HDMI-A-1/status
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment