# pulseaudio-tcp - Redirect PulseAudio to and from Remote Computer ## Requirements ### Dependencies * jq * Audio subsystem: - PulseAudio or - Pipewire with PulseAudio compatibility (`pipewire-pulse`). - On the local host `pactl` must be of version 16 or later (required for option `--format json`). ### Requirements to Local and Remote Host * pulseaudio-tcp should be installed on a computer running PulseAudio or Pipewire with PulseAudio compatibility. - This computer is in the following referred to as the "local host". * The local host should use use a remote computer for playback. - The remote computer is referred to as the "remote host". - This mode of operation is referred to as "outbound" audio. * The local host should receive audio from the remote host for recording. - This mode of operation is referred to as "inbound" audio. * The IP address of the remote host and the name of a user running a PulseAudio/Pipewire session there should be known. * The remote host should allow login by the remote user with SSH. ### SSH to User Session on Remote Host The user on the local host should have password-less SSH to the user on the remote host (required for encryption with SSH port forwarding): ```shell ssh-copy-id $remote_user@$remote_ip ``` ## Installation ```shell git clone https://tk-sls.de/git/tk-sls.de/pulseaudio-tcp.git cd pulseaudio-tcp sudo make install ``` ## Usage ### Setup Procedure A user on local host running the PulseAudio/Pipewire session, execute: ```shell pulseadio-tcp setup ``` The following questions will be asked: * IP address of remote host. * Name of user on remote host running PulseAudio/Pipewire. * Enable inbound audio. * Enable outbound audio. ### Configuration File The setup procedure writes a configuration file `$HOME/.config/pulseaudio-tcp/config.inc.sh`: ``` remote_ip="192.168.1.166" remote_user="remoteuser" inbound=true outbound=true ``` ### Starting the Service A user on local host running the PulseAudio/Pipewire session, execute: ```shell pulseadio-tcp start ``` ### Stopping the Service A user on local host running the PulseAudio/Pipewire session, execute: ```shell pulseadio-tcp stop ``` ### Checking if the Service is running A user on local host running the PulseAudio/Pipewire session, execute: ```shell pulseadio-tcp status ``` ## Author and Copyright © 2023 Tilman Kranz <t.kranz@tk-sls.de> Please see the file LICENSE for terms and conditions of use and distribution.