/[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.43 - (hide annotations) (download) (as text)
Sun Nov 21 12:35:06 2004 UTC (9 years, 9 months ago) by neysx
Branch: MAIN
Changes since 1.42: +2 -2 lines
File MIME type: application/xml
Converted date to YYYY-MM-DD

1 cam 1.42 <?xml version="1.0" encoding="UTF-8"?>
2 neysx 1.43 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.42 2004/10/31 18:57:00 cam Exp $ -->
3 drobbins 1.1 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4    
5 cam 1.42 <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 cam 1.42 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 cam 1.42 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 swift 1.20 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 cam 1.42 <version>1.5.5</version>
44 neysx 1.43 <date>2004-10-31</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 cam 1.42 <path>/etc/make.conf</path> to allow our available packages to compile with
77 swift 1.35 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 cam 1.42 You can use <c>aplaymidi</c> from the ALSA Utils to test your MIDI
374     configuration.
375 swift 1.20 </p>
376    
377 drobbins 1.1 <p>
378 swift 1.35 To see what MIDI output ports are available on your system, use the <c>-l</c>
379     option:
380 erwin 1.26 </p>
381    
382 swift 1.35 <pre caption="Viewing the MIDI output ports">
383 cam 1.42 # <i>aplaymidi -l</i>
384 erwin 1.26 </pre>
385    
386     <p>
387 swift 1.35 If all looks fine, try playing a MIDI file to make sure everything works. With
388 cam 1.42 the <c>-p</c> option you define what MIDI port you want to use.
389 drobbins 1.1 </p>
390 swift 1.20
391 swift 1.35 <pre caption="Playing a MIDI file">
392 cam 1.42 # <i>aplaymidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
393 erwin 1.26 </pre>
394    
395 drobbins 1.1 </body>
396     </section>
397     </chapter>
398     <chapter>
399 swift 1.35 <title>Final Remarks</title>
400 drobbins 1.1 <section>
401 swift 1.35 <title>Tools and Firmware</title>
402 drobbins 1.1 <body>
403 swift 1.20
404     <p>
405 swift 1.35 Some specific sound cards can benefit from certain tools provided by the
406 cam 1.36 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
407 swift 1.35 <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
408     <path>/etc/make.conf</path> with the tools you require. For instance:
409 swift 1.20 </p>
410    
411 swift 1.35 <pre caption="Selecting ALSA Tools in /etc/make.conf">
412     ALSA_TOOLS="as10k1 ac3dec"
413 drobbins 1.1 </pre>
414 swift 1.20
415 erwin 1.26 <p>
416 swift 1.35 Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
417 erwin 1.26 </p>
418    
419 swift 1.35 <pre caption="Installing ALSA Tools">
420     # <i>emerge alsa-tools</i>
421 erwin 1.26 </pre>
422    
423     </body>
424     </section>
425     <section>
426 swift 1.21 <title>Activating Joystick Support</title>
427     <body>
428    
429     <p>
430     If your soundcard has a joystick plug, you might be interested in activating
431 bennyc 1.37 joystick support for your soundcard. If so, start by verifying if your soundcard
432 swift 1.21 driver has a joystick parameter. You can verify this by running <c>modinfo</c>
433 swift 1.35 against your kernel module. For instance, for the <c>snd-via82xx</c>:
434 swift 1.21 </p>
435    
436     <pre caption="Running modinfo">
437     # <i>modinfo snd-via82xx</i>
438     filename: /lib/modules/2.4.22-ck2/snd-via82xx.o
439     description: "VIA VT82xx audio"
440     author: "Jaroslav Kysela &lt;perex@suse.cz&gt;"
441     license: "GPL"
442 swift 1.35 parm: index int array (min = 1, max = 8), description "Index value for
443     VIA 82xx bridge."
444     parm: id string array (min = 1, max = 8), description "ID string for VIA
445     82xx bridge."
446     parm: enable int array (min = 1, max = 8), description "Enable audio part
447     of VIA 82xx bridge."
448     parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port.
449     (VT82C686x only)"
450     <i>parm: joystick int array (min = 1, max = 8), description "Enable
451     joystick. (VT82C686x only)"</i>
452 cam 1.42 parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec
453 swift 1.35 clock (default 48000Hz)."
454 cam 1.42 parm: dxs_support int array (min = 1, max = 8), description "Support for
455     DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 =
456 swift 1.35 no VRA)
457 swift 1.21 </pre>
458    
459     <p>
460 swift 1.35 If it has the <c>joystick</c> parameter, append <c>joystick=1</c> to your
461     <c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance:
462 swift 1.21 </p>
463    
464     <pre caption="Adding the joystick parameter">
465     alias snd-card-0 snd-via82xx
466     options snd-via82xx joystick=1
467     </pre>
468 swift 1.17
469     </body>
470     </section>
471 drobbins 1.1 <section>
472 swift 1.35 <title>Resources</title>
473 drobbins 1.1 <body>
474 swift 1.20
475 drobbins 1.1 <ul>
476 swift 1.35 <li><uri link="http://www.alsa-project.org">The ALSA Project</uri></li>
477     <li><uri link="http://www.djcj.org">ALSA Howto's and FAQs</uri></li>
478     <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
479 drobbins 1.1 </ul>
480 swift 1.20
481 drobbins 1.1 </body>
482     </section>
483     </chapter>
484     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20