/[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.44 - (hide annotations) (download) (as text)
Thu Dec 2 13:02:18 2004 UTC (9 years, 8 months ago) by swift
Branch: MAIN
Changes since 1.43: +4 -3 lines
File MIME type: application/xml
Sometimes the Headphone also gives issues when muted (i.e. no sound). Mailed by Albert Witteveen and confirmed by a google search

1 cam 1.42 <?xml version="1.0" encoding="UTF-8"?>
2 swift 1.44 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.43 2004/11/21 12:35:06 neysx 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 swift 1.44 <version>1.5.6</version>
44     <date>2004-12-02</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 swift 1.44 # <i>amixer set Headphone 100 unmute</i>
279 drobbins 1.1 </pre>
280 swift 1.20
281     <p>
282 swift 1.35 To check if your sound works, play a wave file (using <c>aplay</c>), mp3 (using
283     <c>mpg123</c> or even <c>mplayer</c>) or any other sound file for that matter.
284 drobbins 1.1 </p>
285 swift 1.20
286     <p>
287 swift 1.35 To fine-tune the sound channel settings you can use the <c>alsamixer</c>
288     application.
289 erwin 1.26 </p>
290    
291     </body>
292     </section>
293     </chapter>
294     <chapter>
295 swift 1.35 <title>Activating MIDI Support</title>
296 erwin 1.26 <section>
297 swift 1.35 <title>Installing the Necessary Packages</title>
298 erwin 1.26 <body>
299    
300     <p>
301 swift 1.35 Some soundcards come with onboard MIDI synthesizers. To use them, you must first
302     install the <c>awesfx</c> package:
303 erwin 1.26 </p>
304    
305 swift 1.35 <pre caption="Installing the awesfx package">
306 erwin 1.26 # <i>emerge awesfx</i>
307     </pre>
308    
309     <p>
310 swift 1.35 If you have a collection of sound fonts somewhere, place them in
311     <path>/usr/share/sfbank</path>. For instance, the SBLive has a sound font file
312     called <path>8MBGMSFX.SF2</path> or <path>CT4GMSFX.SF2</path>.
313 erwin 1.26 </p>
314    
315     <p>
316 cam 1.39 After copying over the sound font, select them using <c>asfxload</c>:
317 erwin 1.26 </p>
318    
319 swift 1.35 <pre caption="Loading the sound font">
320 cam 1.39 # <i>asfxload /usr/share/sfbank/8MBGMSFX.SF2</i>
321 erwin 1.26 </pre>
322    
323 swift 1.35 <p>
324     You must have this command run every time you boot, so it is adviseable to add
325     it to <path>/etc/conf.d/local.start</path> as well.
326     </p>
327 erwin 1.26
328 swift 1.32 <p>
329     If you can't find soundfonts on your driver CD you can download some online from
330     <uri>http://www.parabola.demon.co.uk/alsa/awe64.html</uri>.
331     </p>
332    
333 erwin 1.26 </body>
334     </section>
335     <section>
336     <title>Timidity++ Virtual Synthesizer</title>
337     <body>
338    
339     <p>
340 swift 1.35 If your sound card does not come with a hardware synthesizer (or you don't want
341     to use it), you can use <c>timidity++</c> to provide you with a virtual
342 erwin 1.26 synthesizer. Start by emerging this package:
343     </p>
344    
345     <pre caption="Installing Timidity++">
346     # <i>emerge timidity++</i>
347     </pre>
348    
349     <p>
350 swift 1.35 For timidity to play sounds, it needs a soundfont. If you do not have any,
351     install <c>timidity-eawpatches</c> which will give you some soundfonts.
352 cam 1.33 </p>
353    
354 swift 1.35 <pre caption="Installing timidity-eawpatches">
355 cam 1.33 # <i>emerge timidity-eawpatches</i>
356     </pre>
357    
358     <p>
359 swift 1.35 Don't forget to add <c>timidity</c> to the default runlevel.
360 erwin 1.26 </p>
361    
362 swift 1.35 <pre caption="Adding timidity to the default runlevel">
363 erwin 1.26 # <i>rc-update add timidity default</i>
364     # <i>/etc/init.d/timidity start</i>
365     </pre>
366    
367     </body>
368     </section>
369     <section>
370     <title>Testing MIDI Support</title>
371     <body>
372    
373     <p>
374 cam 1.42 You can use <c>aplaymidi</c> from the ALSA Utils to test your MIDI
375     configuration.
376 swift 1.20 </p>
377    
378 drobbins 1.1 <p>
379 swift 1.35 To see what MIDI output ports are available on your system, use the <c>-l</c>
380     option:
381 erwin 1.26 </p>
382    
383 swift 1.35 <pre caption="Viewing the MIDI output ports">
384 cam 1.42 # <i>aplaymidi -l</i>
385 erwin 1.26 </pre>
386    
387     <p>
388 swift 1.35 If all looks fine, try playing a MIDI file to make sure everything works. With
389 cam 1.42 the <c>-p</c> option you define what MIDI port you want to use.
390 drobbins 1.1 </p>
391 swift 1.20
392 swift 1.35 <pre caption="Playing a MIDI file">
393 cam 1.42 # <i>aplaymidi -p 65:0 "Final Fantasy 7 - Aerith' Theme.mid"</i>
394 erwin 1.26 </pre>
395    
396 drobbins 1.1 </body>
397     </section>
398     </chapter>
399     <chapter>
400 swift 1.35 <title>Final Remarks</title>
401 drobbins 1.1 <section>
402 swift 1.35 <title>Tools and Firmware</title>
403 drobbins 1.1 <body>
404 swift 1.20
405     <p>
406 swift 1.35 Some specific sound cards can benefit from certain tools provided by the
407 cam 1.36 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. If you need
408 swift 1.35 <c>alsa-tools</c>, be sure to define the ALSA_TOOLS variable in
409     <path>/etc/make.conf</path> with the tools you require. For instance:
410 swift 1.20 </p>
411    
412 swift 1.35 <pre caption="Selecting ALSA Tools in /etc/make.conf">
413     ALSA_TOOLS="as10k1 ac3dec"
414 drobbins 1.1 </pre>
415 swift 1.20
416 erwin 1.26 <p>
417 swift 1.35 Then install the <c>alsa-tools</c> (and/or <c>alsa-firmware</c>) package(s):
418 erwin 1.26 </p>
419    
420 swift 1.35 <pre caption="Installing ALSA Tools">
421     # <i>emerge alsa-tools</i>
422 erwin 1.26 </pre>
423    
424     </body>
425     </section>
426     <section>
427 swift 1.21 <title>Activating Joystick Support</title>
428     <body>
429    
430     <p>
431     If your soundcard has a joystick plug, you might be interested in activating
432 bennyc 1.37 joystick support for your soundcard. If so, start by verifying if your soundcard
433 swift 1.21 driver has a joystick parameter. You can verify this by running <c>modinfo</c>
434 swift 1.35 against your kernel module. For instance, for the <c>snd-via82xx</c>:
435 swift 1.21 </p>
436    
437     <pre caption="Running modinfo">
438     # <i>modinfo snd-via82xx</i>
439     filename: /lib/modules/2.4.22-ck2/snd-via82xx.o
440     description: "VIA VT82xx audio"
441     author: "Jaroslav Kysela &lt;perex@suse.cz&gt;"
442     license: "GPL"
443 swift 1.35 parm: index int array (min = 1, max = 8), description "Index value for
444     VIA 82xx bridge."
445     parm: id string array (min = 1, max = 8), description "ID string for VIA
446     82xx bridge."
447     parm: enable int array (min = 1, max = 8), description "Enable audio part
448     of VIA 82xx bridge."
449     parm: mpu_port long array (min = 1, max = 8), description "MPU-401 port.
450     (VT82C686x only)"
451     <i>parm: joystick int array (min = 1, max = 8), description "Enable
452     joystick. (VT82C686x only)"</i>
453 cam 1.42 parm: ac97_clock int array (min = 1, max = 8), description "AC'97 codec
454 swift 1.35 clock (default 48000Hz)."
455 cam 1.42 parm: dxs_support int array (min = 1, max = 8), description "Support for
456     DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 =
457 swift 1.35 no VRA)
458 swift 1.21 </pre>
459    
460     <p>
461 swift 1.35 If it has the <c>joystick</c> parameter, append <c>joystick=1</c> to your
462     <c>options</c> line in <path>/etc/modules.d/alsa</path>. For instance:
463 swift 1.21 </p>
464    
465     <pre caption="Adding the joystick parameter">
466     alias snd-card-0 snd-via82xx
467     options snd-via82xx joystick=1
468     </pre>
469 swift 1.17
470     </body>
471     </section>
472 drobbins 1.1 <section>
473 swift 1.35 <title>Resources</title>
474 drobbins 1.1 <body>
475 swift 1.20
476 drobbins 1.1 <ul>
477 swift 1.35 <li><uri link="http://www.alsa-project.org">The ALSA Project</uri></li>
478     <li><uri link="http://www.djcj.org">ALSA Howto's and FAQs</uri></li>
479     <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
480 drobbins 1.1 </ul>
481 swift 1.20
482 drobbins 1.1 </body>
483     </section>
484     </chapter>
485     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20