73196898149a3c24fc69df285b6c05a5c788230a
- Removed all VPS-specific scripts and configs from main branch\n- VPS solution archived in archive/vps-rustdesk-server\n- Rewrote README.md to focus on Intel Alder Lake-N host setup\n- Added note about archive branch and host-only scope\n Fixes #6 (wontfix for VPS GUI, host solution restored)
RDtop — RustDesk Headless Display Setup for Intel iGPU
Виртуальный дисплей для RustDesk без подключенного HDMI на Intel Alder Lake-N.
Ветка archive/vps-rustdesk-server содержит архивное решение для VPS (Hbbr/Hbbs relay). Main теперь только для хоста.
Проблема
Оборудование: Intel Alder Lake-N (i915), Debian 12, X11 (GDM/GNOME).
| Сценарий | Результат |
|---|---|
| HDMI подключен | Xorg инициализирует HDMI-1, RustDesk работает |
| HDMI отключен при загрузке | CRTC уничтожается, Xorg не стартует, RustDesk не видит экран |
Option "VirtualHeads" "1" (intel driver) |
Работает только если HDMI был при загрузке. Без HDMI — VIRTUAL1 не создается |
Решение: Dummy Driver + Kernel EDID Fallback
Dummy driver создает DUMMY0 сразу при старте Xorg, независимо от HDMI.
+------------------------------------------------------------------------+
| Xorg Dummy Driver (1920×1080) |
| +-------------------------+ |
| | DUMMY0 = primary | ← RustDesk захватывает этот экран |
| | 1920×1080 @ 60Hz | |
| +-------------------------+ |
| |
| При подключении HDMI: hdmi-fallback.sh клонирует HDMI1 на DUMMY0 |
| При отключении HDMI: HDMI1 off, DUMMY0 остается primary |
+------------------------------------------------------------------------+
Kernel EDID Fallback (страховка)
Если dummy по какой-то причине не загрузится, ядро i915 создаст виртуальный framebuffer через EDID:
video=HDMI-A-1:1920x1080@60 drm.edid_firmware=HDMI-A-1:edid/samsung.bin
Файлы
| Файл репозитория | Назначение | Установка |
|---|---|---|
bin/hdmi-fallback.sh |
Мониторинг HDMI-A-1 и auto-fallback | ~/.local/bin/hdmi-fallback.sh |
config/x11-host/20-dummy-headless.conf |
Dummy driver Xorg config | /etc/X11/xorg.conf.d/20-dummy-headless.conf |
config/systemd/hdmi-fallback.service |
systemd user unit | ~/.config/systemd/user/hdmi-fallback.service |
scripts/host/setup-host-rustdesk.sh |
Полная настройка RustDesk ID на хосте | Запустить от root |
install.sh |
One-liner установщик | bash install.sh |
Установка (Хост)
Автоматическая
bash -c "$(curl -fsSL https://git.softuniq.eu/NW/RDtop/raw/branch/main/install.sh)"
sudo reboot
Вручную
# 1. Клонировать
git clone https://git.softuniq.eu/NW/RDtop.git ~/RDtop && cd ~/RDtop
# 2. Dummy driver config
sudo cp config/x11-host/20-dummy-headless.conf /etc/X11/xorg.conf.d/
# 3. Удалить старые конфиги
sudo rm -f /etc/X11/xorg.conf.d/20-intel-virtual.conf
sudo rm -f /etc/X11/xorg.conf.d/90-fallback.conf
# 4. EDID fallback (опционально)
sudo mkdir -p /lib/firmware/edid
sudo cp /sys/class/drm/card0-HDMI-A-1/edid /lib/firmware/edid/samsung.bin
# 5. GRUB
sudo sed -i 's|GRUB_CMDLINE_LINUX_DEFAULT=".*"|GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=HDMI-A-1:1920x1080@60 drm.edid_firmware=HDMI-A-1:edid/samsung.bin"|' /etc/default/grub
sudo update-grub
# 6. Fallback скрипт
chmod +x bin/hdmi-fallback.sh
cp bin/hdmi-fallback.sh ~/.local/bin/
# 7. systemd unit
mkdir -p ~/.config/systemd/user
cp config/systemd/hdmi-fallback.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now hdmi-fallback.service
# 8. RustDesk ID fix (защита ID от смены после перезагрузки)
sudo bash scripts/host/setup-host-rustdesk.sh
# 9. Перезагрузка
sudo reboot
Проверка
# После reboot без HDMI
$ xrandr --listmonitors
0: +*DUMMY0 1920/508x1080/286+0+0 DUMMY0 [PRIMARY]
$ rustdesk --get-id
158 356 564 # или ваш текущий ID — он не должен меняться
Troubleshooting
ID меняется после перезагрузки
# Проверить защиту файла
lsattr ~/.config/rustdesk/RustDesk.toml
# Должно показать ---- i --------
# Если нет — запустить setup-host-rustdesk.sh от root
sudo bash scripts/host/setup-host-rustdesk.sh
Черный экран в RustDesk
# Проверить primary
xrandr --verbose | grep primary
# Должно быть: DUMMY0 connected primary
# Если primary не DUMMY0:
xrandr --output DUMMY0 --mode "1920x1080" --primary
xrandr --output HDMI-1 --auto --same-as DUMMY0
Архив
Решение для VPS (Hbbr/Hbbs + Xvfb + XFCE) заархивировано:
git checkout archive/vps-rustdesk-server
Авторы
- Intel Alder Lake-N (i915), Debian 12 / Ubuntu 24.04
- Решение: AI Agent (Kilo Code Orchestrator)
Description
Languages
Shell
100%