/[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.76 - (hide annotations) (download) (as text)
Mon Apr 16 05:39:54 2007 UTC (7 years, 5 months ago) by nightmorph
Branch: MAIN
Changes since 1.75: +4 -4 lines
File MIME type: application/xml
changed modules-update command to update-modules, per the runtime warning about modules-update being deprecated. weird. seems update-modules used to be the name anyway years ago, see lpi 101 part 2.

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

  ViewVC Help
Powered by ViewVC 1.1.20