Skip to main content

Overview

FreeRDP supports redirecting audio in both directions:
  • Sound output (/sound) — plays audio from the remote session on the local client.
  • Microphone input (/microphone) — captures audio on the client and sends it to the remote session.
Both features are implemented as virtual channels (rdpsnd for output, audin for input) and are negotiated with the server at connect time.

Build requirements

Audio backends

FreeRDP supports the following platform audio backends. At least one must be available.

Audio codecs

The most widely supported codec is uncompressed PCM, which requires no additional libraries. Compressed codecs improve quality and reduce bandwidth.
AAC is the preferred compressed codec for Windows 8 and newer servers. To enable AAC encoding (client-to-server microphone), you must also pass -DWITH_DSP_EXPERIMENTAL=ON at build time.
Example build with PulseAudio and FFmpeg:

Sound output

Enable sound redirection with the /sound flag.

Sound sub-options


Microphone input

Enable microphone redirection with the /microphone flag.
The /microphone option accepts the same sys:, dev:, and format: sub-options as /sound.

Using both simultaneously


Troubleshooting

  • Confirm the build includes an audio backend: check for rdpsnd-client-pulse.so or rdpsnd-client-alsa.so in the plugin directory.
  • On Linux with PulseAudio, ensure the PulseAudio daemon is running: pulseaudio --check.
  • On Linux with ALSA, verify the device is not muted: alsamixer.
  • Enable debug logging to trace the codec negotiation:
  • Ensure the build includes audin channel support with the correct backend.
  • On Linux, check that the input device is not muted and is set as the default capture device.
  • The server must support the Audio Input virtual channel (audin). Verify it is not blocked by group policy on the server.
  • PCM is uncompressed and uses the most bandwidth. If bandwidth is limited, ensure a compressed codec (AAC or GSM) was negotiated. Check the debug log for the negotiated format.
  • Rebuild with -DWITH_DSP_FFMPEG=ON or -DWITH_FAAD2=ON to enable compressed codec support.
  • Consider enabling SOXR resampling (-DWITH_SOXR=ON) to improve sample rate conversion quality.
  • AAC encoding requires -DWITH_FAAC=ON and -DWITH_DSP_EXPERIMENTAL=ON.
  • AAC decoding requires -DWITH_FAAD2=ON or -DWITH_DSP_FFMPEG=ON.
  • Rebuild with the appropriate flags and verify the codec appears in the negotiation log.