Differences between revisions 30 and 66 (spanning 36 versions)
Revision 30 as of 2015-04-22 22:16:54
Size: 8472
Editor: ?Cri
Comment: Added pasuspender usage example
Revision 66 as of 2022-01-07 23:05:18
Size: 13970
Editor: vauss
Comment: typo
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from en/PulseAudio
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[ru/PulseAudio|Русский]] -~
#language en

~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/PulseAudio|español]] - [[fr/PulseAudio|Français]] - [[ru/PulseAudio|Русский]] -~
Line 4: Line 5:
[[Hardware]] - [[Sound]]
 

 . '''[[WikiPedia:PulseAudio|PulseAudio]]''' is a network-capable sound server program. A sound server is a background process accepting sound input from one or more sources (processes, capture devices, etc.), that is able to mix and redirect those sources to one or more sinks (sound cards, remote network PulseAudio servers, or other processes).

PulseAudio is installed by default in most Debian desktop environments.

PulseAudio works on top of [[ALSA]].
Line 8: Line 14:
= PulseAudio =
PulseAudio, previously known as Polypaudio, is a sound server for POSIX and WIN32. It is a replacement for ESoundDaemon.

Here are some features of PulseAudio:

 * High quality software mixing of multiple audio streams with support for more than one entrance (source) and exit (sink).
 * Can be used to combine multiple sound cards into one (with frequency rate).
 * Large set of supported client libraries. Applications that use ESD, ALSA, oss, libao and GStreamer, are supported without the need to any changes to them. Modules for PulseAudio are available for xmms and mplayer.
 * Low latency, and a very accurate measurement delay time for recording and playback. Ability to fully synchronize multiple playback streams.
 * Network transparency: the application can play or record audio on a computer other than the one on which they run.
 * Extensible architecture with modules for jackd, multicast-rtp, lirc and avahi, among others.
Line 22: Line 17:
{{{
# aptitude install pulseaudio
}}}

Since at least squeeze, installing pulseaudio through apt in this way should result in a pulseaudio system that "just works". 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.

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

  || '''Desktop Environment''' || '''Automatically includes pulseaudio?''' ||
  || Cinnamon || Yes ||
  || Gnome || Yes ||
  || KDE || Yes ||
  || LXDE || No ||
  || Mate|| Yes ||
  || XFCE || No ||

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 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 ==
Line 47: Line 56:
== The lack of playback devices or audio capture ==
If we update or some time later Pulseaudio stopped correctly determine the input / output devices and sources, try to clear the configuration files pulseaudio. To do this, delete the folder: {{{~/.pulse}}}, {{{~/.pulse-cookie}}} and {{{/tmp/pulse-*}}}. Forcibly end the process pulseaudio command:

{{{
# killall -9 pulseaudio
}}}

(See Note if running version 6 of Pulseaudio) Then run:

