From ArchWiki
Revision as of 19:12, 6 June 2010 by Thelucster (Talk | contribs) (Disabling Idle Shutdown)

Jump to: navigation, search

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end

PulseAudio is a sound server for POSIX and Win32 systems. It allows to have multiple programs playing sound at one machine, among even more advanced features. PulseAudio is a drop-in replacement for the enlightened sound daemon (ESD). This article focuses on the more basic PulseAudio features.

Please note, PulseAudio is not a drop-in replacement for aRts. If you use KDE 3, it is not currently possible to use PulseAudio.


All packages are from the community repository so you need to have it enabled. Then, to install pulseaudio:

# pacman -S pulseaudio

Optionally you can install some GTK front-ends for PulseAudio:

# pacman -S paprefs pavucontrol pavumeter

Realtime scheduling

It is a good idea to allow PulseAudio to run with realtime scheduling, which can help performance. To do this, add the following lines to Template:Filename:

@pulse-rt - rtprio 9
@pulse-rt - nice -11

Afterwards, you need to add your user to the Template:Codeline group:

# gpasswd -a <user> pulse-rt


PulseAudio can be started with:

$ pulseaudio --start

And stopped with:

$ pulseaudio --kill

Note that in the case of certain X11 environments, PulseAudio will be started on login. See the section on Desktop Environments for details.

Disabling Idle Shutdown

When starting PulseAudio in this way, if nothing attempts to use it after 1 minute it will automatically shutdown. You can prevent this (at least while you are still logged in) by enabling the console kit module in Template:Filename:

load-module module-console-kit

Backend Configuration


For the applications that do not support PulseAudio and support ALSA it is recommended to install the PulseAudio plugin for alsalibs. This plugin is available in the alsa-plugins package.

# pacman -S alsa-plugins

In order for ALSA to use PulseAudio you need to edit (or create) Template:Filename (system wide settings) (recommended) or Template:Filename (settings on a per user basis) to have these lines: Template:File

If you omit the last two groups, Pulseaudio will not be used by default. You will then need to change the ALSA device to "pulse" in the applications that you use to make it work.

To prevent applications from using ALSA's OSS emulation and bypassing Pulseaudio (thereby preventing other applications from playing sound), remove the Template:Codeline module by executing:

$ rmmod snd-pcm-oss

Afterwards, blacklist the module by adding Template:Codeline to MODULES in Template:Filename.


There are multiple ways of making OSS-only programs play to PulseAudio:

padsp wrapper

If you have a program that uses OSS you can make it work with PulseAudio by starting it with padsp:

$ padsp OSSprogram

A few examples:

$ padsp aumix
$ padsp sox foo.wav -t ossdsp /dev/dsp

If you prefer you can rename the program OSSprogram-real and replace it with a script like this: Template:File


This method is more elaborate, but will allow you to avoid having to use a wrapper script.

You will need to add Template:Codeline to the kernel parameters (/boot/grub/menu.lst) and also blacklist Template:Codeline and Template:Codeline in Template:Filename.

Install osspd (e.g. ossp or ossp-git from the AUR) and start it using:

/etc/rc.d/osspd start

Afterwards, add it to DAEMONS in rc.conf.


To make GStreamer use PulseAudio, you will need to install the gstreamer0.10-pulse package:

# pacman -S gstreamer0.10-pulse

Then, execute Template:Filename (part of gnome-media package) and select PulseAudio Sound Server in both Audio Input and Output. Alternatively, this can be done by setting the gconf variables Template:Codeline to pulsesink and Template:Codeline to pulsesrc:

 $ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink
 $ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosrc pulsesrc

Some applications (like Rhythmbox) ignore the audiosink property, but rely instead on musicaudiosink, which can't be configured using Template:Filename but needs to be manually set using Template:Filename or the Template:Filename:

 $ gconftool-2 -t string --set /system/gstreamer/0.10/default/musicaudiosink pulsesink


SDL in the extra repository does not provide Pulseaudio support. You will need to rebuild it from the ABS. No change to the PKGBUILD is neccessary.


OpenAL in the extra repository does not provide Pulseaudio support. You will need to rebuild it from the ABS. No change to the PKGBUILD is neccessary.

