diff options
Diffstat (limited to 'doc/FAQ.html.in')
-rw-r--r-- | doc/FAQ.html.in | 295 |
1 files changed, 0 insertions, 295 deletions
diff --git a/doc/FAQ.html.in b/doc/FAQ.html.in deleted file mode 100644 index 39b7390a..00000000 --- a/doc/FAQ.html.in +++ /dev/null @@ -1,295 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- --> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<title>PulseAudio: FAQ</title> -<link rel="stylesheet" type="text/css" href="style.css" /> -</head> - -<body> - - -<h1>Frequently Asked Questions</h1> - -<ol> - <li><p><b>How does PulseAudio compare with ESOUND/aRts/NAS?</b></p> - - <p>PulseAudio is sound daemon similar to ESOUND and NAS, but much more - powerful. aRts is a realtime-synthesizer-cum-sound-server, i.e. it - does much more than PulseAudio. However, I believe that PulseAudio - does what it does much better than any other free sound server.</p> - </li> - - <li><p><b>What about ESOUND compatibility?</b></p> - <p>PulseAudio is a drop in replacement for ESOUND. That means: you can - load a esound compatibility module which implements an ESOUND - compatible protocol which allows you to use most of the classic ESOUND - compatible programs (including the command line programs like - <tt>esdcat</tt>).</p> - </li> - - <li><p><b>Is PulseAudio a GNOME program?</b></p> - <p>No, PulseAudio has no dependency on GNOME/GTK/GLIB. All it requires - is a UNIX-like operating system and very few dependency - libraries. However, the accompanying GUI tools are written with - gtkmm, i.e. require both GLIB and GTK.</p></li> - - <li><p><b>Can I integrate PulseAudio in my GLIB/GTK/GNOME application?</b></p> - <p>Yes! PulseAudio comes with a GLIB main loop adapter. You can embed - both the client library and the daemon (!) into your GLIB based - application.</p></li> - - <li><p><b>Can I integrate PulseAudio in my Qt/KDE application?</b></p> - <p>Yes! PulseAudio uses a main loop abstraction layer that allows you - to integrate PulseAudio in any program that supports main - loops. Unfortunately there is no adapter for Qt publicly available yet.</p></li> - - <li><p><b>I want to write a new driver for PulseAudio, are there any docs?</b></p> - <p>Currently, only the client API is documented with doxygen. Read - the source and base your work on a simple module like - <tt>module-pipe-sink</tt>.</p></li> - - <li><p><b>What about compatibility with NAS?</b></p> - <p>Is not available (yet?). It is doable, but noone has implemented it yet.</p></li> - - <li><p><b>What about compatibility with aRts?</b></p> - <p>Is not available. Since aRts is as synthesizer application you'd have to - reimplement very much code for PulseAudio. It should be easy to - implement limited support for <tt>libartsc</tt> based - applications. Noone has done this yet. It is probably a better idea to - run <tt>arts</tt> on top of PulseAudio (through a PulseAudio driver - for aRts, which nobody has written yet). Another solution would be to - embed PulseAudio in the aRts process.</p></li> - - <li><p><b>I often hear noises when playing back with PulseAudio, what can I do?</b></p> - <p>There are to possible solutions: run PulseAudio with argument -<tt>--high-priority=1</tt> and make yourself member of the group -<tt>realtime</tt>, or increase the fragment sizes of the audio - drivers. The former will allow PulseAudio to activate - <tt>SCHED_FIFO</tt> high priority scheduling (root rights are dropped - immediately after this). Keep in mind that this is a potential security hole!</p></li> - - <li><p><b>The <tt>pulseaudio</tt> executable is installed SUID root by default. Why this? Isn't this a potential security hole?</b></p> - - <p>PulseAudio activates <tt>SCHED_FIFO</tt> scheduling if the user -passes <tt>--high-priority=1</tt>. This will only succeed when -executed as root, therefore the binary is marked SUID root by -default. Yes, this is a potential security hole. However, PulseAudio -tries its best to minimize the security threat: immediately after -startup PulseAudio drops all capabilities except -<tt>CAP_SYS_NICE</tt> (At least on systems that support it, like Linux; see <tt>man 7 -capabilities</tt> for more information). If the calling user is not a -member of the group <tt>realtime</tt> (which is required to have a GID -< 1000), root rights are dropped immediately. This means, you can -install <tt>pulseaudio</tt> SUID root, but only a subset of your users (the -members of the group <tt>realtime</tt>) may make use of realtime -scheduling. Keep in mind that these users might load their own binary -modules into the PulseAudio daemon which may freeze the machine. The -daemon has a minimal protection against CPU hogging (the daemon is -killed after hogging more than 70% CPU for 5 seconds), but this may -be circumvented easily by evildoers.</p></li> - - <li><p><b>I want to run PulseAudio only when it is needed, how do I do this?</b></p> - - <p>Set <tt>autospawn = yes</tt> in <tt>client.conf</tt>. That -configuration file may be found either in <tt>/etc/pulse/</tt> or -in <tt>~/.pulse/</tt>.</p></li> - - <li><p><b>How do I list all PulseAudio modules installed?</b></p> - - <p><tt>pulseaudio --dump-modules</tt></p> - - <p>Add <tt>-v</tt> for terse usage instructions.</p> - -<li><p><b>How do I use PulseAudio over the network?</b></p> - -<p>Just set <tt>$PULSE_SERVER</tt> to the host name of the PulseAudio -server. For authentication you need the same auth cookies on all sides. For -that copy <tt>~./pulse-cookie</tt> to all clients that shall -be allowed to connect.</p> - -<p>Alternatively the authorization cookies can be stored in the X11 server.</p></li> - -<li><p><b>Is PulseAudio capable of providing synchronized audio playback over the network for movie players like <tt>mplayer</tt>?</b></p> - -<p>Yes! Unless your network is congested in some way (i.e. transfer latencies vary strongly) it works perfectly. Drop me an email for experimental patches for MPlayer.</p> - - <li><p><b>What environment variables does PulseAudio care about?</b></p> - -<p>The client honors: <tt>PULSE_SINK</tt> (default sink to connect to), <tt>PULSE_SOURCE</tt> (default source to connect to), <tt>PULSE_SERVER</tt> (default server to connect to, like <tt>ESPEAKER</tt>), <tt>PULSE_BINARY</tt> (the binary to start when autospawning a daemon), <tt>PULSE_CLIENTCONFIG</tt> (path to the client configuration file).</p> - -<p>The daemon honors: <tt>PULSE_SCRIPT</tt> (default CLI script file run after startup), <tt>PULSE_CONFIG</tt> (default daemon configuration file), <tt>PULSE_DLPATH</tt> (colon separated list of paths where to look for modules)</p></li> - - -<li><p><b>I saw that SIGUSR2 provokes loading of the module <tt>module-cli-protocol-unix</tt>. But how do I make use of that?</b></p> - -<p>A brilliant guy named Lennart Poettering once wrote a nifty tool -for that purpose: <a -href="http://0pointer.de/lennart/projects/bidilink/">bidilink</a>. To -connect to a running PulseAudio daemon try using the following commands:</p> - -<pre>killall -USR2 pulseaudio -bidilink unix-client:/tmp/pulse-$USER/cli</pre> - -<p><i>BTW: Someone should package this great tool for Debian!</i></p> - -<p><b>New:</b> There's now a tool <tt>pacmd</tt> that automates sending SIGUSR2 to the daemon and running a bidilink like tool for you.</p> -</li> - -<li><p><b>How do the PulseAudio libraries decide where to connect to?</b></p> -<p>The following rule applies:</p> -<ol> - <li>If the the application using the library specifies a server to connect to it is used. If the connection fails, the library fails too.</li> - <li>If the environment variable <tt>PULSE_SERVER</tt> is defined the library connects to that server. If the connection fails, the library fails too.</li> - <li>If <tt>$DISPLAY</tt> is set, the library tries to connect to that server and looks for the root window property <tt>POYLP_SERVER</tt> for the host to connect to. If <tt>PULSE_COOKIE</tt> is set it is used as authentication cookie.</li> - <li>If the client configuration file (<tt>~/.pulse/client.conf</tt> or <tt>/etc/pulse/client.conf</tt>) sets the server address, the library connects to that server. If the connection fails, the library fails too.</li> - <li>The library tries to connect to the default local UNIX socket for PulseAudio servers. If the connection fails, it proceeds with the next item.</li> - <li>The library tries to connect to the default local TCP socket for PulseAudio servers. If the connection fails, it proceeds with the next item.</li> - <li>If <tt>$DISPLAY</tt> is set, the library tries to connect to the default TCP port of that host. If the connection fails, it proceeds with the next item.</li> - <li>The connection fails.</li> -</ol> -</li> - -<li><p><b>Why the heck does libpulse link against libX11?</b></p> -<p>The PulseAudio client libraries look for some X11 root window -properties for the credentials of the PulseAudio server to access. You -may compile PulseAudio without X11 for disabling this feature.</p></li> - -<li><p><b>How can I use PulseAudio as an RTP based N:N multicast -conferencing solution for the LAN?</b></p> <p>After loading all the -necessary audio drivers for recording and playback, just load the RTP -reciever and sender modules with default parameters:</p> - -<pre> -load-module module-rtp-send -load-module module-rtp-recv -</pre> - -<p>As long as the PulseAudio daemon runs, the microphone data will be -streamed to the network and the data from other hosts is played back -locally. Please note that this may cause quite a lot of traffic. Hence -consider passing <tt>rate=8000 format=ulaw channels=1</tt> to the -sender module to save bandwith while still maintaining good quality -for speech transmission.</p></li> - -<li><p><b>What is this RTP/SDP/SAP thing all about?</b></p> - -<p>RTP is the <i>Realtime Transfer Protocol</i>. It is a well-known -protocol for transferring audio and video data over IP. SDP is the <i>Session -Description Protocol</i> and can be used to describe RTP sessions. SAP -is the <i>Session Announcement Protocol</i> and can be used to -announce RTP sessions that are described with SDP. (Modern SIP based VoIP phones use RTP/SDP for their sessions, too)</p> - -<p>All three protocols are defined in IETF RFCs (RFC3550, RFC3551, -RFC2327, RFC2327). They can be used in both multicast and unicast -fashions. PulseAudio exclusively uses multicast RTP/SDP/SAP containing audio data.</p> - -<p>For more information about using these technologies with PulseAudio have a look on the <a href="modules.html#rtp">respective module's documentation</a>. - -<li><p><b>How can I use PulseAudio to stream music from my main PC to my LAN with multiple PCs with speakers?</b></p> - -<p>On the sender side create an RTP sink:</p> - -<pre> -load-module module-null-sink sink_name=rtp -load-module module-rtp-send source=rtp_monitor -set-default-sink rtp -</pre> - -<p>This will make <tt>rtp</tt> the default sink, i.e. all applications will write to this virtual RTP device by default.</p> - -<p>On the client sides just load the reciever module:</p> -<pre> -load-module module-rtp-recv -</pre> - -<p>Now you can play your favourite music on the sender side and all clients will output it simultaneously.</p> - - -<p>BTW: You can have more than one sender machine set up like this. The audio data will be mixed on the client side.</p></li> - -<li><p><b>How can I use PulseAudio to share a single LINE-IN/MIC jack on the entire LAN?</b></p> - -<p>On the sender side simply load the RTP sender module:</p> - -<pre> -load-module module-rtp-send -</pre> - -<p>On the reciever sides, create an RTP source:</p> - -<pre> -load-module module-null-sink sink_name=rtp -load-module module-rtp-recv sink=rtp -set-default-source rtp_monitor -</pre> - -<p>Now the audio data will be available from the default source <tt>rtp_monitor</tt>.</p></li> - -<li><p><b>When sending multicast RTP traffic it is recieved on the entire LAN but not by the sender machine itself!</b></p> - -<p>Pass <tt>loop=1</tt> to the sender module!</p></li> - -<li><p><b>Can I have more than one multicast RTP group?</b></p> - -<p>Yes! Simply use a new multicast group address. Use -the <tt>destination</tt>/<tt>sap_address</tt> arguments of the RTP -modules to select them. Choose your group addresses from the range -<tt>225.0.0.x</tt> to make sure the audio data never leaves the LAN.</p></li> - - -<li><p><b>Can I use PulseAudio to playback music on two sound cards simultaneously?</b></p> - -<p>Yes! Use <a href="modules.html#module-combine"><tt>module-combine</tt></a> for that.</p> - -<pre> -load-module module-oss-mmap device="/dev/dsp" sink_name=output0 -load-module module-oss-mmap device="/dev/dsp1" sink_name=output1 -load-module module-combine sink_name=combined master=output0 slaves=output1 -set-sink-default combined -</pre> - -<p>This will combine the two sinks <tt>output0</tt> and -<tt>output1</tt> into a new sink <tt>combined</tt>. Every sample -written to the latter will be forwarded to the former two. PulseAudio -will make sure to adjust the sample rate of the slave device in case -it deviates from the master device. You can have more than one slave -sink attached to the combined sink, and hence combine even three and -more sound cards.</p> </li> - -<li><p><b>Can I use PulseAudio to combine two stereo soundcards into a virtual surround sound card?</b></p> - -<p>Yes! You can use use <a href="modules.html#module-combine"><tt>module-combine</tt></a> for that.</p> - -<pre> -load-module module-oss-mmap device="/dev/dsp" sink_name=output0 channel_map=left,right channels=2 -load-module module-oss-mmap device="/dev/dsp1" sink_name=output1 channel_map=rear-left,rear-right channels=2 -load-module module-combine sink_name=combined master=output0 slaves=output1 channel_map=left,right,rear-left,rear-right channels=4 -</pre> - -<p>This is mostly identical to the previous example. However, this -time we manually specify the channel mappings for the sinks to make -sure everything is routed correctly.</p> - -<p>Please keep in mind that PulseAudio will constantly adjust the -sample rate to compensate for the deviating quartzes of the sound -devices. This is not perfect, however. Deviations in a range of -1/44100s (or 1/48000s depending on the sampling frequency) can not be -compensated. The human ear will decode these deviations as minor -movements (less than 1cm) of the positions of the sound sources -you hear. </p> - -</li> - -<li><p><b>Why did you rename Polypaudio to PulseAudio?</b></p> - -<p>Please read this <a href="http://0pointer.de/blog/projects/pulse.html">blog story</a> for an explanation.</p> - -</li> - -</ol> - -<hr/> -<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, April 2006</address> -<div class="grey"><i>$Id$</i></div> -</body> </html> |