/[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.41 - (hide annotations) (download) (as text)
Sun Aug 29 14:15:34 2004 UTC (10 years, 4 months ago) by swift
Branch: MAIN
Changes since 1.40: +5 -4 lines
File MIME type: application/xml
#61255 - The matrix is only needed to find the module name

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

  ViewVC Help
Powered by ViewVC 1.1.20