/[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.68 - (show annotations) (download) (as text)
Thu Jul 6 19:51:06 2006 UTC (8 years ago) by rane
Branch: MAIN
Changes since 1.67: +4 -5 lines
File MIME type: application/xml
#138845, replaced KERNELVER with more elite 2.6.16-gentoo-r9

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

  ViewVC Help
Powered by ViewVC 1.1.20