|
@ -1,9 +1,5 @@ |
|
|
[![Build Status](https://travis-ci.org/neutrinolabs/pulseaudio-module-xrdp.svg?branch=devel)](https://travis-ci.org/neutrinolabs/pulseaudio-module-xrdp) |
|
|
|
|
|
|
|
|
|
|
|
The latest version of this document can be found at wiki. |
|
|
|
|
|
|
|
|
|
|
|
* https://github.com/neutrinolabs/pulseaudio-module-xrdp/wiki/README |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[![Build Status](https://github.com/neutrinolabs/pulseaudio-module-xrdp/actions/workflows/build.yml/badge.svg)](https://github.com/neutrinolabs/pulseaudio-module-xrdp/actions) |
|
|
|
|
|
[![Gitter (xrdp)](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/neutrinolabs/xrdp-questions) |
|
|
|
|
|
|
|
|
# Overview |
|
|
# Overview |
|
|
xrdp implements Audio Output redirection using PulseAudio, which is a sound |
|
|
xrdp implements Audio Output redirection using PulseAudio, which is a sound |
|
@ -17,144 +13,57 @@ which means it is interoperable with any RDP client which implements it |
|
|
|
|
|
|
|
|
The client to server audio redirection is implemented as per **Remote Desktop |
|
|
The client to server audio redirection is implemented as per **Remote Desktop |
|
|
Protocol: Audio Input Redirection Virtual Channel Extension |
|
|
Protocol: Audio Input Redirection Virtual Channel Extension |
|
|
[[MS-RDPEAI]](https://msdn.microsoft.com/en-us/library/dd342521.aspx) |
|
|
|
|
|
|
|
|
[[MS-RDPEAI]](https://msdn.microsoft.com/en-us/library/dd342521.aspx)** |
|
|
which means it is interoperable with any RDP client which implements it |
|
|
which means it is interoperable with any RDP client which implements it |
|
|
(most of them including: MS RDP clients, FreeRDP). |
|
|
(most of them including: MS RDP clients, FreeRDP). |
|
|
|
|
|
|
|
|
Here is how to build pulseaudio modules for your distro, so you can have audio |
|
|
|
|
|
support through xrdp. |
|
|
|
|
|
|
|
|
|
|
|
In this instruction, pulseaudio version is **11.1**. You need to **replace the |
|
|
|
|
|
version number in this instruction** if your environment has different |
|
|
|
|
|
versions. You can find out your pulseaudio version executing the following |
|
|
|
|
|
command: |
|
|
|
|
|
|
|
|
|
|
|
pulseaudio --version |
|
|
|
|
|
|
|
|
|
|
|
or |
|
|
|
|
|
|
|
|
|
|
|
pkg-config --modversion libpulse |
|
|
|
|
|
|
|
|
|
|
|
# How to build |
|
|
# How to build |
|
|
|
|
|
These modules make use of the internal pulseaudio module API. To build |
|
|
|
|
|
them you need access to the pulseaudio sources and configuration. |
|
|
|
|
|
|
|
|
## Debian 9 / Ubuntu |
|
|
|
|
|
|
|
|
|
|
|
This instruction also should be applicable to the Ubuntu family. |
|
|
|
|
|
|
|
|
|
|
|
### Prerequisites |
|
|
|
|
|
|
|
|
|
|
|
Some build tools and package development tools are required. Make sure install |
|
|
|
|
|
the tools. |
|
|
|
|
|
|
|
|
|
|
|
apt install build-essential dpkg-dev |
|
|
|
|
|
|
|
|
|
|
|
### Prepare & build |
|
|
|
|
|
|
|
|
|
|
|
Install pulseaudio and requisite packages to build pulseaudio. |
|
|
|
|
|
|
|
|
|
|
|
apt install pulseaudio |
|
|
|
|
|
apt build-dep pulseaudio |
|
|
|
|
|
|
|
|
|
|
|
Fetch the pulseaudio source. You'll see `pulseaudio-11.1` directory in your |
|
|
|
|
|
current directory. |
|
|
|
|
|
|
|
|
|
|
|
apt source pulseaudio |
|
|
|
|
|
|
|
|
|
|
|
Enter into the directory and build the pulseaudio package. |
|
|
|
|
|
|
|
|
|
|
|
cd pulseaudio-11.1 |
|
|
|
|
|
./configure |
|
|
|
|
|
|
|
|
|
|
|
Finally, let's build xrdp source / sink modules. You'll have two .so files |
|
|
|
|
|
`module-xrdp-sink.so` and `module-xrdp-source.so`. |
|
|
|
|
|
|
|
|
|
|
|
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git |
|
|
|
|
|
cd pulseaudio-module-xrdp |
|
|
|
|
|
./bootstrap && ./configure PULSE_DIR=/path/to/pulseaudio-11.1 |
|
|
|
|
|
make |
|
|
|
|
|
|
|
|
|
|
|
## CentOS 7.x (7.5 or later requires this build procedure) |
|
|
|
|
|
|
|
|
*Be aware that the pulseaudio application development packages provided |
|
|
|
|
|
with many distributions do not contain the files necessary to use the |
|
|
|
|
|
pulseaudio module API*. Consequently, the preparation for building these |
|
|
|
|
|
modules can be a little more involved than just installing development |
|
|
|
|
|
tools and packages. |
|
|
|
|
|
|
|
|
### Prerequisites |
|
|
|
|
|
|
|
|
Consult the Pulseaudio Wiki for instructions on building the modules |
|
|
|
|
|
for your platform:- |
|
|
|
|
|
|
|
|
Some build tools and package development tools are required. Make sure install |
|
|
|
|
|
the tools. |
|
|
|
|
|
|
|
|
|
|
|
yum groupinstall "Development Tools" |
|
|
|
|
|
yum install rpmdevtools yum-utils |
|
|
|
|
|
rpmdev-setuptree |
|
|
|
|
|
|
|
|
|
|
|
### Prepare & build |
|
|
|
|
|
|
|
|
|
|
|
Install pulseaudio and requisite packages to build pulseaudio. |
|
|
|
|
|
|
|
|
|
|
|
yum install pulseaudio pulseaudio-libs pulseaudio-libs-devel |
|
|
|
|
|
yum-builddep pulseaudio |
|
|
|
|
|
|
|
|
|
|
|
Fetch the pulseaudio source and extract. You'll see `~/rpmbuild/BUILD/ |
|
|
|
|
|
|
|
|
|
|
|
yumdownloader --source pulseaudio |
|
|
|
|
|
rpm --install pulseaudio*.src.rpm |
|
|
|
|
|
|
|
|
|
|
|
Build the pulseaudio source. In this phase, pulseaudio is not necessarily needed to be built but |
|
|
|
|
|
configured however there's no way to do only configure. |
|
|
|
|
|
|
|
|
|
|
|
rpmbuild -bb --noclean ~/rpmbuild/SPECS/pulseaudio.spec |
|
|
|
|
|
|
|
|
|
|
|
Finally, let's build xrdp source / sink modules. You'll have two .so files |
|
|
|
|
|
`module-xrdp-sink.so` and `module-xrdp-source.so`. |
|
|
|
|
|
|
|
|
|
|
|
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git |
|
|
|
|
|
cd pulseaudio-module-xrdp |
|
|
|
|
|
./bootstrap && ./configure PULSE_DIR=~/rpmbuild/BUILD/pulseaudio-10.0 |
|
|
|
|
|
make |
|
|
|
|
|
|
|
|
|
|
|
## Other distro |
|
|
|
|
|
|
|
|
|
|
|
First off, find out your pulseaudio version using `pulseaudio --version` |
|
|
|
|
|
command. Download the tarball of the pulseaudio version that you have. |
|
|
|
|
|
|
|
|
|
|
|
* https://freedesktop.org/software/pulseaudio/releases/ |
|
|
|
|
|
|
|
|
|
|
|
After downloading the tarball, extract the tarball and `cd` into the source |
|
|
|
|
|
directory, then run `./configure`. |
|
|
|
|
|
|
|
|
|
|
|
wget https://freedesktop.org/software/pulseaudio/releases/pulseaudio-11.1.tar.xz |
|
|
|
|
|
tar xf pulseaudio-11.1.tar.xz |
|
|
|
|
|
cd pulseaudio-11.1 |
|
|
|
|
|
./configure |
|
|
|
|
|
|
|
|
|
|
|
If additional packages are required to run `./configure`, install requisite |
|
|
|
|
|
packages depending on your environment. |
|
|
|
|
|
|
|
|
|
|
|
Finally, let's build xrdp source / sink modules. You'll have two .so files |
|
|
|
|
|
`module-xrdp-sink.so` and `module-xrdp-source.so`. |
|
|
|
|
|
|
|
|
|
|
|
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git |
|
|
|
|
|
cd pulseaudio-module-xrdp |
|
|
|
|
|
./bootstrap && ./configure PULSE_DIR=/path/to/pulseaudio-11.1 |
|
|
|
|
|
make |
|
|
|
|
|
|
|
|
https://github.com/neutrinolabs/pulseaudio-module-xrdp/wiki |
|
|
|
|
|
|
|
|
# Install |
|
|
# Install |
|
|
|
|
|
|
|
|
Just `make install` should install built modules to the correct directory. |
|
|
|
|
|
|
|
|
|
|
|
You can confirm if the modules properly installed by following command: |
|
|
|
|
|
|
|
|
One the modules have been built, `sudo make install` should do the following:- |
|
|
|
|
|
- Install the modules to the correct directory |
|
|
|
|
|
- Install a script `load_pa_modules.sh` to load the modules when a |
|
|
|
|
|
session is started. |
|
|
|
|
|
On many systems this script is installed by default in |
|
|
|
|
|
/usr/libexec/pulseaudio-module-xrdp/ |
|
|
|
|
|
- Install a desktop file `pulseaudio-xrdp.desktop` which will call the |
|
|
|
|
|
`load_pa_modules.sh` script when a desktop is loaded. |
|
|
|
|
|
On many systems this script is installed by default in |
|
|
|
|
|
`/etc/xdg/autostart` |
|
|
|
|
|
|
|
|
|
|
|
Note that the modules will only be loaded automatically when the desktop |
|
|
|
|
|
starts if your desktop supports the XDG autostart specification. Most modern |
|
|
|
|
|
desktops support this. |
|
|
|
|
|
|
|
|
|
|
|
You can confirm if the modules are properly installed by following command: |
|
|
``` |
|
|
``` |
|
|
ls $(pkg-config --variable=modlibexecdir libpulse) |
|
|
|
|
|
|
|
|
ls $(pkg-config --variable=modlibexecdir libpulse) | grep xrdp |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
If you can see lots of `module-*.so` and `module-xrdp-sink.so`, |
|
|
|
|
|
`module-xrdp-source.so`, PulseAudio modules should be properly built and |
|
|
|
|
|
installed. |
|
|
|
|
|
|
|
|
|
|
|
`module-xrdp-sink.so` and `module-xrdp-source.so` may be installed to the |
|
|
|
|
|
target directory, these files are not necessary and you can remove them safely. |
|
|
|
|
|
|
|
|
If you can see `module-xrdp-sink.so` and `module-xrdp-source.so`, |
|
|
|
|
|
PulseAudio modules are properly built and installed. |
|
|
|
|
|
|
|
|
Enjoy! |
|
|
Enjoy! |
|
|
|
|
|
|
|
|
# See if it works |
|
|
# See if it works |
|
|
|
|
|
The easiest way to test this is to use the `paplay` command to play an |
|
|
|
|
|
audio file. |
|
|
|
|
|
|
|
|
|
|
|
You can also do the following:- |
|
|
|
|
|
- run `pavumeter` in the xrdp session- |
|
|
|
|
|
- Playback any YouTube video in Firefox. |
|
|
|
|
|
|
|
|
To see if it works, run `pavumeter` in the xrdp session. Playback any YouTube |
|
|
|
|
|
video in Firefox. You'll see "Showing signal levels of **xrdp sink**" and |
|
|
|
|
|
volume meter moving. |
|
|
|
|
|
|
|
|
You'll see "Showing signal levels of **xrdp sink**" and volume meter moving. |