---
name: "libpipewire-module-pulse-tunnel"
section: "7"
platform: "linux"
package: "pipewire-pulse"
version: "1:1.6.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libpipewire-module-pulse-tunnel"
---

# libpipewire-module-pulse-tunnel(7)

Pulse Tunnel

## NAME

libpipewire-module-pulse-tunnel - Pulse Tunnel

## DESCRIPTION

The pulse-tunnel module provides a source or sink that tunnels all audio to a remote PulseAudio connection.

It is usually used with the PulseAudio or module-protocol-pulse on the remote end to accept the connection.

This module is usually used together with module-zeroconf-discover that will automatically load the tunnel with the right parameters based on zeroconf information.

## MODULE NAME

libpipewire-module-pulse-tunnel

## MODULE OPTIONS

- •

  tunnel.mode: the desired tunnel to create, must be source or sink. (Default sink)

- •

  pulse.server.address: the address of the PulseAudio server to tunnel to.

- •

  pulse.latency: the latency to end-to-end latency in milliseconds to maintain (Default 200).

- •

  reconnect.interval.ms: when the remote connection is broken, retry to connect with this interval in millisconds. A value of 0 disables recovery and will result in a module unload. (Default 0) (Since 1.1.0)

- •

  stream.props: Extra properties for the local stream.

## GENERAL OPTIONS

Options with well-known behavior.

- •

  **remote.name**

- •

  **audio.format**

- •

  **audio.rate**

- •

  **audio.channels**

- •

  **audio.layout**

- •

  **audio.position**

- •

  **node.latency**

- •

  **node.name**

- •

  **node.description**

- •

  **node.group**

- •

  **node.virtual**

- •

  **node.network**

- •

  **media.class**

- •

  **target.object** to specify the remote node.name or serial.id to link to

## EXAMPLE CONFIGURATION OF A VIRTUAL SINK

```
# ~/.config/pipewire/pipewire.conf.d/my-pulse-tunnel.conf
context.modules = [
{   name = libpipewire-module-pulse-tunnel
    args = {
        tunnel.mode = sink
        # Set the remote address to tunnel to
        pulse.server.address = "tcp:192.168.1.126"
        #pulse.latency = 200
        #reconnect.interval.ms = 0
        #audio.rate=<sample rate>
        #audio.channels=<number of channels>
        #audio.position=<channel map>
        #target.object=<remote target name>
        stream.props = {
            # extra sink properties
        }
    }
}
]
```
