libpipew...discover(7)

✨ NAME ✨

libpipewire-module-zeroconf-discover β€” Zeroconf Discover πŸ’…

okay bestie, you know how your laptop and your desktop and your weird little server in the closet all want to talk to each other but nobody wants to type in IP addresses?? yeah. this is that. it's the module that goes "hmm who's out there πŸ‘€" and then connects y'all.


πŸ¦‹ DESCRIPTION πŸ¦‹

So basically: use zeroconf to detect and load module-pulse-tunnel with the right parameters. that's the whole vibe. it finds the other machines, it wires up the tunnel, it passes the correct args, nobody has to think about it.

and like, the glow-up here?? this will automatically create sinks and sources to stream audio to/from remote PulseAudio servers. sinks = audio goes out to them, sources = audio comes in from them. no cap, it just shows up in your audio devices like a little gift 🎁

oh and it also works with module-protocol-pulse. so if you're kicking it old-school with the PulseAudio protocol, you're still eating good. periodt. πŸ’–


πŸ‘‘ MODULE NAME πŸ‘‘

libpipewire-module-zeroconf-discover

that's the one you put in your config. copy it carefully bestie, one typo and the whole thing just stares at you silently. 😭


🌸 MODULE OPTIONS 🌸

  • pulse.discover-local β€” allow discovery of local services as well. it is false by default. so by default it's like "i only care about other machines, not me" which honestly? relatable. πŸ™ˆ
  • pulse.latency β€” the latency to end-to-end latency in milliseconds to maintain. default is 200ms. this is your "how much buffer do we give the audio before we vibe-check it" knob. πŸ”₯

πŸŽ€ EXAMPLE CONFIGURATION πŸŽ€

here's what it looks like when you actually write it down. iconic file path, iykyk:

# ~/.config/pipewire/pipewire.conf.d/my-zeroconf-discover.conf

context.modules = [
{   name = libpipewire-module-zeroconf-discover
    args = { }
}
]

and yes, args = { } is empty here because the defaults are doing the heavy lifting. if you want to change pulse.discover-local or pulse.latency, that's where they'd go. πŸ’œ


⚠️ heads up bestie: everything in that args block matters β€” don't go inventing options that aren't listed above, the module will simply not have a good time.

okay that's the whole page!! no gatekeeping. this one's straight outta PipeWire, version 1.6.11, and it lives comfortably in the Miscellaneous Information Manual as libpipew...discover(7). go stream some audio across your network, you absolute legend πŸ’…βœ¨πŸ«ΆπŸŒˆ

πŸ“¦ where this page comes from