PipeWire 1.7.0
Loading...
Searching...
No Matches
AirPlay Sink

Creates a new Sink to stream to an Airplay device.

Normally this sink is automatically created with RAOP Discover with the right parameters but it is possible to manually create a RAOP sink as well.

Module Name

libpipewire-module-raop-sink

Module Options

Options specific to the behavior of this module

  • raop.ip: The ip address of the remote end.
  • raop.port: The port of the remote end.
  • raop.name: The name of the remote end.
  • raop.hostname: The hostname of the remote end.
  • raop.transport: The data transport to use, one of "udp" or "tcp". Defaults to "udp".
  • raop.encryption.type: The encryption type to use. One of:
    • "none" - No encryption
    • "RSA" - Legacy RSA encryption
    • "auth_setup" - Legacy auth setup
    • "pair_transient" - Transient pairing (3rd party devices, PIN 3939)
    • "pair_homekit" - HomeKit pairing (3rd party with persistent keys)
    • "pair_fruit" - Apple "Fruit" pairing (Apple TV, HomePod) Default is "none".
  • raop.audio.codec: The audio codec to use. Needs to be "PCM". Defaults to "PCM".
  • raop.password: The password to use.
  • raop.auth_key: Stored authorization key from pair-setup (for pair_homekit/pair_fruit). Format: 128 hex chars (Ed25519 private key) + 64 hex chars (server public key).
  • raop.pairing-pin: PIN shown on an Apple device (Apple TV/HomePod) to perform the one-time pairing that produces raop.auth_key. When set, the module runs pair-setup, logs the resulting key, and stops (it does not stream). Set raop.auth_key to that value and remove raop.pairing-pin to connect from then on.
  • raop.auth-key-file: Optional path to also write the authorization key to after pairing.
  • stream.props = {}: properties to be passed to the sink stream

Options with well-known behavior.

Example configuration

# ~/.config/pipewire/pipewire.conf.d/my-raop-sink.conf
context.modules = [
{ name = libpipewire-module-raop-sink
args = {
# Set the remote address to tunnel to
raop.ip = "127.0.0.1"
raop.port = 8190
raop.name = "my-raop-device"
raop.hostname = "My Service"
#raop.transport = "udp"
raop.encryption.type = "RSA"
#raop.audio.codec = "PCM"
#raop.password = "****"
#audio.format = "S16"
#audio.rate = 44100
#audio.channels = 2
#audio.position = [ FL FR ]
stream.props = {
# extra sink properties
}
}
}
]

See also

RAOP Discover