A crash was reported when using an echo canceller together with a jack sink. The root cause was a recently introduced bug in how module-echo-cancel configures its latency range. Fixed.
It turned out that on some sound cards the digital input doesn’t work unless the “PCM Capture Source” ALSA mixer control is set to “IEC958 In”, which PulseAudio didn’t do. Now it does.
While explaining to a user how to use module-remap-sink, I found the existing documentation of the module to be lacking, so I improved it a bit.
I got introduced to the Steelseries Arctis headsets, which have the unusual feature that they have two separate playback volume controls: one for voice audio (mono) and another for all other audio (stereo). Gamers are supposed to appreciate that. In ALSA the headset appears as two devices, but the default configuration in PulseAudio only used the mono device, which was not nice. Johan Heikkilä wrote configuration that makes both devices show up in PulseAudio, but I claim some credit for the configuration too.
PulseAudio used to set the process umask to 022, meaning that the state information that PulseAudio writes on disk was readable by all users. Well, not really, because the files are written in a location that is not accessible to other users, but the files themselves had their permissions set up that way. This was noticed by a user, because at his workplace there’s a strict policy that files must never be readable by other users. The umask that PulseAudio was changed to 077 (i.e. the files are not readable by other users any more).
It was reported that loading, unloading and then loading again a module in the module configuration file didn’t work. Doing that may sound silly, but there’s actually a use case. PulseAudio loads the configuration from the home directory if it exists there, and if it doesn’t, then PulseAudio loads the configuration from /etc. It’s an either/or situation, but it would be useful to put some per-user modifications in the home directory and otherwise use the default system configuration in /etc. It’s possible to reference another file from the configuration, so the bug reporter referenced the system configuration from the per-user configuration and then unloaded module-stream-restore and reloaded it with different parameters. This didn’t work, because the “unload-module” command didn’t unload the module immediately, so the module was still loaded when trying to load it for the second time, and that caused an error. I fixed this simply by modifying the “unload-module” command so that it unloads the module immediately.
The new default device selection code that I wrote recently turned out to have a bug: it could pick a device that hadn’t yet been fully initialized. Fixed.
This post was originally written on 2017-09-06, and first made available to my Patreon supporters. Speaking of Patreon – I’m using crowdfunding in an attempt to make it financially sustainable to continue my volunteer work as a PulseAudio maintainer. If you’d like to help, check out my Patreon page.