From 8f8386505ca4c02e4585685a31a72a28f7c011dc Mon Sep 17 00:00:00 2001 From: Hugvey Central Command Date: Mon, 13 May 2019 14:12:27 +0200 Subject: [PATCH] Hugvey configuration to run trough PA in system mode --- client_config.yml | 2 +- install_server.sh | 10 ++ installation/pulse-default.pa | 141 ++++++++++++++++++++++++++++ installation/pulseaudio-client.conf | 18 ++++ installation/pulseaudio.service | 9 ++ 5 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 installation/pulse-default.pa create mode 100644 installation/pulseaudio-client.conf create mode 100644 installation/pulseaudio.service diff --git a/client_config.yml b/client_config.yml index c9d6af9..5ec33d3 100644 --- a/client_config.yml +++ b/client_config.yml @@ -12,4 +12,4 @@ voice: input_volume: 100 output_volume: 30 file_address: "http://hugveycmd.local:8888" - output_driver: null + output_driver: pulseaudio diff --git a/install_server.sh b/install_server.sh index 65fb11c..5843f2f 100755 --- a/install_server.sh +++ b/install_server.sh @@ -15,6 +15,16 @@ echo "blacklist snd_bcm2835" > /etc/modprobe.d/internalsnd-blacklist.conf echo "d /var/log/supervisor 0777 root root" > /etc/tmpfiles.d/supervisor.conf cp installation/fstab /etc/fstab +# setup pulseaudio as system daemon and grant access: https://rudd-o.com/linux-and-free-software/how-to-make-pulseaudio-run-once-at-boot-for-all-your-users +cp installation/pulseaudio.service /etc/systemd/system/pulseaudio.service +# disable autospawn +cp installation/pulseaudio-client.conf /etc/pulse/client.conf +# put tsched to 0: https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting#Sound_stuttering_when_streaming_over_network +cp installation/pulse-default.pa /etc/pulse/default.pa +systemctl --system enable pulseaudio.service +systemctl --system start pulseaudio.service +usermod -a -G pulse-access pi + # Added chown=pi:pi cp installation/supervisord.conf /etc/supervisor/supervisord.conf ln -s /home/pi/hugvey/supervisor.conf /etc/supervisor/conf.d/hugvey.conf diff --git a/installation/pulse-default.pa b/installation/pulse-default.pa new file mode 100644 index 0000000..9f1ba49 --- /dev/null +++ b/installation/pulse-default.pa @@ -0,0 +1,141 @@ +#!/usr/bin/pulseaudio -nF +# +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, see . + +# This startup script is used only if PulseAudio is started per-user +# (i.e. not in system mode) + +.fail + +### Automatically restore the volume of streams and devices +load-module module-device-restore +load-module module-stream-restore +load-module module-card-restore + +### Automatically augment property information from .desktop files +### stored in /usr/share/application +load-module module-augment-properties + +### Should be after module-*-restore but before module-*-detect +load-module module-switch-on-port-available + +### Load audio drivers statically +### (it's probably better to not load these drivers manually, but instead +### use module-udev-detect -- see below -- for doing this automatically) +#load-module module-alsa-sink +#load-module module-alsa-source device=hw:1,0 +#load-module module-oss device="/dev/dsp" sink_name=output source_name=input +#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input +#load-module module-null-sink +#load-module module-pipe-sink + +### Automatically load driver modules depending on the hardware available +.ifexists module-udev-detect.so +# HUGVEY: put tsched to 0: https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting#Sound_stuttering_when_streaming_over_network +load-module module-udev-detect tsched=0 +.else +### Use the static hardware detection module (for systems that lack udev support) +load-module module-detect +.endif + +### Automatically connect sink and source if JACK server is present +.ifexists module-jackdbus-detect.so +.nofail +load-module module-jackdbus-detect channels=2 +.fail +.endif + +### Automatically load driver modules for Bluetooth hardware +.ifexists module-bluetooth-policy.so +load-module module-bluetooth-policy +.endif + +.ifexists module-bluetooth-discover.so +load-module module-bluetooth-discover +.endif + +### Load several protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix + +### Network access (may be configured with paprefs, so leave this commented +### here if you plan to use paprefs) +#load-module module-esound-protocol-tcp +#load-module module-native-protocol-tcp +#load-module module-zeroconf-publish + +### Load the RTP receiver module (also configured via paprefs, see above) +#load-module module-rtp-recv + +### Load the RTP sender module (also configured via paprefs, see above) +#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" +#load-module module-rtp-send source=rtp.monitor + +### Load additional modules from GConf settings. This can be configured with the paprefs tool. +### Please keep in mind that the modules configured by paprefs might conflict with manually +### loaded modules. +.ifexists module-gconf.so +.nofail +load-module module-gconf +.fail +.endif + +### Automatically restore the default sink/source when changed by the user +### during runtime +### NOTE: This should be loaded as early as possible so that subsequent modules +### that look up the default sink/source get the right value +load-module module-default-device-restore + +### Automatically move streams to the default sink if the sink they are +### connected to dies, similar for sources +load-module module-rescue-streams + +### Make sure we always have a sink around, even if it is a null sink. +load-module module-always-sink + +### Honour intended role device property +load-module module-intended-roles + +### Automatically suspend sinks/sources that become idle for too long +load-module module-suspend-on-idle + +### If autoexit on idle is enabled we want to make sure we only quit +### when no local session needs us anymore. +.ifexists module-console-kit.so +load-module module-console-kit +.endif +.ifexists module-systemd-login.so +load-module module-systemd-login +.endif + +### Enable positioned event sounds +load-module module-position-event-sounds + +### Cork music/video streams when a phone stream is active +load-module module-role-cork + +### Modules to allow autoloading of filters (such as echo cancellation) +### on demand. module-filter-heuristics tries to determine what filters +### make sense, and module-filter-apply does the heavy-lifting of +### loading modules and rerouting streams. +load-module module-filter-heuristics +load-module module-filter-apply + +### Make some devices default +#set-default-sink output +#set-default-source input diff --git a/installation/pulseaudio-client.conf b/installation/pulseaudio-client.conf new file mode 100644 index 0000000..9de638a --- /dev/null +++ b/installation/pulseaudio-client.conf @@ -0,0 +1,18 @@ +# disable autospawn because we're in system wide mode + +; default-sink = +; default-source = +; default-server = +; default-dbus-server = + +autospawn = no +; daemon-binary = /usr/bin/pulseaudio +; extra-arguments = --log-target=syslog + +; cookie-file = + +; enable-shm = yes +; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB + +; auto-connect-localhost = no +; auto-connect-display = no diff --git a/installation/pulseaudio.service b/installation/pulseaudio.service new file mode 100644 index 0000000..7542c17 --- /dev/null +++ b/installation/pulseaudio.service @@ -0,0 +1,9 @@ +[Unit] +Description=PulseAudio system server + +[Service] +Type=notify +ExecStart=/usr/bin/pulseaudio --daemonize=no --system --realtime --log-target=journal + +[Install] +WantedBy=multi-user.target