So wie es jetzt aussieht, hab ich endlich mein Setup erfolgreich fertiggestellt.
Ich schalte lo in den Multicast-Modus und setze eine Route darauf.
Code: Alles auswählen
# cat network-multicast-lo.service
[Unit]
Description=Configure loopback-interface for multicast (mpd-RTP-stream)
[Service]
Type=oneshot
ExecStart=/sbin/ifconfig lo multicast
ExecStart=/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev lo
#ExecStart=/sbin/route add 224.0.0.56 netmask 255.255.255.0 dev lo
[Install]
WantedBy=basic.target
Für mpd habe ich unter /var/lib/mpd/.config/pulse/default.pa folgendes eingetragen:
Code: Alles auswählen
# cat /var/lib/mpd/.config/pulse/default.pa
#! /usr/bin/pulseaudio -nF
load-module module-native-protocol-unix
load-module module-suspend-on-idle timeout=1
#.ifexists module-udev-detect.so
#load-module module-udev-detect tsched=0
#.else
load-module module-null-sink sink_name=rtp_localhost
#load-module module-rtp-send source=rtp.monitor loop=1 source_ip=127.0.0.1 destination_ip=224.0.0.56
load-module module-rtp-send source=rtp_localhost.monitor rate=48000 channels=2 format=s16be port=46102 loop=1 source_ip=127.0.0.1 destination_ip=224.0.0.56
set-default-sink rtp_localhost
#load-module module-null-sink sink_name=rtp
#load-module module-rtp-send source=rtp.monitor loop=1 source_ip=127.0.0.1 destination_ip=224.0.0.56
#load-module module-rtp-send source=rtp.monitor rate=48000 channels=2 format=s16be port=46102 loop=1 source_ip=127.0.0.1 destination_ip=224.0.0.57
#set-default-sink rtp
load-module module-zeroconf-publish
Und in /etc/pulse/default.pa habe ich zur Standardconfig lediglich diese Zeile noch eingefügt:
Code: Alles auswählen
.ifexists module-combine-sink.so
.fail
load-module module-combine-sink sink_name=combined_sys sink_properties="device.description='System-combined-sink'"
.nofail
.endif
### Load the RTP receiver module (also configured via paprefs, see above)
#load-module module-rtp-recv sap_address=224.0.0.56 sink=combined_sys
load-module module-rtp-recv sink=combined_sys
.fail
set-default-sink combined_sys
.nofail
Die Musik spielt damit unabhängig von einer aktiven Netzwerkverbindung und bei allen eingeloggten Usern incl. GDM-Anmeldebildschirm.
Allerdings bei jedem User untschiedlich gepuffert... und zeitversetzt. Manchmal werden die Latenzzeiten, bis der MPD reagiert (Pause/Play) extrem lange (viele Sekunden), und einem Bug von Pulseaudio bin ich auch auf der Spur (queue overrun) bzw. damit auf den Leim gegangen.
Und die unterschiedlichen pa-Instanzen krallen sich das Bluetooth-Device (so ich eines aktiviere) und verursacht so ein vollkommenes Verhindern eines Erkennens des Gerätes (z.B. Handy) oder das aktivieren/Pairing bzw. connect zum Audioprofil wird für den User (der nicht gdm oder mpd ist) unmöglich. Das ist aber wahrscheinlich eine andere Baustelle und wird nicht so einfach zum Lösen sein. (Als Workaround für das Headset-Problem wird im ArchLinux- und Ubuntu-Forum das Deaktivieren von PA für GDM genannt - was aber bei meinem Setup nicht infrage kommt (Ich will ja ohne eingeloggt zu sein auch Musik hören, weil ich mpd per Handy fernsteuere)
lg scientific