Musik Player Daemon (MPD) und Archlinux

Was ist der MPD und warum sollte ich ihn nutzen?

Der MPD ist ein Daemon (Hintergrunddienst) in Linux der dafür gedacht ist Musik abzuspielen/streamen. Einerseits kann man diesen Dienst statt eines Musikplayers auf dem lokalen Rechner nutzen, aber viel interessanter ist die Idee den Dienst als ferngesteuerter Musikplayer einzusetzen. Er läuft auf nahezu jeder (auch antiken) Hardware, man braucht lediglich einen alten PC/Laptop oder inzwischen läuft er sicherlich auf auf modernen NAS Systemen. Die einzige Anforderung ist eine einigermaßen taugliche Soundkarte und optional einen SPDIF Ausgang (meiner Ansicht nach immer noch die beste Variante Ton zu übertragen).

Ich persönlich nutze einen kleinen Mini PC auf Intel NUC Basis der mir als Media Center dient. Er braucht wenig Strom und läuft daher fast durchgängig. Er ist direkt mit meinem AV-Receiver und dadurch mit dem Soundsystem verbunden. Auf diesem Rechner läuft der MPD im Hintergrund und kann dann mit jedem beliebigen Gerät – sei es ein direkt von dem Media Center, von einem anderen Rechner im Netzwerk oder auch von einem Handy – ferngesteuert werden. Das ist extrem praktisch, wenn z.B. Besuch da ist, kann jeder mit einem passenden Handy-Client (ich bevorzuge bei Android MPDroid) die Musikbibliothek durchsuchen und gleichzeitig eine Playlist „zusammenklicken“.

Problem

Leider ergeben sich auf Archlinux seit dem Umstieg auf systemd einige Probleme wenn PulseAudio genutzt werden soll. Das Problem liegt hierbei an der Verbindung von MPD zum PulseAudio Server. MPD läuft standardmäßig als MPD Nutzer und kann nicht auf die PulseAudio Session des aktuellen Nutzers zugreifen. Dieses Problem kann auf verschiedene Arten gelöst werden.

Das ganze äußert sich dadurch, dass MPD in die Log Datei etwas ähnliches schreibt wie:

Cannot connect to PulseAudio: access denied

Lösung

Starte MPD und PulseAudio mit dem selben User

Wird kein Multi-User System benötigt, ist dies wohl die einfachste und sauberste Lösung. Hierzu bearbeiten wir zuerst die MPD config /etc/mpd.conf und ändern den User von mpd auf den normalen System-User mit dem auch PulseAudio läuft (euer normaler Username).

 user "username"

Als nächstes muss die systemd service Datei bearbeitet werden. Diese Datei wird bei einem System Update wieder überschrieben! Es ist eine einfache und funktionierende Lösung, könnte aber sicherlich anders besser gelöst werden. Die service Datei liegt unter /usr/lib/systemd/system/mpd.service folgendes muss ergänzt werden

[Service]
User=username
PAMName=system-local-login

Um diese Änderung zu übernehmen muss folgender Befehl ausgeführt werden:

systemctl daemon-reload

Nun kann MPD neu gestartet werden

systemctl restart mpd

Jetzt sollte alles einwandfrei funktionieren.

Alternative

Eine Alternative von der ich gelesen habe ist die Nutzung des TCP Plugins von Pulseaudio, siehe Archlinux Forum (Post #10).