/[gentoo]/xml/htdocs/doc/en/alsa-guide.xml
Gentoo

Contents of /xml/htdocs/doc/en/alsa-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.77 - (hide annotations) (download) (as text)
Thu May 3 06:21:01 2007 UTC (7 years, 3 months ago) by nightmorph
Branch: MAIN
Changes since 1.76: +12 -11 lines
File MIME type: application/xml
alsa priority, bug 172490

1 fox2mike 1.51 <?xml version='1.0' encoding="UTF-8"?>
2 nightmorph 1.77 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.76 2007/04/16 05:39:54 nightmorph Exp $ -->
3 fox2mike 1.51
4 drobbins 1.1 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
5    
6 cam 1.42 <guide link="/doc/en/alsa-guide.xml">
7 drobbins 1.1 <title>Gentoo Linux ALSA Guide</title>
8 fox2mike 1.51
9 swift 1.20 <author title="Author">
10 fox2mike 1.52 <mail link="fox2mike@gentoo.org">Shyam Mani</mail>
11 erwin 1.26 </author>
12 nightmorph 1.71 <author title="Author">
13     <mail link="nightmorph@gentoo.org">Joshua Saddler</mail>
14     </author>
15     <author title="Contributor">
16     <mail link="flameeyes@gentoo.org">Diego Pettenò</mail>
17     </author>
18 drobbins 1.1
19     <abstract>
20 fox2mike 1.51 This document helps a user setup ALSA on Gentoo Linux.
21 swift 1.20 </abstract>
22 drobbins 1.1
23 fox2mike 1.51 <!-- The content of this document is licensed under the CC-BY-SA license -->
24 fox2mike 1.54 <!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
25 swift 1.25 <license/>
26    
27 nightmorph 1.77 <version>2.20</version>
28     <date>2007-05-02</date>
29 drobbins 1.1
30     <chapter>
31 fox2mike 1.51 <title>Introduction</title>
32 drobbins 1.1 <section>
33 swift 1.20 <title>What is ALSA?</title>
34 drobbins 1.1 <body>
35 swift 1.20
36 drobbins 1.1 <p>
37 fox2mike 1.51 ALSA, which stands for <e>Advanced Linux Sound Architecture</e>, provides
38     audio and MIDI (<e>Musical Instrument Digital Interface</e>) functionality to
39     the Linux operating system. ALSA is the default sound subsystem in the 2.6
40     kernel thereby replacing OSS (<e>Open Sound System</e>), which was used in the
41     2.4 kernels.
42 drobbins 1.1 </p>
43    
44     <p>
45 fox2mike 1.51 ALSA's main features include efficient support for all types of audio
46     interfaces ranging from consumer sound cards to professional sound
47     equipment, fully modularized drivers, SMP and thread safety, backward
48     compatibility with OSS and a user-space library <c>alsa-lib</c> to make
49     application development a breeze.
50     </p>
51    
52     </body>
53     </section>
54     <section>
55     <title>ALSA on Gentoo</title>
56     <body>
57    
58     <p>
59     One of Gentoo's main strengths lies in giving the user maximum control over
60     how a system is installed/configured. ALSA on Gentoo follows the same
61     principle. There are two ways you can get ALSA support up and running on your
62     system. We shall look at them in detail in the next chapter.
63 drobbins 1.1 </p>
64 swift 1.20
65 drobbins 1.1 </body>
66     </section>
67     </chapter>
68 fox2mike 1.51
69 drobbins 1.1 <chapter>
70 swift 1.35 <title>Installing ALSA</title>
71 drobbins 1.1 <section>
72 fox2mike 1.51 <title>Options</title>
73 swift 1.17 <body>
74    
75 fox2mike 1.51 <warn>
76     The methods shown below are mutually exclusive. You cannot have ALSA compiled
77     in your kernel and use <c>media-sound/alsa-driver</c>. It <e>will</e> fail.
78     </warn>
79    
80     <p>
81     The two options are :
82     </p>
83    
84     <ol>
85 nightmorph 1.77 <li>
86     Use ALSA provided by your kernel. This is the preferred/recommended method.
87     </li>
88 nightmorph 1.71 <li>Use Gentoo's <c>media-sound/alsa-driver</c> package.</li>
89 fox2mike 1.51 </ol>
90    
91 neysx 1.64 <p>
92 nightmorph 1.71 The in-kernel drivers and the <c>alsa-driver</c> package can vary a little; it's
93     possible that features and fixes found in one might not yet be incorporated into
94     the other. The upstream developers are aware of this, but the two drivers are
95     effectively separate branches of the ALSA project; they are not entirely
96     identical. You should be aware that they might function slightly differently, so
97     if one doesn't work for you, try the other! We shall take a peek into both
98     before finally deciding on one.
99 fox2mike 1.51 </p>
100    
101     <p>
102     If you were to use ALSA provided by the kernel, the following are the pros and
103     cons :
104     </p>
105    
106     <table>
107     <tr>
108     <th>Kernel ALSA</th>
109     <th>Pros and Cons</th>
110     </tr>
111     <tr>
112     <th>+</th>
113 nightmorph 1.71 <ti>
114     No need to emerge yet another package; drivers are integrated into kernel.
115     </ti>
116 fox2mike 1.51 </tr>
117     <tr>
118     <th>+</th>
119     <ti>One shot solution, no repeating emerges.</ti>
120     </tr>
121     <tr>
122     <th>-</th>
123 nightmorph 1.71 <ti>Might be a slightly different version than <c>alsa-driver</c>.</ti>
124 fox2mike 1.51 </tr>
125     </table>
126    
127 swift 1.17 <p>
128 nightmorph 1.77 And, if you were to use <c>alsa-driver</c>,
129 swift 1.17 </p>
130    
131 fox2mike 1.51 <table>
132     <tr>
133     <th>alsa-driver</th>
134     <th>Pros and Cons</th>
135     </tr>
136     <tr>
137     <th>+</th>
138 nightmorph 1.71 <ti>Possibly the latest drivers from the ALSA Project.</ti>
139     </tr>
140     <tr>
141     <th>+</th>
142     <ti>Useful if you intend to develop audio drivers.</ti>
143 fox2mike 1.51 </tr>
144     <tr>
145     <th>-</th>
146     <ti>Every kernel recompile requires a re-emerge of <c>alsa-driver</c>.</ti>
147     </tr>
148     <tr>
149     <th>-</th>
150     <ti>Needs certain kernel config options disabled to work correctly.</ti>
151     </tr>
152     </table>
153    
154 swift 1.17 </body>
155     </section>
156     <section>
157 fox2mike 1.51 <title>So...</title>
158 drobbins 1.1 <body>
159 swift 1.20
160 drobbins 1.1 <p>
161 nightmorph 1.71 The differences between <c>alsa-driver</c> and the in-kernel ALSA drivers are
162     quite subtle, as mentioned earlier. Since there are not any huge differences,
163 nightmorph 1.77 you are encouraged to go through the process of using the ALSA provided by the
164     kernel <e>first</e> for ease of use. Before reporting any sound related issues
165     to <uri link="https://bugs.gentoo.org">Gentoo Bugzilla</uri>, please try to
166     reproduce them using <c>alsa-driver</c> and file the bug report no matter what
167     the result.
168 drobbins 1.1 </p>
169 swift 1.20
170 fox2mike 1.51 </body>
171     </section>
172     <section id="lspci">
173     <title>Before you proceed</title>
174     <body>
175 swift 1.20
176     <p>
177 fox2mike 1.51 Whichever method of install you choose, you need to know what drivers your
178 fox2mike 1.54 sound card uses. In most cases, sound cards (onboard and otherwise) are PCI
179     based and <c>lspci</c> will help you in digging out the required information.
180     Please <c>emerge sys-apps/pciutils</c> to get <c>lspci</c>, if you don't have it
181     installed already. In case you have a USB sound card, <c>lsusb</c> from
182     <c>sys-apps/usbutils</c> <e>might</e> be of help. For ISA cards, try using
183     <c>sys-apps/isapnptools</c>. Also, the following pages <e>may</e> help users
184     with ISA based sound cards.
185     </p>
186    
187     <ul>
188     <li>
189     <uri link="http://www.roestock.demon.co.uk/isapnptools/">The ISAPNPTOOLS
190     Page</uri>
191     </li>
192     <li>
193     <uri link="http://www2.linuxjournal.com/article/3269">LinuxJournal PnP
194     Article</uri>
195     </li>
196     <li>
197     <uri link="http://www.tldp.org/HOWTO/Sound-HOWTO/x320.html">TLDP Sound
198     HowTo</uri>
199     </li>
200     </ul>
201    
202     <note>
203     For ease of use/explanation, we assume the user has a PCI based sound card for
204     the remainder of this guide.
205     </note>
206    
207     <p>
208     We now proceed to find out details about the sound card.
209 drobbins 1.1 </p>
210 swift 1.20
211 fox2mike 1.51 <pre caption="Soundcard Details">
212     # <i>lspci -v | grep -i audio</i>
213     0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)
214 drobbins 1.1 </pre>
215 swift 1.20
216 drobbins 1.1 <p>
217 fox2mike 1.51 We now know that the sound card on the machine is a Sound Blaster Live! and
218     the card manufacturer is Creative Labs. Head over to the
219     <uri link="http://www.alsa-project.org/alsa-doc/"> ALSA Soundcard Matrix</uri>
220     page and select Creative Labs from the drop down menu. You will be taken to
221     the Creative Labs matrix page where you can see that the SB Live! uses the
222     <c>emu10k1</c> module. That is the information we need for now. If you are
223     interested in detailed information, you can click on the link next to the
224     "Details" and that will take you to the <c>emu10k1</c> specific page.
225 drobbins 1.1 </p>
226 swift 1.20
227 nightmorph 1.71 <p>
228     If you intend to use MIDI, then you should add <c>midi</c> to your USE flags in
229     <path>/etc/make.conf</path> before emerging any ALSA packages. Later in the
230     guide, we will show you how to set up <uri link="#midi">MIDI support</uri>.
231     </p>
232    
233 fox2mike 1.51 </body>
234     </section>
235     <section id="kernel">
236     <title>Using ALSA provided by your Kernel</title>
237     <body>
238    
239 swift 1.35 <p>
240 fox2mike 1.51 If you're a person who likes to keep things simple like I do, then this is
241     the way to go.
242 swift 1.35 </p>
243 swift 1.20
244 fox2mike 1.51 <note>
245     Since the 2005.0 release, Gentoo Linux uses 2.6 as the default kernel. Unless
246     you are specifically using the 2.4 profile, <c>gentoo-sources</c> will be a
247     2.6 kernel on <e>most</e> architectures. Please check that your kernel is a
248     2.6 series kernel. This method will <e>not</e> work on a 2.4 kernel.
249     </note>
250    
251     <p>
252     Let us now configure the kernel to enable ALSA.
253     </p>
254    
255 fox2mike 1.54 <impo>
256 fox2mike 1.63 <c>genkernel</c> users should now run <c>genkernel --menuconfig all</c> and
257     then follow the instructions in <uri link="#doc_chap2_pre3">Kernel Options for
258     ALSA</uri>.
259 fox2mike 1.54 </impo>
260    
261 fox2mike 1.51 <pre caption="Heading over to the source">
262     # <i>cd /usr/src/linux</i>
263     # <i>make menuconfig</i>
264 erwin 1.26 </pre>
265    
266 fox2mike 1.51 <note>
267     The above example assumes that <path>/usr/src/linux</path> symlink points to
268     the kernel sources you want to use. Please ensure the same before proceeding.
269     </note>
270 neysx 1.46
271 erwin 1.26 <p>
272 fox2mike 1.51 Now we will look at some of the options we will have to enable in the 2.6
273     kernel to ensure proper ALSA support for our sound card.
274 erwin 1.26 </p>
275    
276 fox2mike 1.54 <p>
277 nightmorph 1.71 Please note that for ease of use, all examples show ALSA built as modules. It
278     is advisable to follow the same as it then allows the use of <c>alsaconf</c>
279 fox2mike 1.63 which is a boon when you want to configure your card. Please do <e>not</e> skip
280     the <uri link="#alsa-config">Configuration</uri> section of this document. If
281     you still like to have options built-in, ensure that you make changes to your
282     config accordingly.
283 fox2mike 1.54 </p>
284 fox2mike 1.51
285     <pre caption="Kernel Options for ALSA">
286     Device Drivers ---&gt;
287     Sound ---&gt;
288    
289     <comment>(This needs to be enabled)</comment>
290     &lt;M&gt; Sound card support
291    
292     <comment>(Make sure OSS is disabled)</comment>
293     Open Sound System ---&gt;
294     &lt; &gt; Open Sound System (DEPRECATED)
295    
296     <comment>(Move one step back and enter ALSA)</comment>
297     Advanced Linux Sound Architecture ---&gt;
298     &lt;M&gt; Advanced Linux Sound Architecture
299     <comment>(Select this if you want MIDI sequencing and routing)</comment>
300     &lt;M&gt; Sequencer support
301     <comment>(Old style /dev/mixer* and /dev/dsp* support. Recommended.)</comment>
302     &lt;M&gt; OSS Mixer API
303     &lt;M&gt; OSS PCM (digital audio) API
304    
305     <comment>(You now have a choice of devices to enable support for. Generally,
306     you will have one type of device and not more. If you have more than one
307     sound card, please enable them all here.)</comment>
308    
309     <comment>(Mostly for testing and development purposes, not needed for normal
310     users unless you know what you are doing.)</comment>
311     Generic devices ---&gt;
312    
313     <comment>(For ISA Sound cards)</comment>
314     ISA devices ---&gt;
315     <comment>(IF you had the Gravis, you would select this option)</comment>
316     &lt;M&gt; Gravis UltraSound Extreme
317    
318     <comment>(Move one level back and into PCI devices. Most sound cards today are
319     PCI devices)</comment>
320     PCI devices ---&gt;
321     <comment>(We now select the emu10k1 driver for our card)</comment>
322     &lt;M&gt; Emu10k1 (SB Live!, Audigy, E-mu APS)
323     <comment>(Or an Intel card would be)</comment>
324     &lt;M&gt; Intel/SiS/nVidia/AMD/ALi AC97 Controller
325     <comment>(Or if you have a VIA Card)</comment>
326     &lt;M&gt; VIA 82C686A/B, 8233/8235 AC97 Controller
327    
328     <comment>(Move one level back and select in case you have an USB sound card)</comment>
329     USB Devices ---&gt;
330 swift 1.35 </pre>
331 swift 1.20
332 fox2mike 1.51 <p>
333     Now that your options are set, you can (re)compile the kernel and ALSA support
334 swift 1.62 for your card should be functional once you reboot into the new kernel. Don't
335     forget to update your GRUB configuration to use the newly built kernel.
336 fox2mike 1.51 You can now proceed to <uri link="#alsa-utilities">ALSA Utilities</uri> and
337     see if everything is working as it should.
338     </p>
339 swift 1.20
340 drobbins 1.1 </body>
341     </section>
342 fox2mike 1.51 <section id="alsa-driver">
343     <title>Using the ALSA Driver package</title>
344 drobbins 1.1 <body>
345    
346     <p>
347 fox2mike 1.51 So you've decided to go the <c>alsa-driver</c> way. Let's get started then.
348     There are a few minor things to be done to ensure only the drivers for your
349     sound card are compiled. Although this is not really necessary, it cuts down
350     on the unnecessary drivers that will be compiled otherwise.
351 drobbins 1.1 </p>
352 swift 1.20
353 fox2mike 1.51 <p>
354     If you don't have an idea of what drivers your sound card might need, please
355     take a look at the <uri link="#lspci">lspci</uri> section of this guide. Once
356     you have your driver name (<c>emu10k1</c> in our example), edit
357     <path>/etc/make.conf</path> and add a variable, <c>ALSA_CARDS</c>.
358     </p>
359    
360     <pre caption="Adding ALSA_CARDS to make.conf">
361     <comment>(For one sound card)</comment>
362     ALSA_CARDS="emu10k1"
363 vanquirius 1.59 <comment>(For more than one, separate names with spaces)</comment>
364 fox2mike 1.51 ALSA_CARDS="emu10k1 via82xx"
365 blubber 1.16 </pre>
366    
367 drobbins 1.1 <p>
368 fox2mike 1.51 If you have compiled your kernel and want to use <c>alsa-driver</c>, please
369     ensure the following before proceeding, else <c>alsa-driver</c> is likely to
370     fail. The next code listing gives you one way of performing the checks.
371 drobbins 1.1 </p>
372 swift 1.20
373 fox2mike 1.54 <note>
374     <c>genkernel</c> users can proceed with <uri link="#doc_chap2_pre6">Installing
375     alsa-driver</uri> as their configuration is in sync with the one shown below by
376     default.
377     </note>
378    
379 fox2mike 1.51 <ol>
380     <li>
381     <c>CONFIG_SOUND</c> is set. (Basic Sound support enabled)
382     </li>
383     <li>
384     <c>CONFIG_SOUND_PRIME</c> is not set. (In-built OSS support disabled)
385     </li>
386     <li>
387     <c>CONFIG_SND</c> is not set. (In-built ALSA support disabled)
388     </li>
389     <li>
390     <path>/usr/src/linux</path> points to the kernel you want ALSA working on.
391     </li>
392     </ol>
393    
394     <pre caption=".config checks">
395     <comment>(Assuming the linux symlink points to the correct kernel)</comment>
396     # <i>cd /usr/src/linux</i>
397     # <i>grep SOUND .config</i>
398     <comment>(1. is true)</comment>
399     CONFIG_SOUND=y
400     <comment>(2. is true)</comment>
401     CONFIG_SOUND_PRIME is not set
402     # <i>grep SND .config</i>
403     <comment>(and 3. is true)</comment>
404     CONFIG_SND is not set
405 drobbins 1.1 </pre>
406 swift 1.20
407 drobbins 1.1 <p>
408 fox2mike 1.54 Now all you have to do is type the magic words... and no, it's not abracadabra.
409 drobbins 1.1 </p>
410 swift 1.20
411 fox2mike 1.51 <pre caption="Installing alsa-driver">
412     # <i>emerge alsa-driver</i>
413     </pre>
414    
415     <impo>
416 nightmorph 1.71 Please note that you will have to run <c>emerge alsa-driver</c> after every
417     kernel (re)compile, as the earlier drivers are deleted. To make this task
418     easier, you may want to emerge the <c>module-rebuild</c> package, which will
419 nightmorph 1.72 keep track of module packages and rebuild them for you. First run
420     <c>module-rebuild populate</c> to create the list, and then after every kernel
421 nightmorph 1.71 (re)compile, you just run <c>module-rebuild rebuild</c>, and your external
422     modules will be rebuilt.
423 fox2mike 1.51 </impo>
424    
425 drobbins 1.1 </body>
426     </section>
427 swift 1.35 </chapter>
428 fox2mike 1.51
429 swift 1.35 <chapter>
430 fox2mike 1.51 <title>Configuring/Testing ALSA</title>
431     <section id="alsa-utilities">
432     <title>ALSA Utilities</title>
433 drobbins 1.1 <body>
434 swift 1.20
435 drobbins 1.1 <p>
436 fox2mike 1.51 <c>alsa-utils</c> forms an integral part of ALSA as it has a truckload of
437     programs that are highly useful, including the ALSA Initscripts. Hence we
438     strongly recommend that you install <c>alsa-utils</c>
439 drobbins 1.1 </p>
440 swift 1.12
441 fox2mike 1.51 <pre caption="Install alsa-utils">
442     # <i>emerge alsa-utils</i>
443 drobbins 1.1 </pre>
444 swift 1.20
445 fox2mike 1.51 <note>
446     If you activated ALSA in your <uri link="#kernel">kernel</uri> <e>and</e> did
447     not compile ALSA as modules, please proceed to the
448     <uri link="#initscript">ALSA Initscript</uri> section. The rest of you need
449     to configure ALSA. This is made very easy by the existence of the
450     <c>alsaconf</c> tool provided by <c>alsa-utils</c>.
451     </note>
452    
453     </body>
454     </section>
455     <section id="alsa-config">
456     <title>Configuration</title>
457     <body>
458    
459 nightmorph 1.71 <p>
460     Recent versions of <c>udev</c> (<c>>=udev-103</c>) provide some degree of
461     kernel-level autoconfiguration of your sound card. If possible, try to rely on
462     just letting your kernel automatically setup your sound card for you. Otherwise,
463     use <c>alsaconf</c> to configure your card, as shown below.
464     </p>
465    
466 fox2mike 1.51 <note>
467     Please shut down any programs that <e>might</e> access the sound card while
468     running <c>alsaconf</c>.
469     </note>
470    
471 drobbins 1.1 <p>
472 nightmorph 1.71 Another way to configure your sound card is to run <c>alsaconf</c>. Just type
473     <c>alsaconf</c> in a shell as root.
474 swift 1.20 </p>
475    
476 fox2mike 1.51 <pre caption="Invoking alsaconf">
477     # <i>alsaconf</i>
478 drobbins 1.1 </pre>
479 swift 1.20
480 fox2mike 1.51 <p>
481     You will now see a neat menu guided interface that will automatically probe
482     your devices and try to find out your sound card. You will be asked to pick
483     your sound card from a list. Once that's done, it will ask you permission to
484     automatically make required changes to <path>/etc/modules.d/alsa</path>.
485 fox2mike 1.54 It will then adjust your volume settings to optimum levels, run
486 nightmorph 1.76 <c>update-modules</c> and start the <path>/etc/init.d/alsasound</path> service.
487 fox2mike 1.63 Once <c>alsaconf</c> exits, you can proceed with setting up the ALSA
488     initscript.
489 fox2mike 1.51 </p>
490    
491 swift 1.35 </body>
492     </section>
493 fox2mike 1.51 <section id="initscript">
494     <title>ALSA Initscript</title>
495 swift 1.35 <body>
496 swift 1.20
497 drobbins 1.1 <p>
498 fox2mike 1.51 We're now almost all setup. Whichever method you chose to install ALSA, you'll
499     need to have something load your modules or initialize ALSA and restore your
500     volume settings when your system comes up. The ALSA Initscript handles all of
501 neysx 1.56 this for you and is called <c>alsasound</c>. Add it to the boot runlevel.
502 drobbins 1.1 </p>
503 swift 1.20
504 neysx 1.56 <pre caption="Adding ALSA to the boot runlevel">
505 fox2mike 1.54 # <i>rc-update add alsasound boot</i>
506     * alsasound added to runlevel boot
507 fox2mike 1.51 * rc-update complete.
508 drobbins 1.1 </pre>
509 swift 1.20
510 fox2mike 1.51 <p>
511     Next, just check the <path>/etc/conf.d/alsasound</path> file and ensure that
512     SAVE_ON_STOP variable is set to yes. This saves your sound settings when you
513     shutdown your system.
514     </p>
515    
516 drobbins 1.1 </body>
517     </section>
518     <section>
519 fox2mike 1.54 <title>Audio Group</title>
520     <body>
521    
522     <p>
523     Before we move on to testing, there's one last <e>important</e> thing that needs
524     to be setup. Rule of thumb in a *nix OS : Do not run as root unless needed.
525     This applies here as well ;) How? Well, most of the times you should be logged
526     in as a user and would like to listen to music or access your soundcard. For
527 vanquirius 1.59 that to happen, you need to be in the "audio" group. At this point, we'll add
528 fox2mike 1.54 users to the audio group, so that they won't have any issues when they want to
529     access sound devices. We'll use <c>gpasswd</c> here and you need to be logged in
530     as root for this to work.
531     </p>
532    
533     <pre caption="Adding users to the audio group">
534     <comment>(Substitute &lt;username&gt; with your user)</comment>
535     # <i>gpasswd -a &lt;username&gt; audio </i>
536     Adding user &lt;username&gt; to group audio
537     </pre>
538    
539     </body>
540     </section>
541     <section>
542 fox2mike 1.51 <title>Volume Check!</title>
543 drobbins 1.1 <body>
544 swift 1.20
545 drobbins 1.1 <p>
546 nightmorph 1.71 We've completed all the setups and prerequisites, so let's fire up ALSA. If
547 fox2mike 1.51 you ran <c>alsaconf</c>, you can skip this step, since <c>alsaconf</c> already
548     does this for you.
549 swift 1.20 </p>
550    
551 fox2mike 1.51 <pre caption="Start the service">
552 nightmorph 1.71 # <i>/etc/init.d/alsasound start</i>
553 fox2mike 1.51 </pre>
554    
555     <p>
556 fox2mike 1.54 Now that the required things have been taken care of, we need to check up on
557     the volume as in certain cases, it is muted. We use <c>alsamixer</c> for this
558     purpose.
559 fox2mike 1.51 </p>
560    
561     <pre caption="Starting alsamixer">
562     <comment>(Opens up a console program. Only required settings are shown)</comment>
563     # <i>alsamixer</i>
564 drobbins 1.1 </pre>
565 swift 1.20
566 fox2mike 1.54 <impo>
567     If you have issues starting up <c>alsamixer</c> and get errors such as
568     alsamixer: function snd_ctl_open failed for default: No such file or directory,
569 alin 1.58 this is usually an issue with udev setting up the devices. Run <c>killall
570     udevd; udevstart</c> to reload <path>/dev</path> entries and fire up
571     <c>alsamixer</c>. It should solve the issue.
572 fox2mike 1.54 </impo>
573    
574 fox2mike 1.51 <p>
575     This is how the ALSA Mixer <e>might</e> look the first time you open it. Pay
576     attention to the Master and PCM channels which both have an MM below them.
577     That means they are muted. If you try to play anything with <c>alsamixer</c>
578     in this state, you will not hear anything on your speakers.
579     </p>
580    
581     <figure link="/images/docs/alsa-mixermuted.png" short="AlsaMixer Muted" caption="The Alsa Mixer Main Window, Muted"/>
582    
583     <p>
584     Now, we shall unmute the channels, and set volume levels as needed.
585     </p>
586    
587     <warn>
588 fox2mike 1.54 Both Master <e>and</e> PCM need to be unmuted and set to audible volume levels
589     if you want to hear some output on your speakers.
590 fox2mike 1.51 </warn>
591    
592     <ul>
593     <li>
594     To move between channels, use your left and right arrow keys. (&lt;-
595     &amp; -&gt;)
596     </li>
597     <li>
598     To toggle mute, move to the specific channel, for example Master and press
599     the <e>m</e> key on the keyboard.
600     </li>
601     <li>
602     To increase and decrease the volume levels, use the up and down arrow keys
603     respectively.
604     </li>
605     </ul>
606    
607     <note>
608     Be careful when setting your Bass and Treble values. 50 is usually a good
609     number for both. Extremely high values of Bass may cause <e>jarring</e>
610     on speakers that are not designed to handle them.
611     </note>
612    
613     <p>
614     After you're all done, your ALSA Mixer should look similar to the one below.
615     Note the 00 instead of the MM and also the volume levels for some optimum
616     settings.
617     </p>
618    
619     <figure link="/images/docs/alsa-mixerunmuted.png" short="AlsaMixer Unmuted" caption="Alsa Mixer ready to roll"/>
620    
621 drobbins 1.1 </body>
622     </section>
623     <section>
624 fox2mike 1.51 <title>Sound Check!</title>
625 drobbins 1.1 <body>
626 swift 1.20
627 drobbins 1.1 <p>
628 fox2mike 1.54 Finally. Some music. If everything above is perfect, you should now be able to
629     listen to some good music. A quick way to test is to use a command line tool
630     like <c>media-sound/madplay</c>. You could also use something more well known
631 nightmorph 1.70 like <c>mpg123</c>. If you are an ogg fan, you could use <c>ogg123</c> provided
632     by <c>media-sound/vorbis-tools</c>. Use any player you are comfortable with. As
633     always, <c>emerge</c> what you need.
634 fox2mike 1.51 </p>
635    
636     <pre caption="Getting the software">
637     <comment>(Install the applications you want)</comment>
638 nightmorph 1.70 # <i>emerge madplay mpg123</i>
639 fox2mike 1.51 <comment>(To play .ogg files)</comment>
640     # <i>emerge vorbis-tools</i>
641     </pre>
642    
643     <p>
644     And then play your favorite sound track...
645 drobbins 1.1 </p>
646 swift 1.20
647 fox2mike 1.51 <pre caption="Playing Music">
648     # <i>madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3</i>
649     MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
650     Title: Dread Rock
651     Artist: Paul Oakenfold
652     Album: Matrix Reloaded
653     Year: 2003
654     Genre: Soundtrack
655     Soundtrack
656     00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC
657    
658     # <i>ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg</i>
659     Audio Device: Advanced Linux Sound Architecture (ALSA) output
660    
661     Playing: Paul Oakenfold - Dread Rock.ogg
662     Ogg Vorbis stream: 2 channel, 44100 Hz
663     Genre: Soundtrack
664     Transcoded: mp3;160
665     Title: Dread Rock
666     Artist: Paul Oakenfold
667     Date: 2003
668     Album: Matrix Reloaded
669     Time: 00:11.31 [04:28.75] of 04:40.06 (200.6 kbps) Output Buffer 96.9%
670 drobbins 1.1 </pre>
671 swift 1.20
672 fox2mike 1.51 </body>
673     </section>
674     <section>
675 vanquirius 1.59 <title>ALSA and USE</title>
676 fox2mike 1.54 <body>
677    
678     <p>
679     You can now add the <c>alsa</c> use flag to <path>/etc/make.conf</path> to
680     ensure that your applications that support ALSA get built with it. Some
681     architectures like x86 and amd64 have the flag enabled by default.
682     </p>
683    
684     </body>
685     </section>
686     <section>
687 fox2mike 1.51 <title>Issues?</title>
688     <body>
689    
690 drobbins 1.1 <p>
691 fox2mike 1.51 If for some reason you're unable to hear sound, the first thing to do would
692 fox2mike 1.54 be to check your <uri link="#doc_chap3_pre6">alsamixer</uri> settings. 80% of
693 fox2mike 1.51 the issues lie with muted channels or low volume. Also check your Window
694     Manager's sound applet and verify that volumes are set to audible levels.
695 drobbins 1.1 </p>
696 swift 1.20
697 drobbins 1.1 <p>
698 fox2mike 1.51 <path>/proc</path> is your friend. And in this case, <path>/proc/asound</path>
699     is your best friend. We shall just take a short look at how much info is made
700     available to us there.
701 drobbins 1.1 </p>
702 swift 1.20
703 fox2mike 1.51 <pre caption="Fun with /proc/asound">
704     <comment>(First and foremost, if /proc/asound/cards shows your card, ALSA has
705     picked up your sound card fine.)</comment>
706     # <i>cat /proc/asound/cards</i>
707     0 [Live ]: EMU10K1 - Sound Blaster Live!
708     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
709    
710     <comment>(If you run ALSA off the kernel like I do and wonder how far behind
711     you are from alsa-driver, this displays current running ALSA version)</comment>
712     # <i>cat /proc/asound/version</i>
713     Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).
714 cam 1.47
715 fox2mike 1.51 <comment>(ALSA OSS emulation details)</comment>
716     # <i>cat /proc/asound/oss/sndstat</i>
717     Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
718     Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
719     Config options: 0
720    
721     Installed drivers:
722     Type 10: ALSA emulation
723    
724     Card config:
725     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
726    
727     Audio devices:
728     0: EMU10K1 (DUPLEX)
729 neysx 1.46
730 fox2mike 1.51 Synth devices: NOT ENABLED IN CONFIG
731 neysx 1.46
732 fox2mike 1.51 Midi devices:
733     0: EMU10K1 MPU-401 (UART)
734 swift 1.20
735 fox2mike 1.51 Timers:
736     7: system timer
737 neysx 1.46
738 fox2mike 1.51 Mixers:
739     0: SigmaTel STAC9721/23
740     </pre>
741 swift 1.20
742 fox2mike 1.61 <p>
743     The other most common issue users face is the dreaded "Unknown symbol in module"
744     error. An example of the same is shown below.
745     </p>
746    
747     <pre caption="Unknown Symbol in module error">
748     # <i>/etc/init.d/alsasound start</i>
749     * Loading ALSA modules ...
750     * Loading: snd-card-0 ... [ ok ]
751     * Loading: snd-pcm-oss ...
752     WARNING: Error inserting snd_mixer_oss
753     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
754     symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting
755     snd_pcm_oss
756     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
757     symbol in module, or unknown parameter (see dmesg)
758     [ !! ]
759     * Loading: snd-mixer-oss ...
760     FATAL: Error inserting snd_mixer_oss
761     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
762     symbol in module, or unknown parameter (see dmesg)
763     [ !! ]
764     * Loading: snd-seq ... [ ok ]
765     * Loading: snd-emu10k1-synth ... [ ok ]
766     * Loading: snd-seq-midi ... [ ok ]
767     * Restoring Mixer Levels ... [ ok ]
768     </pre>
769    
770     <p>
771     And when you take a look at <c>dmesg</c> as suggested, you're quite likely to
772     see:
773     </p>
774    
775     <pre caption="dmesg output">
776     <comment>(Only relevant portions are shown below)</comment>
777     # <i>dmesg | less</i>
778     ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
779     snd_mixer_oss: Unknown symbol snd_unregister_oss_device
780     snd_mixer_oss: Unknown symbol snd_register_oss_device
781     snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
782     snd_mixer_oss: Unknown symbol snd_oss_info_register
783     snd_pcm_oss: Unknown symbol snd_unregister_oss_device
784     snd_pcm_oss: Unknown symbol snd_register_oss_device
785     snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
786     snd_pcm_oss: Unknown symbol snd_oss_info_register
787     snd_mixer_oss: Unknown symbol snd_unregister_oss_device
788     snd_mixer_oss: Unknown symbol snd_register_oss_device
789     snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
790     snd_mixer_oss: Unknown symbol snd_oss_info_register
791     </pre>
792    
793     <p>
794     The above issue is caused when you switch from <c>alsa-driver</c> to in-kernel
795     ALSA because when you unmerge <c>alsa-driver</c> the module files are config
796     protected and hence get left behind. So, when you switch to in-kernel
797     drivers, running <c>modprobe</c> gives you a mix of <c>alsa-driver</c> and
798     in-kernel modules thus causing the above errors.
799     </p>
800    
801     <p>
802     The solution is quite easy. We just need to manually remove the problem causing
803     directory after you unmerge <c>alsa-driver</c>. Be sure to remove the correct
804     kernel version and not the current one!
805     </p>
806    
807     <pre caption="Removing the alsa-driver modules">
808 rane 1.68 # <i>rm -rf /lib/modules/$(uname -r)/alsa-driver</i>
809 fox2mike 1.61 </pre>
810    
811 fox2mike 1.66 <p>
812     Another reason for error messages similar to the ones above could be a file in
813 neysx 1.67 <path>/etc/modules.d</path> supplying a <c>device_mode</c> parameter when it
814 fox2mike 1.66 isn't required. Confirm that this is indeed the issue and find out which file
815     is the culprit.
816     </p>
817    
818 neysx 1.67 <pre caption="Confirming and searching for device_mode">
819 fox2mike 1.66 <comment>(Check dmesg to confirm)</comment>
820     # <i>dmesg | grep device_mode</i>
821     snd: Unknown parameter `device_mode'
822     <comment>(Now, to get to the source of the issue)</comment>
823     # <i>grep device_mode /etc/modules.d/*</i>
824     </pre>
825    
826     <p>
827     Usually it is a file called <path>alsa</path> with the line <c>options snd
828     device_mode=0666</c>. Remove this line and restart the alsasound service and
829     that should take care of this issue.
830     </p>
831    
832 erwin 1.26 </body>
833     </section>
834     </chapter>
835 fox2mike 1.51
836 erwin 1.26 <chapter>
837 fox2mike 1.51 <title>Other things ALSA</title>
838 nightmorph 1.71 <section id="midi">
839 fox2mike 1.51 <title>Setting up MIDI support</title>
840 erwin 1.26 <body>
841    
842     <p>
843 nightmorph 1.71 First, check to make sure that you enabled the <c>midi</c> USE flag in
844 jkt 1.75 <path>/etc/make.conf</path>. If you didn't, go ahead and add it now. You will
845     also need to re-emerge any ALSA packages that use the <c>midi</c> flag, such as
846     <c>alsa-lib</c>, <c>alsa-utils</c>, and <c>alsa-driver</c>.
847 nightmorph 1.71 </p>
848    
849     <p>
850 fox2mike 1.51 If your sound card is one of those that come with on-board MIDI synthesizers
851     and you would like to listen to some .mid files, you have to install
852     <c>awesfx</c> which is basically a set of utilities for controlling the AWE32
853     driver. We need to install it first. If you don't have a hardware synthesizer,
854     you can use a virtual one. Please see the section on
855     <uri link="#vsynth">Virtual Synthesizers</uri> for more information.
856 erwin 1.26 </p>
857    
858 fox2mike 1.51 <pre caption="Installing awesfx">
859 erwin 1.26 # <i>emerge awesfx</i>
860     </pre>
861    
862 fox2mike 1.51 <note>
863     You will need to copy over SoundFont (SF2) files from your sound card's driver
864     CD or a Windows installation into <path>/usr/share/sounds/sf2/</path>. For
865     example a sound font file for the Creative SBLive! card would be 8MBGMSFX.SF2.
866     </note>
867    
868 erwin 1.26 <p>
869 fox2mike 1.51 After copying over the Soundfont files, we can then play a midi file as shown.
870     You can also add the <c>asfxload</c> command to
871     <path>/etc/conf.d/local.start</path>, so that the sound font is loaded
872     every time the system starts up.
873 erwin 1.26 </p>
874    
875 fox2mike 1.51 <note>
876     <path>/mnt</path> paths mentioned in the code listing(s) below will <e>not</e>
877     be the same in your machine. They are just an example. Please be careful to
878     change the path to suit your machine.
879     </note>
880 erwin 1.26
881 fox2mike 1.51 <pre caption="Loading Soundfonts">
882     <comment>(First, copy the Soundfont)</comment>
883 fox2mike 1.61 # <i>cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
884     <comment>(Or get it from your SoundBlaster CD)</comment>
885     # <i>cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
886 fox2mike 1.51 <comment>(We load the specific Soundfont)</comment>
887     # <i>asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2</i>
888 erwin 1.26 </pre>
889    
890 swift 1.35 <p>
891 fox2mike 1.51 You can now play midi files using a program like <c>aplaymidi</c>. Run
892     <c>aplaymidi -l</c> to get a list of available ports and then pick one
893     to play the file on.
894 swift 1.35 </p>
895 erwin 1.26
896 fox2mike 1.51 <pre caption="Playing MIDI">
897     <comment>(Check open ports)</comment>
898     # <i>aplaymidi -l</i>
899     Port Client name Port name
900     64:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)
901     65:0 Emu10k1 WaveTable Emu10k1 Port 0
902     65:1 Emu10k1 WaveTable Emu10k1 Port 1
903     65:2 Emu10k1 WaveTable Emu10k1 Port 2
904     65:3 Emu10k1 WaveTable Emu10k1 Port 3
905     <comment>(Pick a port, and play a mid file)</comment>
906     # <i> aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid</i>
907     </pre>
908 swift 1.32
909 erwin 1.26 </body>
910     </section>
911 fox2mike 1.51 <section id="vsynth">
912     <title>Virtual Synthesizers</title>
913 erwin 1.26 <body>
914    
915     <p>
916 fox2mike 1.51 If your sound card lacks a hardware synthesizer, you could use a virtual one
917     like <c>timidity++</c>. Installation is a breeze.
918 erwin 1.26 </p>
919    
920 fox2mike 1.51 <pre caption="Installing timidity++">
921 erwin 1.26 # <i>emerge timidity++</i>
922     </pre>
923    
924     <p>
925 nightmorph 1.71 For timidity to play sounds, it needs a sound font. Fortunately, the ebuild will
926     install some sound font packages for you. There are a few other font packages
927     available in Portage, such as <c>timidity-freepats</c> and
928     <c>timidity-eawpatches</c>. You can have multiple sound font configurations
929     installed, and you can place your own in <path>/usr/share/timidity/</path>. To
930 nightmorph 1.73 switch between different timidity configurations, you should use
931     <c>eselect</c>.
932 cam 1.33 </p>
933    
934 nightmorph 1.71 <pre caption="Changing configurations">
935     # <i>eselect timidity list</i>
936     # <i>eselect timidity set eawpatches</i>
937 cam 1.33 </pre>
938    
939     <p>
940 swift 1.35 Don't forget to add <c>timidity</c> to the default runlevel.
941 erwin 1.26 </p>
942    
943 swift 1.35 <pre caption="Adding timidity to the default runlevel">
944 erwin 1.26 # <i>rc-update add timidity default</i>
945     # <i>/etc/init.d/timidity start</i>
946     </pre>
947    
948 drobbins 1.1 <p>
949 fox2mike 1.51 You can now try out <uri link="#doc_chap4_pre3">Playing MIDI</uri> files.
950 erwin 1.26 </p>
951    
952 drobbins 1.1 </body>
953     </section>
954     <section>
955 swift 1.35 <title>Tools and Firmware</title>
956 drobbins 1.1 <body>
957 swift 1.20
958     <p>
959 swift 1.35 Some specific sound cards can benefit from certain tools provided by the
960 nightmorph 1.71 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. You may install either with
961     a simple <c>emerge</c>.
962     </p>
963    
964     <pre caption="Installing ALSA Tools">
965     # <i>emerge alsa-tools</i>
966     </pre>
967    
968     </body>
969     </section>
970     <section>
971     <title>Multiple sound cards</title>
972     <body>
973    
974     <p>
975 nightmorph 1.74 You can have more than one sound card in your system simultaneously, provided
976     that you have built ALSA as modules in your kernel (or have installed
977 nightmorph 1.71 <c>alsa-driver</c> instead). You just need to specify which should be started
978     first in <path>/etc/modules.d/alsa</path>. Your cards are identified by their
979     driver names inside this file. 0 is the first card, 1 is the second, and so on.
980     Here's an example for a system with two sound cards.
981     </p>
982    
983     <pre caption="Two sound cards in /etc/modules.d/alsa">
984     options snd-emu10k1 index=0
985     options snd-via82xx index=1
986     </pre>
987    
988     <p>
989     Or, if you have two cards that use the same driver, you specify them on the same
990     line, using comma-separated numbers. Here's an example for a system with three
991     sound cards, two of which are the same Intel High Definition Audio card.
992 swift 1.20 </p>
993    
994 nightmorph 1.71 <pre caption="Multiple sound cards in /etc/modules.d/alsa">
995     options snd-ymfpci index=0
996     options snd-hda-intel index=1,2
997 drobbins 1.1 </pre>
998 swift 1.20
999 nightmorph 1.71 </body>
1000     </section>
1001     <section>
1002     <title>Plugins</title>
1003     <body>
1004    
1005 erwin 1.26 <p>
1006 nightmorph 1.71 You may want to install some plugins for extra functionality.
1007     <c>alsa-plugins</c> is a collection of useful plugins, which include: PulseAudio
1008     output, a sample rate converter, jack (a low-latency audio server), and an
1009     encoder that lets you output 6-channel audio through digital S/PDIF connections
1010     (both optical and coaxial). You can choose which of its plugins you want
1011     installed by adding their USE flags to <path>/etc/portage/package.use</path>.
1012 erwin 1.26 </p>
1013    
1014 nightmorph 1.71 <pre caption="Installing alsa-plugins">
1015     # <i>emerge -avt alsa-plugins</i>
1016 erwin 1.26 </pre>
1017    
1018     </body>
1019     </section>
1020     <section>
1021 nightmorph 1.71 <title>A big thank you to...</title>
1022 swift 1.21 <body>
1023    
1024     <p>
1025 fox2mike 1.51 Everyone who contributed to the earlier version of the Gentoo ALSA Guide:
1026     Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston,
1027     John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft and Erwin.
1028 swift 1.21 </p>
1029    
1030 swift 1.17 </body>
1031     </section>
1032 drobbins 1.1 <section>
1033 fox2mike 1.51 <title>References</title>
1034 drobbins 1.1 <body>
1035 swift 1.20
1036 drobbins 1.1 <ul>
1037 fox2mike 1.51 <li><uri link="http://www.alsa-project.org/">The ALSA Project</uri></li>
1038 swift 1.35 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
1039 drobbins 1.1 </ul>
1040 swift 1.20
1041 drobbins 1.1 </body>
1042     </section>
1043     </chapter>
1044     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20