This month I continued reviewing Georg’s messaging patches (and also had a long discussion thread on the topic). We had some disagreements about how the public API should look like, but those disagreements have been largely resolved now.
It was reported that PulseAudio unnecessarily made dbus-daemon log error messages related to communication with bluetoothd. That was caused by sending a reply to a method call from bluetoothd, when bluetoothd indicated that didn’t want a reply to that call. I made a fix for that.
Raspberry Pi 3 has a bluetooth adapter that apparently is by default configured so that the HSP profile doesn’t work with PulseAudio. I was able to give a hint about similar problems with other adapters, and luckily a workaround for another Broadcom adapter worked also with the adapter in Raspberry Pi 3. Ideally the kernel driver would be fixed to work out-of-the-box, but for now you’ll need to run “sudo hcitool cmd 0x3F 0x01C 0x01 0x02 0x00 0x01 0x01” to make HSP work on Raspberry Pi 3.
The new 2.27 release of glibc added a syscall wrapper (memfd_create) that conflicts with PulseAudio’s internal implementation of that wrapper. I fixed PulseAudio so that it can now be built with both old and new glibc versions.
A recent patch of mine caused a bad case of crashing: whenever ports are changed on an alsa card (e.g. when plugging in headphones), PulseAudio will crash. The patch that introduced this bug is otherwise fine, it just didn’t take into account that the port change callback isn’t always called from the main thread as I assumed, causing things to happen in the wrong thread. I started fixing the issue, but the fix isn’t ready yet. I decided to clean up the core port changing design a bit, since calling the port change callback from different threads is not nice at all.
This post was originally written on 2018-02-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 (or Liberapay).