pulse: replace old pulse notes with bran-new README

master
Koichiro IWAO 7 years ago committed by metalefty
parent 3244cb59d5
commit 93481365d1

@ -0,0 +1,145 @@
The latest version of this document can be found at wiki.
* https://github.com/neutrinolabs/xrdp/wiki/How-to-set-up-audio-redirection
# Overview
xrdp supports audio redirection using PulseAudio, which is a sound system for
POSIX operating systems. Server to client redirection is compliant to Remote
Desktop Procol standard [[MS-RDPEA]](https://msdn.microsoft.com/en-us/library/cc240933.aspx)
but client to server redirection implementation is proprietary. Accordingly,
server to client redirection is available with many of RDP clients including
Microsoft client but client to server redirection requires NeutrinoRDP client,
not available with other clients.
Here is how to build pulseaudio modules for your distro, so you can have audio
support through xrdp.
# Prerequisites
Prepare xrdp source in your home directory. Of course, you can choose another
directory.
cd ~
git clone https://github.com/neutrinolabs/xrdp.git
In this instruction, pulseaudio version is **10.0**. 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
# How to build
## Debian 9 / Ubuntu
This instruction also should be applicable to 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-10.0` directory in your
current directory.
apt source pulseaudio
Enter into the directory and build the pulseaudio package.
cd pulseaudio-10.0
dpkg-buildpackage -rfakeroot -uc -b
Enter into pulse directory in xrdp source.
cd ~/xrdp/sesman/chansrv/pulse
nano Makefile
Edit the `Makefile`. Replace `/tmp/pulseaudio-10.0` with your pulseaudio source
directory.
```diff
diff --git a/sesman/chansrv/pulse/Makefile b/sesman/chansrv/pulse/Makefile
index 74977221..395ef0a0 100644
--- a/sesman/chansrv/pulse/Makefile
+++ b/sesman/chansrv/pulse/Makefile
@@ -3,7 +3,7 @@
#
# change this to your pulseaudio source directory
-PULSE_DIR = /tmp/pulseaudio-10.0
+PULSE_DIR = /home/debian/pulseaudio-10.0
CFLAGS = -Wall -O2 -I$(PULSE_DIR) -I$(PULSE_DIR)/src -DHAVE_CONFIG_H -fPIC
all: module-xrdp-sink.so module-xrdp-source.so
```
Finally, let's make. You'll have two .so files `module-xrdp-sink.so` and
`module-xrdp-source.so`.
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, extact the tarball and `cd` into the source
directory, then run `./configure`.
wget https://freedesktop.org/software/pulseaudio/releases/pulseaudio-10.0.tar.xz
tar xf pulseaudio-10.0.tar.gz
cd pulseaudio-10.0
./configure
If additional packages are required to run `./configure`, install requisite
packages depending on your environment.
Next, enter into pulse directory in xrdp source and replace `/tmp/pulseaudio-10.0`
in `Makefile` with your pulseaudio source directory.
cd ~/xrdp/sesman/chansrv/pulse
nano Makefile
Finally, let's make. You'll have two .so files `module-xrdp-sink.so` and
`module-xrdp-source.so`.
make
# Install
Install process is not distro specific except for install destination. Install
built two .so files into the pulseaudio modules directory. Typically,
`/usr/lib/pulse-10.0/modules` for Debian, `/usr/lib64/pulse-10.0/modules` for
CentOS 7. Other distro might have different path. Find out the right path for
your distro.
Look into the directory with `ls` command. You'll see lots of `module-*.so`
files. There's the place!
cd ~/xrdp/sesman/chansrv/pulse
for f in *.so; do install -s -m 644 $f /usr/lib/pulse-10.0/modules; done
This command is equivalent to following:
install -s -m 644 module-xrdp-sink.so /usr/lib/pulse-10.0/modules
install -s -m 644 module-xrdp-source.so /usr/lib/pulse-10.0/modules
Well done! Pulseaudio modules should be properly built and installed.
# See if it works
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.

@ -1,79 +0,0 @@
Pulse audio notes.
to see what version of PA is on your machine
pulseaudio --version
IMA ADPCM
To build xrdp pulse sink,
get the pulse source that most closely matches your version on
your machine. Get the source from
http://freedesktop.org/software/pulseaudio/releases/
run ./configure after extracting. I don't think you need to build it.
edit Makefile to point to your pulse source directory.
PA always respawning
To stop its respawning habit, open /etc/pulse/client.conf, change
autospawn = yes to autospawn = no, and set daemon-binary to /bin/true.
Make sure these lines are uncommented, like this:
autospawn = no
daemon-binary = /bin/true
xfreerdp -a 24 -z --plugin rdpsnd --data alsa:hw:0,0 -- 127.0.0.1
to get ./configure on pulse source to run
apt-get install libsndfile1-dev
apt-get install libspeex-dev
apt-get install libspeexdsp-dev
alsamixer
apt-get install alsa-utils
/etc/asound.conf
---------------------------------
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
---------------------------------
/etc/pulse/default.pa
---------------------------------
.nofail
.fail
load-module module-augment-properties
#load-module module-alsa-sink device=hw:0
#load-module module-alsa-source device=hw:0
#load-module module-pipe-sink
#load-module module-pipe-source
#load-module module-null-sink
load-module module-xrdp-sink
load-module module-native-protocol-unix
#load-module module-udev-detect tsched=0
---------------------------------
To see a list of sinks
pacmd list-sinks
To manually load a sink
pactl load-module module-xrdp-sink.so sink_name=test

@ -1,77 +0,0 @@
--------------------------------------
Building pulseaudio modules for xrdp
--------------------------------------
o append the following line to /etc/apt/sources.list
deb-src http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
this is what my /etc/apt/sources.list looks like
deb http://packages.linuxmint.com/ maya main upstream import
deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu/ precise partner
deb http://packages.medibuntu.org/ precise free non-free
#deb http://archive.getdeb.net/ubuntu precise-getdeb apps
#deb http://archive.getdeb.net/ubuntu precise-getdeb games
deb http://drbl.sourceforge.net/drbl-core drbl stable
deb-src http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
NOTE: If you get an error message that goes something like this:
E: You must put some 'source' URIs in your sources.list
try running the following command first:
apt-get source pulseaudio
o run these commands in your home directory
cd
sudo apt-get install dpkg-dev
apt-get source pulseaudio
sudo apt-get build-dep pulseaudio
cd pulseaudio-1.1
dpkg-buildpackage -rfakeroot -uc -b
o edit Makefile and point PULSE_DIR to ~/pulseaudio<version> dir
o run make; the outputs will be
module-xrdp-sink.so
module-xrdp-source.so
o sudo cp module-xrdp-sink.so /usr/lib/pulse-<version>/modules
sudo cp module-xrdp-source.so /usr/lib/pulse-<version>/modules
note: on a 64bit machine use lib64 instead of lib
o if you build xrdp with --enable-load_pulse_modules, then the above modules
will get loaded automatically when xrdp starts. However if --enable-load_pulse_modules
is not used, then you need to edit /etc/pulse/default.pa and insert the following
two lines into it:
load-module module-xrdp-sink
load-module module-xrdp-source
--------------------------------------
To test sound/microphone redirection
--------------------------------------
o install gnome sound recorder or your favorite sound recorder
o mplayer -ao pulse <audio file>
o sudo apt-get install pavucontrol
o in another window run pavucontrol and you should see xrdp-sink in use
o to enable pulseaudio log
o edit /etc/pulse/daemon.conf and set
log-target = syslog
log-level = notice
o pulseaudio --kill
o log output will be in /var/log/syslog or /var/log/messages
Loading…
Cancel
Save