Internet, Linux & IT

Linux Bluetooth: Stotternder Klang beim Start eines Songs

Problem: Der Klang ist stotternd, wenn man einen Song in Amarok oder einem anderen Linux-Audioplayer mit VLC-Backend und einem Bluetooth-Headset abspielt.

Merkwürdigerweise tritt dieses Problem nur auf, wenn der Song mit VLC mit einem Bluetooth-Headset abgespielt wird. Andere Anwendungen funktionieren einwandfrei. Auch die Verwendung kabelgebundener Kopfhörer ist unproblematisch.

Das Muster ist immer gleich: zwei Aussetzer von ca. 1 Sekunde, getrennt durch ca. 1 Sekunde normalen Klangs, danach spielt der Song ohne Probleme. Wenn man den VLC-Cursor zurück an den Anfang des Songs bewegt, um ihn erneut abzuspielen, ohne Stop/Start zu verwenden, treten keine Aussetzer auf.

Lösung: Öffne pavucontrol -> Ausgabegeräte -> Öffne den Abschnitt Erweitert in den Bluetooth-Geräteeinstellungen -> Stelle den Latenzversatz auf einen Wert zwischen -100 ms und -1000 ms ein.

Quelle: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2958

Internet, Linux & IT

Spiele und Desktop streamen mit Sunshine und Moonlight

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