OpenAL Soft should be configured to use PulseAudio: Template:File


# pacman -Su libao-pulse

Edit the libao configuration file: Template:File


The current binary of PortAudio in the community repository does not support PulseAudio and non-mmap audio devices. This can be remedied by building PortAudio from ABS and applying a patch to the sources.


Install xine-lib-pulse from AUR - tested with Amarok 1.x

Desktop Environments

General X11

Start Pulseaudio after X using:

$ start-pulseaudio-x11

This will start Pulseaudio and load the X11 plugins.

If you use GNOME or KDE, Pulseaudio may already launch on login automatically.

X11 bell

To make Pulseaudio play a sample when an X11 bell event happens (e.g. to make your terminal go 'Ping!' instead of 'Beep!'), add the following to Template:Filename:

load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/dialog-error.ogg
load-module module-x11-bell sample=x11-bell 

You can also use another sample. Template:Filename is provided by sound-theme-freedesktop.


gnome-media-pulse from the AUR provides a gnome-media built with Pulseaudio support. This will provide you with a Pulseaudio-compatible Sound Preferences.


Add the following lines to your Template:Filename:

pcm.phononpulse {
  type plug
  slave.pcm {
    type pulse
  hint {
    show on
    description "PulseAudio"

Now you can change the output device in "System Settings -> Multimedia -> Device Preference" to PulseAudio.

Remember, if you have added the Template:Codeline lines to your Template:Filename you cannot switch between the ALSA and the PulseAudio playback.


Due to compatibilty concerns there is no PulseAudio support for Phonon by default. There are two ways of making phonon work with PulseAudio. Either you have to make use of the xine backend by installing "phonon-xine". As xine has ESD support and PulseAudio is compatible with ESD it will work.

If you want to stay with gstreamer as backend, you'll have to recompile the package with PulseAudio support. Therefore you'll have to get the PKGBUILD (e.g. with abs), and remove the line saying:


Rebuild the package(s) and install them. Remember to setup gstreamer as mentioned above.

An alternative way is to build phonon-git with pulseaudio support from AUR. Phonon 4.4.1 PulseAudio support don't work.



If you are having audio problems with the audio playback of DVDs in VLC, uninstall VLC and install the vlc-nightly package from the AUR, and set the audio output method to Pulseaudio.

Alternative: vlc-pulse from AUR.


There is a pulseaudio enabled version of mpd called mpd-pulse in the AUR.

You will need to configure mpd to use Pulseaudio.

If you run a system-wide daemon, you will need to add the mpd user to the pulse-access group in order for mpd to connect to the daemon.

On a desktop, running mpd as yourself and not using the mpd user is preferred.


The PulseAudio enabled version of mplayer is called mplayer-pulse and is located in AUR. Alternatively, use SDL output: Template:Codeline or make use of abs and rebuild the package with "--enable-pulse".

Alternative configurations

Surround sound systems

Many people have a surround card, but have speakers for just two channels, so PulseAudio cannot really default to a surround setup. To enable all the channels, edit Template:Filename: uncomment the default-sample-channels line (i.e. remove the semicolon from the beginning of the line) and set the value to 6 if you have a 5.1 setup, or 8 if you have 7.1 setup etc.

# Default
# For 5.1
# For 7.1

After doing the edit, you will need to restart Pulseaudio.

ALSA Monitor source

To be able to record from a monitor source (a.k.a. "What-U-Hear", "Stereo Mix"), use Template:Codeline to find out the name of the source in Pulseaudio (e.g. Template:Codeline). Then add lines like the following to Template:Filename or Template:Filename:

pcm.pulse_monitor {
  type pulse
  device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor

ctl.pulse_monitor {
  type pulse
  device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor

Now you can select Template:Codeline as a recording source.

PulseAudio over network

One of PulseAudio's magnificent features is the possibility to stream audio from clients over TCP to the server running the PulseAudio daemon, allowing sound to be streamed through your LAN.

To accomplish this, one needs to enable module-native-protocol-tcp, and copy the pulse-cookie to the clients.

System-wide daemon

Warning: System-wide mode is a bad idea on a desktop. By default, PulseAudio is run per-user and will be started automatically when it is needed; this is simpler, more efficient and more secure. Read What Is Wrong With System Mode for more details.

First you need to add the "pulseaudio" daemon to Template:Filename. Example:

DAEMONS=(syslog-ng network netfs crond pulseaudio)

Then you need to add each user (even root) that should be capable of using PulseAudio to the Template:Codeline group:

# gpasswd -a <user> pulse-access

Edit Template:Filename, and change the following region:

.ifexists module-hal-detect.so
load-module module-hal-detect

to the following:

.ifexists module-udev-detect.so
load-module module-udev-detect

To enable the TCP module, add (or uncomment, if already there) this to Template:Filename:

load-module module-native-protocol-tcp

To allow remote connections to the TCP module, you also have to remember to unblock the service in Template:Filename with for example the following line:

pulseaudio-native: ALL

If you are running a system-wide PulseAudio instance, the cookie is located in Template:Filename. This cookie needs to be sent to the client and placed somewhere the pulse-access group can read (and with permissions so only they can read it). Alternatively, you may add Template:Codeline to the end of the Template:Codeline line to disable authentication.

# scp /var/run/pulse/.pulse-cookie client:/etc/pulse-cookie
# chown pulse:pulse-access /etc/pulse-cookie
# chmod 640 /etc/pulse-cookie

The pulse client needs to know where to look for the cookie. Template:Filename:

### Cookie file

Then the client needs to be configured to connect to the specified server. Template:Filename:

## The default server to connect to

To switch between servers on the client from within X, the Template:Codeline command can be used. For example, to switch from the default server to the local server:

$ pax11publish -e -S localhost

Or to switch back to the default:

$ pax11publish -e -r

Note that for the switch to become apparent, the programs using Pulse must be restarted.

To use the ESounD wrapper while using a system-wide daemon, you also need to enable auth-anonymous for the esound-unix module, or copy Template:Filename into each home directory.

Zeroconf (Avahi) publishing

For the remote Pulseaudio server to appear in the PulseAudio Device Chooser (Template:Filename), you will also need to add the Template:Filename to the DAEMONS in rc.conf on both server and clients.

Pulseaudio through JACK

The JACK-Audio-Connection-Kit is popular for audio work, and is widely supported by Linux audio applications. It fills a similar niche as Pulseaudio, but with more of an emphasis on professional audio work. In particular, audio applications such as Ardour and Audacity (recently) work well with Jack.

Pulseaudio provides module-jack-source and module-jack-sink which allow Pulseaudio to be run as a sound server above the JACK daemon. This allows the usage of per-volume adjustments and the like for the apps which need it, play-back apps for movies and audio, while allowing low-latency and inter-app connectivity for sound-processing apps which connect to JACK. However, this will prevent Pulseaudio from directly writing to the sound card buffers, which will increase overall CPU usage.

To just try PA on top of jack you can have PA load the necessary modules on start:

pulseaudio -L module-jack-sink -L module-jack-source

To use pulseaudio with JACK, JACK must be started up before Pulseaudio, using whichever method you prefer. Pulseaudio then needs to be started loading the 2 relevant modules. Edit Template:Filename, and change the following region:

### Load audio drivers statically (it is probably better to not load
### these drivers manually, but instead use module-hal-detect --
### see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
### Alternatively use the static hardware detection module (for systems that
### lack udev support)
load-module module-detect

to the following:

### Load audio drivers statically (it is probably better to not load
### these drivers manually, but instead use module-hal-detect --
### see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink
load-module module-jack-source
load-module module-jack-sink

### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
### Alternatively use the static hardware detection module (for systems that
### lack udev support)
#load-module module-detect

Basically, this prevents module-udev-detect from loading. module-udev-detect will always try to grab your sound-card (JACK has already done that, so this will cause an error). Also, the jack source and sink must be explicitly loaded.

QjackCtl with Startup/Shutdown Scripts

Using the settings listed above you can use QjackCtl to execute a script upon startup and shutdown to load/unload PulseAudio. Part of the reason you may wish to do this is that the above changes disable PulseAudio's automatic hardware detection modules. This particular setup is for using PulseAudio in an exclusive fashion with JACK, though the scripts could be modified to unload and load an alternate non-JACK setup, but killing and starting PulseAudio while programs might be using it would become problematic.

The following example could be used and modified as necessary as a startup script that daemonizes PulseAudio and loads the padevchooser program (optional, needs to be built from AUR) called Template:Filename:

#Load PulseAudio and PulseAudio Device Chooser

pulseaudio -D

as well as a shutdown script to kill PulseAudio and the Pulse Audio Device Chooser, as another example called Template:Filename also in the home directory:

#Kill PulseAudio and PulseAudio Device Chooser

pulseaudio --kill
killall padevchooser

Both scripts need to be made executable:

chmod +x jack_startup jack_shutdown

then with QjackCtl loaded, click on the Setup button and then the Options tab and tick both "Execute Script after Startup:" And "Execute Script on Shutdown:" and put either use the ... button or type the path to the scripts (assuming the scripts are in the home directory) Template:Filename and Template:Filename making sure to save the changes you have made.

Pulseaudio through OSS

Add the following to Template:Filename:

 load-module module-oss

Then start Pulseaudio as usual. You should have sinks and sources for your OSS devices.

Pulseaudio from within a chroot (ex. 32-bit chroot in 64-bit install)

Since a chroot sets up an alternative root for the running/jailing of applications, pulseaudio must be installed within the chroot itself (Template:Codeline within the chroot environment).

Pulseaudio, if not set up to connect to any specific server (this can be done in Template:Filename, through the PULSE_SERVER environment variable, or through publishing to the local X11 properties using module-x11-publish), will attempt to connect to the local pulse server, failing which it will spawn a new pulse server. Each pulse server has a unique ID based on the machine-id value in Template:Filename. To allow for chrooted apps to access the pulse server, the following directories must be mounted within the chroot:-


Template:Filename should also be mounted for efficiency and good performance. Note that mounting /home would normally also allow sharing of the Template:Filename folder.

For specific direction on accomplishing the appropriate mounts, please refer to the wiki on installing a bundled 32-bit system, especially the additional section specific to Pulseaudio.


No sound after install

No cards

If PulseAudio starts, run Template:Codeline. If no cards are reported, make sure that your ALSA devices are not in use:

$ fuser -v /dev/snd/*
$ fuser -v /dev/dsp

Make sure any applications using the pcm or dsp files are shut down before restarting PulseAudio.

Muted audio device

If you experience no audio output via any means while using ALSA as your default device, you may have to unmute your sound card. To do this, you will want to launch alsamixer and make sure each column has a green 00 under it (this can be toggled by pressing 'm')

$ alsamixer -c 0

Sometimes the snd_pcsp driver conflicts with the snd_hda_intel driver (for those of you using Intel cards) and no sound output is experienced. To fix this, you can blacklist the snd_pcsp driver in the MODULES array of Template:Filename (by appending Template:Codeline).

Daemon startup failed

Try resetting PulseAudio. To do that:

$ pulseaudio --kill
$ killall pulseaudio
$ killall -9 pulseaudio
$ rm -rf ~/.pulse*
$ rm -rf /tmp/pulse*

Afterwards, start PulseAudio again.


If you cannot launch the PulseAudio Device Chooser, first (re)start the Avahi daemon as follows:

$ /etc/rc.d/avahi-daemon restart

Glitches and high CPU usage since 0.9.14

The PulseAudio sound server has been rewritten to use timer-based audio scheduling instead of the traditional interrupt-driven approach. Timer-based scheduling may expose issues in some Alsa drivers. To turn timer-based scheduling off, replace the line:

load-module module-udev-detect 

in Template:Filename by:

load-module module-udev-detect tsched=0

Choppy sound

Choppy sound in pulsaudio can result from wrong settings for the sample rate in /etc/pulse/deamon.conf. Try changing the line

; default-sample-rate = 44100


default-sample-rate = 48000

and restart the pulsaudio server by executing

pulseaudio --kill && pulseaudio --start

See also

External links