/[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.35 - (hide annotations) (download) (as text)
Tue May 18 15:46:40 2004 UTC (10 years, 3 months ago) by swift
Branch: MAIN
Changes since 1.34: +169 -491 lines
File MIME type: application/xml
Heavy cleaning of the ALSA Guide. Including:
- Removing obsoleted parts
- Removing verbose output on several commands that has no function in the guide
- Removing the various colors the guide originally had
- Rewriting parts such as kernel configuration

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

  ViewVC Help
Powered by ViewVC 1.1.20