Gestern habe ich auf Youtube den Erfahrungsbericht von Keno zum Spiele-Streaming mit Sunshine und Moonlight gesehen. Ich selbst hatte auch schon verschiedene Lösungen wie Parsec und Stream Remote Play ausprobiert. Wirklich überzeugen konnte mich aber bisher nichts.

Da ich die Kombination von Sunshine (Server) und Moonlight (Client) noch nicht kannte, habe ich es einmal ausprobiert, mit meinem Windows PC als Server und einem Raspberry PI4 2GB als Client. Ob es brauchbar ist, muss sich noch zeigen.

Die Installation war aber leider gerade auf Client-Seite etwas fummelig, daher hier meine Notizen:

Windows Host:

Die Installation erfolgte ohne Probleme: Einfach den aktuellen sunshine-windows-installer.exe von der Homepage laden und den Anweisungen des Installationsprogramms folgen.

Linux Client:

Das aktuelle Raspberry OS (bookworm) in der Lite-Version mit dem Raspberry Pi Imager auf eine SD-Karte installieren. Dabei kann direkt SSH, WLAN sowie ein eigener User konfiguriert werden.

Nach dem Booten konnte dann der Moonlight Client enstprechend der Anleitung installiert werden mit den Befehlen:

user@linux ~ $ curl -1sLf 'https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-qt/setup.deb.sh' | distro=raspbian sudo -E bash sudo apt install moonlight-qt

Moonlight kann man dann grundsätzlich mit dem folgenden Befehl starten:

user@linux ~ $ moonlight-qt

Nach der Installation ggf. die Kernel-Parameter in Datei /boot/firmware/cmdline.txt um folgende zwei Parameter erweitern:

video=HDMI-A-1:1920x1080M@60 usbhid.mousepoll=0

Der erste Parameter stellt die Auflösung fest ein. Dies ist sinnvoll, falls diese nicht korrekt erkannt wird, was bei meinem Monitor der Fall war. Übrigens, dass Aktivieren der Anzeige-Option "4K Output" in raspi-config führte bei mir dazu, dass Moonlight keine Bildausgabe schaffte (Ich habe allerdings auch keinen 4K Monitor). Der zweite Parameter hilft dabei, falls die Maus zu langsam ist.

Zuächst funktionierte bei mir der Ton in Moonlight nicht. Hier half es, Pulseaudio zu installieren und anschliessend mit Raspi-Config den Audio-Ausgang auf den korrekten HDMI-Port zu legen:

user@linux ~ $ sudo apt install pulseaudio
user@linux ~ $ sudo raspi-config

Damit jetzt noch Pulseaudio und Moonlight in der richtigen Reihenfolge automatisch beim einschalten des Raspis gestartet werden, musste ich im Verzeichnis /lib/systemd/system zwei .service-Dateien anlegen:

/lib/systemd/system/pulseaudio.service:

[Unit]
Description=pulseaudio
After=rc-local.service
Before=moonlight.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal

[Install]
WantedBy=multi-user.target

/lib/systemd/system/moonlight.service:

[Unit]
Description=moonlight
After=rc-local.service
After=pulseaudio.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/moonlight-qt

[Install]
WantedBy=multi-user.target

Damit diese Services auch automatisch beim Systemstart gestartet werden, noch die Befehle ausführen:

user@linux ~ $ sudo systemctl enable pulseaudio.service
user@linux ~ $ sudo systemctl enable moonlight.service