{{{
== Restarting the Pulseaudio Daemon ==

Since Debian 9, Pulseaudio is managed by the per-user instance of [[systemd]]. It uses socket activation, which means Pulseaudio will start automatically when an application tries to use it.

To reread the config files `~/.config/pulse/daemon.conf` and `/etc/pulse/daemon.conf`, one can restart pulse:

{{{
$ systemctl --user restart pulseaudio.service
}}}

Or on systems that do not use systemd (including Debian 8 and earlier):

{{{
$ pulseaudio --kill
Line 60: Line 73:
Note :- From version 6.0 of pulseaudio, the daemon autospawns each time its killed. In order to have the previous way of running the following is required to be changed :-

{{{
[$] cat /etc/pulse/client.conf | grep autospawn
; autospawn = yes
}}}

Copy the configuration files to {{{~/.config/pulse}}}

{{{
[/etc/pulse]
└─[$] sudo cp client.conf /home/shirish/.config/pulse/
}}}

Change the file permissions so you can edit the file :-
{{{
[~/.config/pulse]
└─[$] sudo chmod 446 client.conf
}}}

Make the change using your favorite editor so that it says :-
{{{
[~/.config/pulse]
└─[$] cat client.conf | grep autospawn
  autospawn = no
}}}

Make sure that the indentation in the file is at it is and carry on with above.

If that does not work well and remove the {{{/etc/pulse}}} directory and reinstall PulseAudio.
== 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-*
$ systemctl --user restart pulseaudio.service
}}}

Pulseaudio, in its default configuration, will likely want exclusive access to the hardware. It will therefore skip devices already in use by other applications, eg. web browsers and volume control applets. {{{lsof /dev/snd/*}}} will help identify processes you may need to kill off before PulseAudio will use your audio device.
Line 92: Line 98:
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.


== Wheezing and audio interruptions ==

If a low-power machine having wheezing, in {{{/etc/pulse/daemon.conf}}} list the following:
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}}}:
Line 109: Line 114:
== 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
}}}
Line 117: Line 115:
Add a line to / etc / pulse / default.pa Add a line to `/etc/pulse/default.pa`
Line 123: Line 121:
== Sound level is low or low sound ==
Add a line to / etc / pulse / daemon.conf:

{{{
flat-volumes = no
}}}
Line 131: Line 122:
Add or uncomment the line in / etc / pulse / daemon.conf ## WHAT PROBLEMS? THIS NEEDS DETAILS
Add or uncomment the line in `/etc/pulse/daemon.conf`
Line 137: Line 129:

== 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
}}}

== Echo test: hearing the microphone ==

If you are unsure about your microphone setup, you can hear the input from the microphone in real-time by enabling the [[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#index57h3|loopback module]] ([[https://answers.launchpad.net/ubuntu/+source/pulseaudio/+question/83742|source]]):

{{{
pactl load-module module-loopback
}}}

The module will show up in the '''Recording''' tab of the DebianPackage:pavucontrol program, where the source and volume can be configured. While latency should be low, it should be sufficient to get a feeling of the sound quality as you will hear yourself speak in the microphone. To make the change permanent, add the following line to your `~/.config/pulse/default.pa`:

{{{
load-module module-loopback
}}}

Watch out for feedback! Be ready to lower all volumes in case the microphone picks up the output from the loudspeakers. Naturally, it is better to run such a test with headphones.

On top of this above technique, many conferencing services have built-in echo tests. For example, [[Skype]] has an echo test. [[Mumble]] can also be configured to echo audio back (from local or remote) through the `Configure -> Settings -> Audio Output -> Loopback test`.

== Stop running the pulseaudio daemon for a while ==

If you suspect trouble with a running pulseaudio daemon in your systemd user session, you can switch it off:
{{{
systemctl --user mask pulseaudio.socket
systemctl --user stop pulseaudio.service
}}}
and then to switch it on:
{{{
systemctl --user unmask pulseaudio.socket
systemctl --user start pulseaudio.service
}}}

== Pops when starting and stopping playback or starting audio applications ==

This can be caused by PulseAudio suspending sinks after a period of inactivity. To disable this behaviour, comment out or remove the following line in `/etc/pulse/default.pa` and `/etc/pulse/system.pa` files:
{{{
load-module module-suspend-on-idle
}}}

Reference: [[https://wiki.archlinux.org/title/PulseAudio/Troubleshooting#Pops_when_starting_and_stopping_playback|ArchWiki/PulseAudio/Troubleshooting/Pops when starting and stopping playback]]
Line 202: Line 252:
== Install from source ==
Seems as though there ought to be some general instructions for building things from source in Debian, but I couldn't find them when editing this.

=== Download ===
from here:

http://www.freedesktop.org/wiki/Software/PulseAudio/Download/

=== Configure ===

???

=== Build ===

make

=== Install ===

Put it somewhere. Make some links so programs can find it.



 Reference:

http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/PerfectSetup/
== Connecting PulseAudio and JACK ==

It's possible to use PulseAudio alongside the [[https://jackaudio.org/|JACK]] server, to provide JACK access to applications that only support PulseAudio.

 * Install the `pulseaudio-module-jack` package; this will install the modules `module-jack-sink`, `module-jack-source` and `module-jackdbus-detect`; the modules will create a "PulseAudio JACK" sink and source that will show up in `pavucontrol` and in the `qjackctl` "Connections" window.
 * If you want to enable this feature temporarily, load the modules manually:
{{{
pacmd load-module module-jack-sink
pacmd load-module module-jack-source
}}}
 * If you want to enable this feature automatically, make sure you're running `jackdbus` whenever you run `jackd`, e.g. if you start `jackd` using `qjackctl`, check "Enable JACK D-Bus interface" in the Setup -> Misc tab. Thus, JACK will tell PulseAudio to load the modules at startup. Warning: you might need to close and re-open `qjackctl` in order for this change to take effect.

== Here are some features of PulseAudio ==

 * High quality software mixing of multiple audio streams with support for more than one entrance (source) and exit (sink).
 * Can be used to combine multiple sound cards into one (with frequency rate).
 * Large set of supported client libraries. Applications that use ESD, ALSA, oss, libao and GStreamer, are supported without the need for any changes. Modules for PulseAudio are available for xmms and mplayer.
 * Low latency and accurately measured delay time for recording and playback. Ability to fully synchronize multiple playback streams.
 * Network transparency: the application can play or record audio on a computer other than the one on which they run.
 * Extensible architecture with modules for jackd, multicast-rtp, lirc and avahi, among others.


== External links ==

 * [[https://wiki.archlinux.org/title/PulseAudio|PulseAudio - ArchWiki]]
 * [[https://wiki.archlinux.org/title/PulseAudio/Examples|PulseAudio/Examples - ArchWiki]]
 * [[https://wiki.archlinux.org/title/PulseAudio/Troubleshooting|PulseAudio/Troubleshooting - ArchWiki]]
 * [[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/|User Documentation - PulseAudio]]
 * [[http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/PerfectSetup/|The Perfect Setup - PulseAudio]]
 * [[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/|Network Setup - PulseAudio]]
 * [[https://www.freedesktop.org/wiki/Software/PulseAudio/FAQ/|FAQ - PulseAudio]]
 * [[https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/|Modules - PulseAudio]]
 * [[http://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Pulseaudio-diagram.svg/1000px-Pulseaudio-diagram.svg.png|Schematics of a PulseAudio based system]]
Line 228: Line 287:
CategoryHardware
CategoryHardware | CategorySound | CategorySoftware

Translation(s): English - español - Français - Русский


  • PulseAudio is a network-capable sound server program. A sound server is a background process accepting sound input from one or more sources (processes, capture devices, etc.), that is able to mix and redirect those sources to one or more sinks (sound cards, remote network PulseAudio servers, or other processes).

PulseAudio is installed by default in most Debian desktop environments.

PulseAudio works on top of ALSA.

Installing PulseAudio

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

  • Desktop Environment

    Automatically includes pulseaudio?

    Cinnamon

    Yes

    Gnome

    Yes

    KDE

    Yes

    LXDE

    No

    Mate

    Yes

    XFCE

    No

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 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

Since Debian 9, Pulseaudio is managed by the per-user instance of systemd. It uses socket activation, which means Pulseaudio will start automatically when an application tries to use it.

To reread the config files ~/.config/pulse/daemon.conf and /etc/pulse/daemon.conf, one can restart pulse:

$ systemctl --user restart pulseaudio.service

Or on systems that do not use systemd (including Debian 8 and earlier):

$ 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-*
$ systemctl --user restart pulseaudio.service

Pulseaudio, in its default configuration, will likely want exclusive access to the hardware. It will therefore skip devices already in use by other applications, eg. web browsers and volume control applets. lsof /dev/snd/* will help identify processes you may need to kill off before PulseAudio will use your audio device.

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

Echo test: hearing the microphone

If you are unsure about your microphone setup, you can hear the input from the microphone in real-time by enabling the loopback module (source):

pactl load-module module-loopback

The module will show up in the Recording tab of the pavucontrol program, where the source and volume can be configured. While latency should be low, it should be sufficient to get a feeling of the sound quality as you will hear yourself speak in the microphone. To make the change permanent, add the following line to your ~/.config/pulse/default.pa:

load-module module-loopback

Watch out for feedback! Be ready to lower all volumes in case the microphone picks up the output from the loudspeakers. Naturally, it is better to run such a test with headphones.

On top of this above technique, many conferencing services have built-in echo tests. For example, ?Skype has an echo test. ?Mumble can also be configured to echo audio back (from local or remote) through the Configure -> Settings -> Audio Output -> Loopback test.

Stop running the pulseaudio daemon for a while

If you suspect trouble with a running pulseaudio daemon in your systemd user session, you can switch it off:

systemctl --user mask pulseaudio.socket
systemctl --user stop pulseaudio.service

and then to switch it on:

systemctl --user unmask pulseaudio.socket
systemctl --user start pulseaudio.service

Pops when starting and stopping playback or starting audio applications

This can be caused by PulseAudio suspending sinks after a period of inactivity. To disable this behaviour, comment out or remove the following line in /etc/pulse/default.pa and /etc/pulse/system.pa files:

load-module module-suspend-on-idle

Reference: ArchWiki/PulseAudio/Troubleshooting/Pops when starting and stopping playback

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.

  • Run: pasuspender -- yourapplication [yourapplicationoptions]

  • Configure your application to access your audio devices directly (e.g. select your soundcard ALSA address in an audio player)

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.

Connecting PulseAudio and JACK

It's possible to use PulseAudio alongside the JACK server, to provide JACK access to applications that only support PulseAudio.

  • Install the pulseaudio-module-jack package; this will install the modules module-jack-sink, module-jack-source and module-jackdbus-detect; the modules will create a "PulseAudio JACK" sink and source that will show up in pavucontrol and in the qjackctl "Connections" window.

  • If you want to enable this feature temporarily, load the modules manually:

pacmd load-module module-jack-sink
pacmd load-module module-jack-source
  • If you want to enable this feature automatically, make sure you're running jackdbus whenever you run jackd, e.g. if you start jackd using qjackctl, check "Enable JACK D-Bus interface" in the Setup -> Misc tab. Thus, JACK will tell PulseAudio to load the modules at startup. Warning: you might need to close and re-open qjackctl in order for this change to take effect.

Here are some features of PulseAudio

  • High quality software mixing of multiple audio streams with support for more than one entrance (source) and exit (sink).
  • Can be used to combine multiple sound cards into one (with frequency rate).
  • Large set of supported client libraries. Applications that use ESD, ALSA, oss, libao and GStreamer, are supported without the need for any changes. Modules for PulseAudio are available for xmms and mplayer.

  • Low latency and accurately measured delay time for recording and playback. Ability to fully synchronize multiple playback streams.
  • Network transparency: the application can play or record audio on a computer other than the one on which they run.
  • Extensible architecture with modules for jackd, multicast-rtp, lirc and avahi, among others.


CategoryHardware | CategorySound | CategorySoftware