libpipewire-module-snapcast-discover(7) Miscellaneous Information Manual libpipewire-module-snapcast-discover(7)

# [NAME](#NAME)

libpipewire-module-snapcast-discover - Snapcast Discover

# [DESCRIPTION](#DESCRIPTION)

Automatically creates a Snapcast sink device based on zeroconf information.

This module will load module-protocol-simple for each announced stream that matches the rule with the create-stream action and passes the properties to the module.

If no stream.rules are given, it will create a sink for all announced snapcast servers.

A new stream will be created on the snapcast server with the given snapcast.stream-name or PipeWire-&lt;hostname&gt;. You will need to route this new stream to clients with the snapcast control application.

# [MODULE NAME](#MODULE_NAME)

libpipewire-module-snapcast-discover

# [MODULE OPTIONS](#MODULE_OPTIONS)

Options specific to the behavior of this module

- snapcast.discover-local = allow discovery of local services as well. false by default.
- stream.rules = &lt;rules&gt;: match rules, use create-stream actions. See **Protocol Simple** for module properties.

## stream.rules matches

- snapcast.ip: the IP address of the snapcast server
- snapcast.port: the port of the snapcast server
- snapcast.ifindex: the interface index where the snapcast announcement was received.
- snapcast.ifname: the interface name where the snapcast announcement was received.
- snapcast.name: the name of the snapcast server
- snapcast.hostname: the hostname of the snapcast server
- snapcast.domain: the domain of the snapcast server

## stream.rules create-stream

In addition to all the properties that can be passed to **Protocol Simple**, you can also set:

- snapcast.stream-name: The name of the stream on a snapcast server.
- node.name: The name of the sink that is created on the sender.

# [EXAMPLE CONFIGURATION](#EXAMPLE_CONFIGURATION)

```
# ~/.config/pipewire/pipewire.conf.d/my-snapcast-discover.conf
context.modules = [
{   name = libpipewire-module-snapcast-discover


    args = {


        stream.rules = [


            {   matches = [


                    {    snapcast.ip = "~.*"


                         #snapcast.port = 1000


                         #snapcast.ifindex = 1


                         #snapcast.ifname = eth0


                         #snapcast.name = ""


                         #snapcast.hostname = ""


                         #snapcast.domain = ""


                    }


                ]


                actions = {


                    create-stream = {


                        #audio.rate = 44100


                        #audio.format = S16LE   # S16LE, S24_32LE, S32LE


                        #audio.channels = 2


                        #audio.position = [ FL FR ]


                        #


                        # The stream name as is appears on the snapcast


                        # server:


                        #snapcast.stream-name = "PipeWire"


                        #


                        # The name of the sink on the sender:


                        #node.name = "Snapcast Sink"


                        #


                        #capture = true


                        #server.address = [ "tcp:4711" ]


                        #capture.props = {


                            #target.object = ""


                            #node.latency = 2048/48000


                            #media.class = "Audio/Sink"


                        #}


                    }


                }


            }


        ]


    }
}
]
```

# [SEE ALSO](#SEE_ALSO)

**Protocol Simple**

1.6.11 PipeWire

---

Document: libpipewire-module-snapcast-discover(7) from pipewire 1.6.11-r2 (Chainguard OS)
Source: https://gitlab.freedesktop.org/pipewire/pipewire
