Add user audioserver
Add user to group bluetooth
> usermod -a -G audioserver bluetooth
> udevadm control --reload
> udevadm trigger
Reason: The file /etc/dbus-1/system.d/bluetooth.conf
requires it.
Quote:
<!-- allow users of bluetooth group to communicate with hcid -->
<policy group="bluetooth">
<allow send_destination="org.bluez"/>
</policy>
Add to file default-script-file = /home/audioserver/.config/pulse/default.pa
/home/audioserver/.config/pulse/daemon.conf
Add to file /home/audioserver/.config/pulse/default.pa
load-module module-native-protocol-unix # (must be enabled)
# load-module module-suspend-on-idle (must be disabled)
load-module module-null-sink rate=44100 channels=2 sink_name=broadcast_on_all_speakers
set-default-sink broadcast_on_lan
## And disable everything not needed
Add services below to /home/audioserver/.config/systemd/user/
Don't forget to edit $$$ipaddress$$$
Enable services. Login as audioserver. Be sure systemd.pam is used. su audioserver
does not use this file and thus circumvents logind and envirnoment variables are not set.
Perhaps by using ssh.
> loginctl enable-linger audioserver
> mkdir /home/audioserver/.ssh
> cat /root/.ssh/id_rsa.pub >> /home/audioserver/.ssh/authorized_keys
> chown -R audioserver:audioserver /home/audioserver/.config
> ssh -l audioserver localhost
> systemctl --user enable dbus.socket
> systemctl --user enable audioserver_pulseaudio.service
> systemctl --user enable audioserver_mopidy.service
> systemctl --user enable audioserver_shairport.service
> systemctl --user enable audioserver_gstreamer.service
> systemctl --user start audioserver_pulseaudio.service
> systemctl --user start audioserver_mopidy.service
> systemctl --user start audioserver_shairport.service
> systemctl --user start audioserver_gstreamer.service
> systemctl --user status
> exit
> journalctl /usr/bin/pulseaudio
> journalctl --user-unit audioserver_pulseaudio.service
For now DBus (see https://wiki.archlinux.org/index.php/Systemd/User#D-Bus):
> go get github.com/godbus/dbus
> export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
> printenv
> qdbus org.PulseAudio1 /org/pulseaudio/server_lookup1 org.PulseAudio.ServerLookup1.Address
> qdbus --address unix:path=/run/user/1002/pulse/dbus-socket
> qdbus
Install Icecast
> apt-get install icecast2
Web-View
http://$$$ipaddress$$$:8000/
> ffmpeg -f lavfi -i aevalsrc=0 -t 5 /usr/share/icecast2/web/silence.mp3
Config of /etc/icecast2/icecast.xml
<source-password>$$$changeme$$$</source-password>
<relays-on-demand>1</relays-on-demand>
<relay>
<server>mp3ad.egofm.c.nmdn.net</server>
<port>80</port>
<mount>/ps-egofm_192/livestream.mp3</mount>
<local-mount>/egofm.mp3</local-mount>
<on-demand>1</on-demand>
<relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<mount>
<mount-name>/broadcast_on_lan.mp3</mount-name>
<fallback-mount>/silence.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
<mount>
<mount-name>/mopidy.mp3</mount-name>
<fallback-mount>/silence.mp3</fallback-mount>
<fallback-override>1</fallback-override>
</mount>
> apt-get install gstreamer1.0-plugins-ugly lame gstreamer1.0-plugins-good
##TODO
- Add pulseaudio client settings, which prevent starting a new server and use that default sink (http://www.freedesktop.org/wiki/Software/PulseAudio/FAQ/)
- Rygel
- http://unix.stackexchange.com/questions/109490/where-is-why-is-there-no-log-for-normal-user-systemd-services
- HLSSINK of gstreamer
- Relay (on demand) for egofm (icecast) with metadata
- pulseaudio to gstreamer icecast server
- Squeezebox server (slimserver on github)
- squeezeslave/squeezelite