/[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.50 - (show annotations) (download) (as text)
Sun Apr 24 09:14:23 2005 UTC (10 years, 2 months ago) by swift
Branch: MAIN
Changes since 1.49: +6 -4 lines
File MIME type: application/xml
ALSA sometimes shows channels of which you can not change the volume. If you
unmute those channels, it'll force the regular channels to not provide any sound
anymore.

The user must leave these channels muted.

Thanks to Rickard Lindgren <r.lindgren@kolumbus.fi> for noticing, confirmed by
Martin Schmeisser. The reason: most of the time, these channels provide a
different output; enabling them disables the normal output. For instance, IEC985
unmuting disables regular output in favor of S/PDIF.

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.49 2005/03/06 12:27:59 swift Exp $ -->
3 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4
5 <guide link="/doc/en/alsa-guide.xml">
6 <title>Gentoo Linux ALSA Guide</title>
7 <author title="Author">
8 <mail link="zu@pandora.be">Vincent Verleye</mail>
9 </author>
10 <author title="Author">
11 <mail link="g2boojum@gentoo.org">Grant Goodyear</mail>
12 </author>
13 <author title="Author">
14 <mail link="agenkin@gentoo.org">Arcady Genkin</mail>
15 </author>
16 <author title="Author">
17 <mail link="eradicator@gentoo.org">Jeremy Huddleston</mail>
18 </author>
19 <author title="Editor"><!-- zhen@gentoo.org -->
20 John P. Davis
21 </author>
22 <author title="Editor">
23 <mail link="swift@gentoo.org">Sven Vermeulen</mail>
24 </author>
25 <author title="Editor">
26 <mail link="bennyc@gentoo.org">Benny Chuang</mail>
27 </author>
28 <author title="Editor">
29 <mail link="blubber@gentoo.org">Tiemo Kieft</mail>
30 </author>
31 <author title="Editor">
32 <mail link="erwin@gentoo.org">Erwin</mail>
33 </author>
34
35 <abstract>
36 This guide will show you how to set up the Advanced Linux Sound Architecture
37 (ALSA) on Gentoo Linux. In addition to the Gentoo Linux Desktop Configuration
38 Guide, this guide is supposed to give you more information on this subject.
39 </abstract>
40
41 <license/>
42
43 <version>1.5.12</version>
44 <date>2005-04-24</date>
45
46 <chapter>
47 <title>The Advanced Linux Sound Architecture</title>
48 <section>
49 <title>What is ALSA?</title>
50 <body>
51
52 <p>
53 ALSA is the <e>Advanced Linux Sound Architecture</e>, a project dedicated to the
54 development of a high-quality Linux sound subsystem. It has replaced OSS
55 (<e>Open Sound System</e>) as default sound subsystem in the 2.6 kernel series.
56 </p>
57
58 <p>
59 ALSA provides efficient support for all types of audio interfaces, is fully
60 modularized, is SMP and thread-safe and provides a high-quality user space
61 library called <e>alsa-lib</e> to simplify application programming. It also
62 provides a backwards compatibility layer with OSS.
63 </p>
64
65 </body>
66 </section>
67 </chapter>
68 <chapter>
69 <title>Installing ALSA</title>
70 <section>
71 <title>USE Flags</title>
72 <body>
73
74 <p>
75 Gentoo provides an <c>alsa</c> USE flag which you should set in
76 <path>/etc/make.conf</path> to allow our available packages to compile with
77 ALSA support. If you have <c>oss</c> in your USE variable as well, ALSA will
78 compile with OSS backward compatibility.
79 </p>
80
81 </body>
82 </section>
83 <section>
84 <title>Kernel Modules</title>
85 <body>
86
87 <p>
88 First of all, before continuing, make sure your kernel has <e>Sound Card
89 Support</e> enabled. If you used <c>genkernel</c> to build your kernel, then
90 this is automatically true. Otherwise reconfigure your kernel. Additionally,
91 make sure you disable <e>Open Sound System</e> in your kernel configuration.
92 If you don't, your system may try to use these drivers rather than the alsa
93 ones. If you see a message about 'sound card not detected' and you are sure
94 you have the correct driver, this is probably the reason.
95 </p>
96
97 <warn>
98 If you use a 2.6 kernel, you may use the drivers provided in the kernel, but
99 we still recommend that you use media-sound/alsa-driver as they are more up
100 to date than what is provided in the kernel tree. If you still wish to use
101 the drivers provided with your kernel, you can skip the rest of this section
102 and continue with <uri link="#alsa-utils">Installing the ALSA Utils</uri>.
103 </warn>
104
105 <p>
106 The first step in installing your sound drivers is figuring out what sound
107 card you have. If you don't already know, an easy trick is to search
108 for "audio" in the output of the <c>lspci</c> command. You can install
109 this tool with <c>emerge pciutils</c>.
110 </p>
111
112 <pre caption="Finding out the soundcard type">
113 # <i>lspci | grep -i audio</i>
114 Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio Controller (rev 64).
115 </pre>
116
117 <p>
118 Now go to the <uri link="http://www.alsa-project.org/alsa-doc">ALSA Soundcard
119 Matrix</uri> and search for your soundcard. In the above example you should go
120 to the "VIA" manufacturer. You will receive a table with the known chipsets of
121 that vendor. The chipset in the above example is "via82c686"; the "Details" link
122 then informs me that the driver is called <path>via82xx</path>. This is all the
123 information you need, so you can safely discard the rest of that document.
124 </p>
125
126 <p>
127 Based on this information we can now install the <c>alsa-driver</c> for our
128 soundcard. First edit <path>/etc/make.conf</path> and <e>add</e> a new option
129 called ALSA_CARDS to it. Inside this variable you declare the soundcard driver
130 you want to use:
131 </p>
132
133 <pre caption="Editing /etc/make.conf for ALSA_CARDS">
134 ALSA_CARDS="via82xx"
135 </pre>
136
137 <warn>
138 If you have multiple sound cards in your system, separate them with a comma
139 in the ALSA_CARDS variable. Ex: ALSA_CARDS="via82xx,emu10k1"
140 </warn>
141
142 <p>
143 If you want OSS compatibility (highly recommended), you should add 'oss' to
144 your USE flags in <path>/etc/make.conf</path>. After that, you are ready to
145 install <c>alsa-driver</c>:
146 </p>
147
148 <pre caption="Installing ALSA Drivers">
149 # <i>emerge alsa-driver</i>
150 </pre>
151
152 <impo>
153 Whenever you (re)compile your kernel sources, chances are that the ALSA drivers
154 will be deleted. It is therefore adviseable to rerun <c>emerge alsa-driver</c>
155 every time you (re)compile your kernel. Note that this will compile the
156 drivers for the kernel in /usr/src/linux, NOT the running kernel.
157 </impo>
158
159 </body>
160 </section>
161 <section id="alsa-utils">
162 <title>Installing the ALSA Utils</title>
163 <body>
164
165 <p>
166 If the in-kernel OSS compatibility is not sufficient for your needs, you will
167 want to install <c>alsa-oss</c>. This will provide you with the 'aoss'
168 executable which can be used as demonstrated:
169 </p>
170
171 <pre caption="More OSS compatibility layer">
172 # <i>emerge alsa-oss</i>
173 # <i>aoss mpg123 music.mp3</i>
174 </pre>
175
176 <p>
177 Now install the ALSA Utils on your system (this is mandatory):
178 </p>
179
180 <pre caption="Installing ALSA Utils">
181 # <i>emerge alsa-utils</i>
182 </pre>
183
184 <p>
185 Now that the utils are installed, it is time to configure ALSA...
186 </p>
187
188 </body>
189 </section>
190 </chapter>
191 <chapter>
192 <title>Configuring ALSA</title>
193 <section>
194 <title>Automatically Loading the Kernel Modules</title>
195 <body>
196
197 <p>
198 If you use a modular kernel (such as when using <c>genkernel</c>) you have to
199 edit <path>/etc/modules.d/alsa</path> so that it activates the necessary
200 modules at boot time. For the soundcard in our example:
201 </p>
202
203 <pre caption="/etc/modules.d/alsa">
204 alias snd-card-0 snd-via82xx
205 <comment># The following is only needed when you want OSS compatibility</comment>
206 alias sound-slot-0 snd-via82xx
207 alias /dev/mixer snd-mixer-oss
208 alias /dev/dsp snd-pcm-oss
209 alias /dev/midi snd-seq-oss
210 </pre>
211
212 <p>
213 Now run <c>modules-update</c> to save the changes you made to the
214 <path>alsa</path> file into <path>/etc/modules.conf</path>:
215 </p>
216
217 <pre caption="Running modules-update">
218 # <i>modules-update</i>
219 </pre>
220
221 </body>
222 </section>
223 <section>
224 <title>Verifying the Device Files</title>
225 <body>
226
227 <p>
228 This should be done automatically for you on recent installs, but if you run
229 into problems, check that your ALSA devices and permissions are set correctly
230 by your /dev manager. If you use DevFS, check <path>/etc/devfsd.conf</path>
231 </p>
232
233 <pre caption="/etc/devfsd.conf">
234 # ALSA/OSS stuff
235 # Comment/change these if you want to change the permissions on
236 # the audio devices
237 LOOKUP snd MODLOAD ACTION snd
238 LOOKUP dsp MODLOAD
239 LOOKUP mixer MODLOAD
240 LOOKUP midi MODLOAD
241 REGISTER sound/.* PERMISSIONS root.audio 660
242 REGISTER snd/.* PERMISSIONS root.audio 660
243 </pre>
244
245 </body>
246 </section>
247 <section>
248 <title>Having ALSA Activated at Boot</title>
249 <body>
250
251 <p>
252 To activate ALSA support at boot, add the <c>alsasound</c> init script to the
253 boot runlevel:
254 </p>
255
256 <pre caption="Adding alsasound to the boot runlevel">
257 # <i>rc-update add alsasound boot</i>
258 # <i>/etc/init.d/alsasound start</i>
259 </pre>
260
261 </body>
262 </section>
263 <section>
264 <title>Unmute the Channels</title>
265 <body>
266
267 <p>
268 By default, all sound channels are muted. To fix this, run <c>amixer</c>:
269 </p>
270
271 <pre caption="Running amixer">
272 # <i>amixer</i>
273 </pre>
274
275 <p>
276 If <c>amixer</c> produces lots of output then you're ready to unmute the
277 channels. If you receive an error, doublecheck that your soundcard module is
278 started.
279 </p>
280
281 <p>
282 Now unmute the <e>Master</e> and <e>PCM</e> channels. If this isn't sufficient,
283 also unmute the <e>Center</e> and <e>Surround</e> channels. Do not unmute the
284 channels of which you can not change the volume; this might actually result in
285 ALSA producing no sound at all...
286 </p>
287
288 <pre caption="Unmuting the sound channels">
289 <comment>(If you prefer an ncurses method:)</comment>
290
291 # <i>alsamixer</i>
292
293 <comment>(or)</comment>
294
295 # <i>amixer set Master 100% unmute</i>
296 # <i>amixer set PCM 100% unmute</i>
297 <comment>(Only if the above isn't sufficient:)</comment>
298 # <i>amixer set Center 100% unmute</i>
299 # <i>amixer set Surround 100% unmute</i>
300 # <i>amixer set Headphone 100% unmute</i>
301 </pre>
302
303
304 <p>
305 To check if your sound works, play a wave file (using <c>aplay</c>), mp3 (using
306 <c>mpg123</c> or even <c>mplayer</c>) or any other sound file for that matter.
307 </p>
308
309 </body>
310 </section>
311 </chapter>
312 <chapter>
313 <title>Activating MIDI Support</title>
314 <section>
315 <title>Installing the Necessary Packages</title>
316 <body>
317
318 <p>
319 Some soundcards come with onboard MIDI synthesizers. To use them, you must first
320 install the <c>awesfx</c> package:
321 </p>
322
323 <pre caption="Installing the awesfx package">
324 # <i>emerge awesfx</i>
325 </pre>
326
327 <p>
328 If you have a collection of sound fonts somewhere, place them in
329 <path>/usr/share/sfbank</path>. For instance, the SBLive has a sound font file
330 called <path>8MBGMSFX.SF2</path> or <path>CT4GMSFX.SF2</path>.
331 </p>
332
333 <p>
334 After copying over the sound font, select them using <c>asfxload</c>:
335 </p>
336
337 <pre caption="Loading the sound font">
338 # <i>asfxload /usr/share/sfbank/8MBGMSFX.SF2</i>
339 </pre>
340
341 <p>
342 You must have this command run every time you boot, so it is adviseable to add
343 it to <path>/etc/conf.d/local.start</path> as well.
344 </p>
345
346 <p>
347 If you can't find soundfonts on your driver CD you can download some online from
348 <uri>http://www.parabola.demon.co.uk/alsa/awe64.html</uri>.
349 </p>
350
351 </body>
352 </section>
353 <section>
354 <title>Timidity++ Virtual Synthesizer</title>
355 <body>
356
357 <p>
358 If your sound card does not come with a hardware synthesizer (or you don't want
359 to use it), you can use <c>timidity++</c> to provide you with a virtual
360 synthesizer. Start by emerging this package:
361 </p>
362
363 <pre caption="Installing Timidity++">
364 # <i>emerge timidity++</i>
365 </pre>
366
367 <p>
368 For timidity to play sounds, it needs a soundfont. If you do not have any,
369 install <c>timidity-eawpatches</c> or <c>timidity-shompatches</c> which will
370 give you some soundfonts. You can have multiple soundfont configurations
371 installed, and you can place your own in <path>/usr/share/timidity/</path>.
372 To switch between different timidity configurations, you should use the
373 <e>timidity-update</e> tool provided in the timidity++ package.
374 </p>
375
376 <pre caption="Installing soundfonts">
377 # <i>emerge timidity-eawpatches</i>
378 # <i>timidity-update -g -s eawpatches</i>
379
380 <comment>(or)</comment>
381
382 # <i>emerge timidity-shompatches</i>
383 # <i>timidity-update -g -s shompatches</i>
384 </pre>
385
386 <p>
387 Don't forget to add <c>timidity</c> to the default runlevel.
388 </p>
389
390 <pre caption="Adding timidity to the default runlevel">
391 # <i>rc-update add timidity default</i>
392 # <i>/etc/init.d/timidity start</i>
393 </pre>
394
395 </body>
396 </section>
397 <section>
398 <title>Testing MIDI Support</title>
399 <body>
400
401 <p>
402 You can use <c>aplaymidi</c> from the ALSA Utils to test your MIDI
403 configuration.
404 </p>
405
406 <p>
407 To see what MIDI output ports are available on your system, use the <c>-l</c>
408 option:
409 </p>
410
411 <pre caption="Viewing the MIDI output ports">
412 # <i>aplaymidi -l</i>
413 </pre>
414
415 <p>
416 If all looks fine, try playing a MIDI file to make sure everything works. With
417 the <c>-p</c> option you define what MIDI port you want to use.
418 </p>
419
420 <pre caption="Playing a MIDI file">
421 # <i>aplaymidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
422 </pre>
423
424 </body>
425 </section>
426 </chapter>
427 <chapter>
428 <title>Final Remarks</title>
429 <section>
430 <title>Tools and Firmware</title>
431 <body>
432
433 <p>
434 Some specific sound cards can benefit from certain tools provided by the
435 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
436 <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
437 <path>/etc/make.conf</path> with the tools you require. For instance:
438 </p>
439
440 <pre caption="Selecting ALSA Tools in /etc/make.conf">
441 ALSA_TOOLS="as10k1 ac3dec"
442 </pre>
443
444 <p>
445 Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
446 </p>
447
448 <pre caption="Installing ALSA Tools">
449 # <i>emerge alsa-tools</i>
450 </pre>
451
452 </body>
453 </section>
454 <section>
455 <title>Activating Joystick Support</title>
456 <body>
457
458 <p>
459 If your soundcard has a joystick plug, you might be interested in activating
460 joystick support for your soundcard. If so, start by verifying if your soundcard
461 driver has a joystick parameter. You can verify this by running <c>modinfo</c>
462 against your kernel module. For instance, for the <c>snd-via82xx</c>:
463 </p>
464
465 <pre caption="Running modinfo">
466 # <i>modinfo snd-via82xx</i>
467 filename: /lib/modules/2.4.22-ck2/snd-via82xx.o
468 description: "VIA VT82xx audio"
469 author: "Jaroslav Kysela &lt;perex@suse.cz&gt;"
470 license: "GPL"
471 parm: index int array (min = 1, max = 8), description "Index value for
472 VIA 82xx bridge."
473 parm: id string array (min = 1, max = 8), description "ID string for VIA
474 82xx bridge."
475 parm: enable int array (min = 1, max = 8), description "Enable audio part
476 of VIA 82xx bridge."
477 parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port.
478 (VT82C686x only)"
479 <i>parm: joystick int array (min = 1, max = 8), description "Enable
480 joystick. (VT82C686x only)"</i>
481 parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec
482 clock (default 48000Hz)."
483 parm: dxs_support int array (min = 1, max = 8), description "Support for
484 DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 =
485 no VRA)
486 </pre>
487
488 <p>
489 If it has the <c>joystick</c> parameter, append <c>joystick=1</c> to your
490 <c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance:
491 </p>
492
493 <pre caption="Adding the joystick parameter">
494 alias snd-card-0 snd-via82xx
495 options snd-via82xx joystick=1
496 </pre>
497
498 </body>
499 </section>
500 <section>
501 <title>Resources</title>
502 <body>
503
504 <ul>
505 <li><uri link="http://www.alsa-project.org">The ALSA Project</uri></li>
506 <li><uri link="http://www.djcj.org">ALSA Howto's and FAQs</uri></li>
507 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
508 </ul>
509
510 </body>
511 </section>
512 </chapter>
513 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20