/[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.79 - (hide annotations) (download) (as text)
Mon May 7 07:08:24 2007 UTC (7 years, 6 months ago) by nightmorph
Branch: MAIN
Changes since 1.78: +11 -14 lines
File MIME type: application/xml
misc. fixes suggested by pva on IRC, as well as removing 2.4 kernel notices (no longer in the tree)

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

  ViewVC Help
Powered by ViewVC 1.1.20