PulseAudio 16

PulseAudio 16 Released with Bluetooth Battery Level Reporting Support

The freedesktop.org project announced the release of the PulseAudio 16.0 sound server with some new features. So let’s take a look at what’s new and enhanced.

PulseAudio is a general-purpose sound server designed to act as a bridge between your programs and hardware devices that support ALSA or OSS. Furthermore, if Avahi is enabled, it can provide simple network streaming across local devices.

Although PipeWire has grown in popularity in recent years and is currently the primary choice for a sound server in many Linux distributions, PulseAudio is not yet out of the game and is still evolving. And its most recent release, PulseAudio 16, proves this.

PulseAudio 16 Sound Server Highlights

We start with the fact that the Opus codec, which is unmatched for interactive speech and music transmission over the Internet, can now be used to compress audio sent with module-rtp-send. Pass enable opus=true as a module argument to module-rtp-send to use it. However, this feature is only available if PulseAudio is built with GStreamer enabled.

Now let’s move on to the most significant change in this release, in our opinion. PulseAudio 16 sound server now supports battery level reporting via Bluetooth. Finally!

In other words, if a Bluetooth device supports battery level reporting, PulseAudio can now transmit the information to other software. Moreover, if your desktop environment does not yet allow displaying the battery level in a pleasant GUI, the level is also accessible via the bluetooth.battery key in the device’s card object attributes.

Another exciting change in the PulseAudio 16 sound server is some improvements to module-loopback. This module uses adaptive resampling to compensate for minor changes in clock speeds between the source and sink devices.

A new argument, adjust_threshold_usec, was added to fine-tune the controller algorithm. The default setting of 250 microseconds should be adequate in most circumstances. However, if it is insufficient, the loopback’s sample rate will oscillate, while too high values will increase the variance in loopback latency.

Another change in module-loopback is setting the adjust time argument to values less than one second, such as 0.5, which sets the adjustment interval to half a second. So, to tighten the latency control, the default value was changed from 10 seconds to 1 second.

In addition, module-jackdbus-detect, which automatically adds JACK sinks and sources whenever the JACK server is started, also received some love in PulseAudio 16.

The sink_enabled and source_enabled options have been added to the module and accept boolean values. If loading both the sink and the source is not desired, the new arguments can be used to deactivate either one.

Apart from those mentioned above, some additional changes also deserve to be noted here.

Stereo output functionality has been introduced for the EPOS/Sennheiser GSP 670 USB/wireless headset and SteelSeries GameDAC. In addition, a direct USB connection and the GSA 70 wireless dongle are also supported.

Last but not least, the reporting of sink input and source output latency now includes resampler delay. This delay is included in the sink and source latencies. While this is a modest semantic change, it should enable more precise A/V synchronization for applications.

For more information about all PulseAudio 16.0 sound server changes, you can refer to the Release Notes.

Bobby Borisov
Bobby Borisov

Bobby is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, Bobby has worked as a Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

One comment

  1. I would love to see a greater level of coordination between the various puzzle pieces necessary to make sound, and more to the point, bluetooth, work in Linux. For a while, it was a problen in Arch, but it was just matter of figuring out exactly which pieces were necessary and, fortunately, all those pieces were present in the repo. Slackware just works with no configuration needed. And then there’s Gentoo. Whether you decide to take the Pulseaudio or Pulseaudio/ALSA route, or the mewer, supposedly simpler, Pipewire-Pulse route, it’s a constant issue, specifically with connecting to bluetooth earbuds or other headsets.

Leave a Reply

Your email address will not be published. Required fields are marked *