How to enable pulseaudio over network after upgrade to Bookworm/pipewire

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

heromode

Active Member
May 25, 2020
380
201
43
I run KDE desktops with pcie passthrough to physical GPU's on proxmox. I use barrier (now forked to input-leap btw) for keyboard/mouse, and pulseaudio over network for audio. My main baremetal desktop hosts the physical mouse/keyboard + barrier server, and the physical audio device.

How other ppl handle the audio on their GPU passthrough VM's i don't know, i guess most ppl get the audio signal over HDMI/DP, or actually use some USB audio, or do passthrough to a pcie soundcard, or actually have an audio device on their server, and use virtio audio.

To me that's not an option, as several desktop VM's would require more audio hardware and more cables, plus an audio mixer, it's too much of a hassle.

So naturally Pulseaudio over network has been great. But now as Debian Bookworm is released, and pipewire is the new default, there are problems. Pipewire does support audio over network, but it requires setup through fairly complicated config files.

The easiest way to continue using audio over network with pipewire is to use the pipewire-pulse layer. But there is literally NO reasonable guide for this, and i figure now with debian 12, many more people will be struggling with this.

So here is how to do it in Bookworm. There are 2 ways to do it depending if you have upgraded from Bullseye, or have a fresh install of Debian 12.

Previously in Bullseye and earlier, running pulseaudio, it was simply a matter of installing 'paprefs' on both sender and receiver, and check 2 checkboxes on the receiver, and one checkbox on the sender:

paprefs_sender.png paprefs_receiver.png

paprefs actually just writes these settings to gsettings, from where pulseaudio then reads them:

Code:
gsettings list-children org.freedesktop.pulseaudio.module-groups
Method 1:

These gsettings are preserved when upgrading to Bookworm, and can be utilized by simply loading the pulseaudio 'module-gsettings' module on both sender and receiver:

as desktop user, on both sender and receiver create the file

~/.config/pipewire/pipewire-pulse.conf.d/10-gsettings.conf

and add the module-gsettings load command:

Code:
pulse.cmd = [ { cmd = "load-module" args = "module-gsettings" flags = [ "nofail" ] } ]
then as desktop user on both sender and receiver reload the pipewire-pulse service:

Code:
systemctl --user restart pipewire-pulse.service
Method 2:

If you are running a fresh install of Bookworm, or want to just load the required modules directly bypassing gsettings:

on the receiver:

~/.config/pipewire/pipewire-pulse.conf.d/10-native-protocol-tcp.conf

Code:
pulse.cmd = [ { cmd = "load-module" args = "module-native-protocol-tcp" flags = [ "nofail" ] } ]


~/.config/pipewire/pipewire-pulse.conf.d/20-zeroconf-publish.conf

Code:
pulse.cmd = [ { cmd = "load-module" args = "module-zeroconf-publish" flags = [ "nofail" ] } ]


on the sender:

~/.config/pipewire/pipewire-pulse.conf.d/10-zeroconf-discover.conf

Code:
pulse.cmd = [ { cmd = "load-module" args = "module-zeroconf-discover" flags = [ "nofail" ] } ]


then as desktop user on both sender and receiver reload the pipewire-pulse service:

Code:
systemctl --user restart pipewire-pulse.service
You should now have TCP audio over network support in Bookworm, without the need to disable pipewire and re-enable pulseaudio.

Edit: a pipewire developer just updated a much needed page based on our discussion, that also prompted me to write the above:
Guide Pulse Tricks · Wiki · PipeWire / pipewire · GitLab

Edit2: changed 'RTP audio over network' to 'TCP audio over network'
 
Last edited: