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's false by 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, use create-stream actions. 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