Virtual Display (Linux / EDID)
Advanced display setup for Linux / KDE Plasma / Wayland.
This page is for Linux / KDE Plasma setups that need a dedicated display mode through EDID. Most users should start with the Linux server section first and only come here when the EDID has to be generated, installed, or verified manually.
The idea is simple: create an EDID file for the display mode you want, install it into /lib/firmware/edid/,
bind it to the HDMI output, then verify that KDE Plasma sees the new mode.
Install tools
sudo apt update
sudo apt install -y zsh dos2unix automake edid-decode make gcc
Get the EDID generator
mkdir -p ~/dev
cd ~/dev
git clone https://github.com/akatrevorjay/edid-generator
cd edid-generator
dos2unix modeline2edid
chmod +x modeline2edid
Patch for custom square / small-display modes
Some small-display modes need a small patch in the generator. I will add more known-good display profiles here over time.
python3 - <<'PY'
from pathlib import Path
import re
p = Path("edid.S")
s = p.read_text()
s = re.sub(
r'std_xres:\s*\.byte\s*\(XPIX/8\)-31',
'std_xres: .byte 0x01',
s
)
s = re.sub(
r'std_vres:\s*\.byte\s*\(XY_RATIO<<6\)\+VFREQ-60',
'std_vres: .byte 0x01',
s
)
p.write_text(s)
PY
Select resolution and refresh rate
Pick the resolution and refresh rate for the display setup you want. I often use high refresh rates, for example 240 Hz, because this can reduce overall latency. If an app or hardware path does not behave correctly at high refresh rates, lower it. I recommend the highest stable value your hardware and configuration can handle.
This is an advanced topic. I cannot cover every edge case here, but a chatbot will usually be able to help if you show it this page and your exact command output.
Show current 720x720 example
This is the current example config. Later I will add more known-good configs for more supported displays.
cd ~/dev/edid-generator
rm -f sq72030.S sq72030.bin
cat > modelines.txt <<'MODEL'
Modeline "sq72030" 21.12 720 760 832 944 720 721 724 746 -hsync +vsync ratio=4:3 vfreq=30
MODEL
./modeline2edid modelines.txt
make
edid-decode sq72030.bin
Install the EDID file
Install the generated EDID file. Replace the filename when you generate a different display profile.
cd ~/dev/edid-generator
sudo install -Dm644 sq72030.bin /lib/firmware/edid/sq72030.bin
ls -lh /lib/firmware/edid/sq72030.bin
Select the HDMI output
Some Raspberry Pis expose more than one HDMI output. Check the available DRM outputs and select the one you want to bind to the display setup.
ls /sys/class/drm | grep -E 'card[0-9]+-HDMI-A-[12]'
Edit the kernel command line:
sudo nano /boot/firmware/cmdline.txt
Add the EDID binding. Example for HDMI-A-1:
drm.edid_firmware=HDMI-A-1:edid/sq72030.bin video=HDMI-A-1:e
Verify after reboot
cat /proc/cmdline | grep -o 'drm.edid_firmware=[^ ]*\|video=HDMI-A-1:e'
cat /sys/class/drm/card1-HDMI-A-1/status
cat /sys/class/drm/card1-HDMI-A-1/modes
QT_QPA_PLATFORM=wayland kscreen-doctor
QT_QPA_PLATFORM=wayland kscreen-doctor -o
A good result should show the EDID binding, connected, and the display mode you created.
Show example verify output
drm.edid_firmware=HDMI-A-1:edid/sq72030.bin
video=HDMI-A-1:e
connected
720x720