Translation(s): English - Русский


Hardware - Sound

PulseAudio

PulseAudio is a sound server that is installed by default in most Debian desktop environments. It's main purpose is to provide a high level interface for controlling how multiple "sources" (programs that want to play sounds) are connected to "sinks" (sound cards).

Installing PulseAudio

As Debian 8 (Jessie, in 2016), you rarely need to install pulseaudio by hand as it is a dependency of the most popular desktops

If you need to install it manually, apt-get install pulseaudio should "just work" in every release since Debian 6 (Squeeze). Pulseaudio becomes the default when the package is installed. Everything (including flash) will use it.

This can be checked by with pavucontrol (in the pavucontrol package). If the sound is registering in the vu vumetre of that program, then it is being routed through the pulse system.

Basic Configuration

Mixers

Pavucontrol, an optional package for pulseaudio, allows you to make volume adjustments (entire system or per application). It also allows you to change "mixer" settings like headphone output, mic level, input device, and stereo versus surround sound profiles.

However, you may not need to install pavucontrol as most desktop environments have their own control panels for configuring Pulseaudio. Often such programs will not mention Pulseaudio and will simply be called something generic like "Sound Settings".

Surround sound system

Many people have a multi-channel sound cards, but use the speakers for the two channels. PulseAudio has no default settings for surround sound support. To enable all channels, edit the file /etc/pulse/daemon.conf: uncomment default-sample-channels (ie remove the semicolon at the beginning of the line) and set it to 6 if you System 5.1 or 8, if your system is 7.1.

# Default
default-sample-channels = 2
# To 5.1
default-sample-channels = 6
# To 7.1
default-sample-channels = 8

After making the changes, restart Pulseaudio.

Solving Problems

Restarting the Pulseaudio Daemon

To reread the config files ~/.config/pulse/daemon.conf and /etc/pulse/daemon.conf, do this:

$ pulseaudio --kill
$ pulseaudio --start

Interrupting play in Amarok when running Skype

Comment out or remove the line in the /etc/pulse/default.pa

load-module module-cork-music-on-phone

Sound level is low or suddenly becomes too loud

Add a line to /etc/pulse/daemon.conf:

flat-volumes = no

Missing playback devices or audio capture

If Pulseaudio does not correctly detect your input / output devices ("sources" and "sinks" in Pulseaudio parlance), you can try deleting the configuration files and restarting pulseaudio. This is probably unnecessary overkill, but might help some people.

$ rm -r ~/.config/pulse /tmp/pulse-*
$ pulseaudio --kill
$ pulseaudio --start

Front Panel Jacks not working

As of wheezy, for some reason, pulseaudio does not see the toggle feature of some cards (i.e. CMI8788 [Oxygen HD Audio]) exposed by ALSA and playing with the pulseaudio interface (pavucontrol) won't bring happiness. The trick, (for now?), is to bring up the alsamixer ( or alsamixergui) and the audio output can be switched from the read of the card to the front-panel as well as the mic input.

Stuttering and audio interruptions

If a low-power machine stutters (audio breaks up), you can try adding the following to /etc/pulse/daemon.conf:

high-priority = no
nice-level = -1
realtime-scheduling = yes
realtime-priority = 5
flat-volumes = no
resample-method = speex-float-1
default-sample-rate = 48000

Excessive CPU usage and distortion

Add a line to /etc/pulse/default.pa

load-module module-udev-detect tsched = 0

Various problems with Skype and Wine

Add or uncomment the line in /etc/pulse/daemon.conf

default-fragments = 25
default-fragment-size-msec = 25

Disabling daemon autospawn

A pulseaudio client program will automatically run the pulseaudio daemon if there isn't one running already. If you want to be able to kill the daemon without it respawning, make these changes:-

Copy the client configuration file to ~/.config/pulse

$ cp /etc/pulse/client.conf ~/.config/pulse/ 

Use your favorite editor to change the line which says ; autospawn = yes to autospawn = no. Be sure to uncomment the line by removing the leading semicolon.

Alternately, to do both the copy and the edit in one step, just cut and paste this into the command line:

sed 's/; autospawn = yes/autospawn = no/' < /etc/pulse/client.conf  > ~/.config/pulse/client.conf

Advanced

Dynamically enable/disable

As mentioned above, all sound will automatically be routed thorugh pulseaudio when the pulseaudio package is installed. These instructions describe how to disable it with the pulseaudio package still installed. Individual users can then reenable it themselves as needed.

The "just works" magic is achieved through configuration files placed in /usr/share/alsa/alsa.conf.d/. Without these files in place, the regular alsa defaults will be used. Therefore, to achieve the default alsa behavior with the pulseaudio package installed, divert these files

mkdir /usr/share/alsa/alsa.conf.pulse/

dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/pulse.conf --rename  /usr/share/alsa/alsa.conf.d/pulse.conf

dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/99-pulseaudio-default.conf.example  --rename  /usr/share/alsa/alsa.conf.d/99-pulseaudio-default.conf.example

dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/50-pulseaudio.conf --rename  /usr/share/alsa/alsa.conf.d/50-pulseaudio.conf

Now if a user wishes to use pulseaudio, they can create an ~/.asoundrc file that looks something like

 @hooks [
         {
                 func load
                 files [
                         {
                                 @func concat
                                 strings [
                                         { @func datadir }
                                         "/alsa.conf.pulse/"
                                 ]
                         }
                 ]
                 errors false
         } 
 ]

If a user wishes to switch between pulse and non-pulse on a quasi-regular basis, put the above into the ~/.asoundrc.pulse instead and symlink it to ~/.asoundrc when pulse is desired

ln -s ~/.asoundrc.pulse ~/.asoundrc

and remove it when not

rm ~/.asoundrc

be sure also when disabling pulse to kill the server so that other things can directly access the soundcard again

killall pulseaudio

Temporarily suspend and run an application without PulseAudio

You can use the pasuspender utility, if you only need to disable PulseAudio temporarily, to run an application and have it access your audio devices directly.

While you run pasuspender, other applications won't be able to use PulseAudio. When you quit the application, the default behaviour of PulseAudio will be restored automatically.

See man pasuspender for more information.

Here are some features of PulseAudio

http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/PerfectSetup/


CategoryHardware CategorySound