/[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.72 - (hide annotations) (download) (as text)
Wed Jan 31 16:39:26 2007 UTC (7 years, 10 months ago) by nightmorph
Branch: MAIN
Changes since 1.71: +3 -3 lines
File MIME type: application/xml
typo fix, should have been module-rebuild not module rebuild

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

  ViewVC Help
Powered by ViewVC 1.1.20