Forwarding audio like X in SSH

Solution 1:

First, run paprefs, go to Network Server and check Enable network access to local sound devices. This will load "module-native-protocol-tcp" in PulseAudio.

You can now access the PulseAudio server in several ways:

Manually forward the TCP connection over SSH

  1. Use pax11publish to discover your PulseAudio listener port (usually 4713);
  2. Connect to another computer with ssh -R 24713:localhost:4713 (the remote port '24713' was chosen arbitrarily);
  3. Copy your authentication cookie (~/.config/pulse/cookie) to that computer;
  4. Finally run export PULSE_SERVER="tcp:localhost:24713" and test with pactl info.

Use automatic direct connection with X11-based discovery

Whenever you SSH with X11 forwarding enabled, PulseAudio programs use X11 to discover your sound server (use pax11publish or xprop -root PULSE_SERVER to see for yourself). They will try to establish a direct (non-SSH, unencrypted) connection to your computer for audio streaming.

Use automatic direct connection with DNS-SD discovery

If you have avahi-daemon and pulseaudio-zeroconf installed, you can activate "Allow other machines to discover local devices". This will load "module-zeroconf-publish".

Other computers, with the option "Make discoverable network devices available locally" enabled (module-zeroconf-discover), will automatically list outputs (sinks) that your computer exports. They will use a direct (unencrypted) connection for audio streaming.

This method also requires ~/.config/pulse/cookie to be identical across hosts.