libpipew...discover(7)
β¨ NAME β¨
okay so bestie, this is the manual page for libpipewire-module-raop-discover β it's literally called RAOP Discover and it's the module that goes out and finds your Airplay stuff for you π it lives in section 7 of the Miscellaneous Information Manual, and yes, the header spells it libpipew...discover(7) because some things in life are just like that π
π¦ DESCRIPTION π¦
okay so picture this: this module automatically creates RAOP (Airplay) sink devices based on zeroconf information. no cap. it just β¨finds themβ¨ for you.
and then β and this is the main character part β this module will load module-raop-sink for each announced stream that matches the rule with the create-stream action. like, every single one that passes the vibe check gets its own sink.
but if you don't give it any stream.rules? then it's not picky at all, bestie. it will create a sink for all announced streams. everyone's invited to the party π
π MODULE NAME π
libpipewire-module-raop-discover
that's the whole name, that's the whole thing, periodt π
πΈ MODULE OPTIONS πΈ
these are the options that are specific to the behavior of this module, so like, they're its options, not the general ones, iykyk:
raop.discover-localβ allow discovery of local services as well. it'sfalseby default, so if you want your own local stuff showing up too you gotta say so.raop.latency.msβ latency for all streams in microseconds. and ok this is the cool part, this can be overwritten in the stream rules. so it's a default vibe, not a locked-in vibe.stream.rulesβ it takes<rules>: match rules, usecreate-streamactions. and for the module properties on that, go see AirPlay Sink. π«Ά
π EXAMPLE CONFIGURATION π
here's the whole thing, copy it exactly, don't get creative, bestie π
# ~/.config/pipewire/pipewire.conf.d/my-raop-discover.conf
context.modules = [
{ name = libpipewire-module-raop-discover
args = {
#raop.discover-local = false;
#raop.latency.ms = 1000
stream.rules = [
{ matches = [
{ raop.ip = "~.*"
#raop.port = 1000
#raop.name = ""
#raop.hostname = ""
#raop.domain = ""
#raop.device = ""
#raop.transport = "udp" | "tcp"
#raop.encryption.type = "none" | "RSA" | "auth_setup" | "fp_sap25"
#raop.audio.codec = "PCM" | "ALAC" | "AAC" | "AAC-ELD"
#audio.channels = 2
#audio.format = "S16" | "S24" | "S32"
#audio.rate = 44100
#device.model = ""
}
]
actions = {
create-stream = {
#raop.password = ""
stream.props = {
#target.object = ""
#media.class = "Audio/Sink"
}
}
}
}
]
}
}
]
bestie that file path up top is real β ~/.config/pipewire/pipewire.conf.d/my-raop-discover.conf β drop your config there and watch the sinks appear β¨
π SEE ALSO π
- AirPlay Sink β go read that one too, it's the sibling page and it has the module properties you'll want π
that's the whole page, you ate it, no crumbs left π
this beaut came from PipeWire, version 1.6.11, and it's filed under libpipew...discover(7) β mwah, go touch some config files π
π¦ where this page comes from
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms