/[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.78 - (show annotations) (download) (as text)
Sun May 6 23:27:46 2007 UTC (7 years, 7 months ago) by nightmorph
Branch: MAIN
Changes since 1.77: +11 -11 lines
File MIME type: application/xml
updated alsa matrix link; old matrix is no longer maintained. bug 177384

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

  ViewVC Help
Powered by ViewVC 1.1.20