/[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.82 - (hide annotations) (download) (as text)
Mon Jan 26 09:13:56 2009 UTC (5 years, 7 months ago) by nightmorph
Branch: MAIN
Changes since 1.81: +3 -11 lines
File MIME type: application/xml
removed deprecated udevstart paragraph, bug 251899

1 fox2mike 1.51 <?xml version='1.0' encoding="UTF-8"?>
2 nightmorph 1.82 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.81 2008/03/05 09:16:49 nightmorph Exp $ -->
3 fox2mike 1.51
4 drobbins 1.1 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
5    
6 cam 1.42 <guide link="/doc/en/alsa-guide.xml">
7 drobbins 1.1 <title>Gentoo Linux ALSA Guide</title>
8 fox2mike 1.51
9 swift 1.20 <author title="Author">
10 fox2mike 1.52 <mail link="fox2mike@gentoo.org">Shyam Mani</mail>
11 erwin 1.26 </author>
12 nightmorph 1.71 <author title="Author">
13     <mail link="nightmorph@gentoo.org">Joshua Saddler</mail>
14     </author>
15     <author title="Contributor">
16     <mail link="flameeyes@gentoo.org">Diego Pettenò</mail>
17     </author>
18 drobbins 1.1
19     <abstract>
20 fox2mike 1.51 This document helps a user setup ALSA on Gentoo Linux.
21 swift 1.20 </abstract>
22 drobbins 1.1
23 fox2mike 1.51 <!-- The content of this document is licensed under the CC-BY-SA license -->
24 fox2mike 1.54 <!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
25 swift 1.25 <license/>
26    
27 nightmorph 1.82 <version>2.24</version>
28     <date>2009-01-26</date>
29 drobbins 1.1
30     <chapter>
31 fox2mike 1.51 <title>Introduction</title>
32 drobbins 1.1 <section>
33 swift 1.20 <title>What is ALSA?</title>
34 drobbins 1.1 <body>
35 swift 1.20
36 drobbins 1.1 <p>
37 nightmorph 1.80 ALSA, which stands for <e>Advanced Linux Sound Architecture</e>, provides
38     audio and MIDI (<e>Musical Instrument Digital Interface</e>) functionality to
39     the Linux operating system. ALSA is the default sound subsystem in the 2.6
40     kernel thereby replacing OSS (<e>Open Sound System</e>), which was used in the
41 fox2mike 1.51 2.4 kernels.
42 drobbins 1.1 </p>
43    
44     <p>
45 nightmorph 1.80 ALSA's main features include efficient support for all types of audio
46     interfaces ranging from consumer sound cards to professional sound
47     equipment, fully modularized drivers, SMP and thread safety, backward
48     compatibility with OSS and a user-space library <c>alsa-lib</c> to make
49 fox2mike 1.51 application development a breeze.
50     </p>
51    
52     </body>
53     </section>
54     <section>
55     <title>ALSA on Gentoo</title>
56     <body>
57    
58     <p>
59 nightmorph 1.81 Historically, Gentoo offered two ways to get ALSA up and running: the
60     <e>in-kernel</e> driver and the external <c>alsa-driver</c> package. The two
61     solutions essentially do the same thing; this made supporting the external
62     package extremely difficult and time-consuming. The Gentoo maintainers decided
63     to discontinue support for the <c>alsa-driver</c> package, concentrating their
64     resources on the ALSA drivers available within the Linux kernel. This guide will
65     focus solely on configuring ALSA via the in-kernel driver.
66     </p>
67    
68     <p>
69     If you still require the <c>alsa-driver</c> package, please email the <mail
70     link="alsa-bugs@gentoo.org">Gentoo ALSA maintainers</mail> with why the
71     in-kernel drivers don't work for you. Be sure to include detailed error logs.
72 drobbins 1.1 </p>
73 swift 1.20
74 drobbins 1.1 </body>
75     </section>
76     </chapter>
77 fox2mike 1.51
78 drobbins 1.1 <chapter>
79 swift 1.35 <title>Installing ALSA</title>
80 fox2mike 1.51 <section id="lspci">
81     <title>Before you proceed</title>
82     <body>
83 swift 1.20
84     <p>
85 nightmorph 1.81 First, you need to know what drivers your sound card uses. In most cases, sound
86     cards (onboard and otherwise) are PCI based and <c>lspci</c> will help you in
87     digging out the required information. Please <c>emerge sys-apps/pciutils</c> to
88     get <c>lspci</c>, if you don't have it installed already. In case you have a USB
89     sound card, <c>lsusb</c> from <c>sys-apps/usbutils</c> <e>might</e> be of help.
90     For ISA cards, try using <c>sys-apps/isapnptools</c>. Also, the following pages
91     <e>may</e> help users with ISA based sound cards:
92 fox2mike 1.54 </p>
93    
94     <ul>
95     <li>
96     <uri link="http://www.roestock.demon.co.uk/isapnptools/">The ISAPNPTOOLS
97     Page</uri>
98     </li>
99     <li>
100     <uri link="http://www2.linuxjournal.com/article/3269">LinuxJournal PnP
101     Article</uri>
102     </li>
103     <li>
104     <uri link="http://www.tldp.org/HOWTO/Sound-HOWTO/x320.html">TLDP Sound
105     HowTo</uri>
106     </li>
107     </ul>
108    
109     <note>
110     For ease of use/explanation, we assume the user has a PCI based sound card for
111     the remainder of this guide.
112     </note>
113    
114     <p>
115     We now proceed to find out details about the sound card.
116 drobbins 1.1 </p>
117 swift 1.20
118 fox2mike 1.51 <pre caption="Soundcard Details">
119     # <i>lspci -v | grep -i audio</i>
120     0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)
121 drobbins 1.1 </pre>
122 swift 1.20
123 drobbins 1.1 <p>
124 nightmorph 1.78 We now know that the sound card on the machine is a Sound Blaster Live! and the
125     card manufacturer is Creative Labs. Head over to the <uri
126     link="http://bugtrack.alsa-project.org/main/index.php/Matrix:Main">ALSA
127 nightmorph 1.80 Soundcard Matrix</uri> page and select Creative Labs from the list. You will
128     be taken to the Creative Labs matrix page where you can see that the SB Live!
129     uses the <c>emu10k1</c> module. That is the information we need for now. If
130     you are interested in detailed information, you can click on the link next to
131 nightmorph 1.78 the "Details" and that will take you to the <c>emu10k1</c> specific page.
132 drobbins 1.1 </p>
133 swift 1.20
134 nightmorph 1.71 <p>
135     If you intend to use MIDI, then you should add <c>midi</c> to your USE flags in
136     <path>/etc/make.conf</path> before emerging any ALSA packages. Later in the
137     guide, we will show you how to set up <uri link="#midi">MIDI support</uri>.
138     </p>
139    
140 fox2mike 1.51 </body>
141     </section>
142     <section id="kernel">
143 nightmorph 1.81 <title>Configuring the kernel</title>
144 fox2mike 1.51 <body>
145    
146     <note>
147 nightmorph 1.79 Since the 2005.0 release, Gentoo Linux uses 2.6 as the default kernel. Please
148     check that your kernel is a 2.6 series kernel. This method will <e>not</e> work
149     on a 2.4 kernel.
150 fox2mike 1.51 </note>
151    
152     <p>
153     Let us now configure the kernel to enable ALSA.
154     </p>
155    
156 fox2mike 1.54 <impo>
157 fox2mike 1.63 <c>genkernel</c> users should now run <c>genkernel --menuconfig all</c> and
158     then follow the instructions in <uri link="#doc_chap2_pre3">Kernel Options for
159     ALSA</uri>.
160 fox2mike 1.54 </impo>
161    
162 fox2mike 1.51 <pre caption="Heading over to the source">
163     # <i>cd /usr/src/linux</i>
164     # <i>make menuconfig</i>
165 erwin 1.26 </pre>
166    
167 fox2mike 1.51 <note>
168     The above example assumes that <path>/usr/src/linux</path> symlink points to
169     the kernel sources you want to use. Please ensure the same before proceeding.
170     </note>
171 neysx 1.46
172 erwin 1.26 <p>
173 fox2mike 1.51 Now we will look at some of the options we will have to enable in the 2.6
174     kernel to ensure proper ALSA support for our sound card.
175 erwin 1.26 </p>
176    
177 fox2mike 1.54 <p>
178 nightmorph 1.80 Please note that for ease of use, all examples show ALSA built as modules. It
179 nightmorph 1.71 is advisable to follow the same as it then allows the use of <c>alsaconf</c>
180 fox2mike 1.63 which is a boon when you want to configure your card. Please do <e>not</e> skip
181     the <uri link="#alsa-config">Configuration</uri> section of this document. If
182     you still like to have options built-in, ensure that you make changes to your
183     config accordingly.
184 fox2mike 1.54 </p>
185 fox2mike 1.51
186     <pre caption="Kernel Options for ALSA">
187     Device Drivers ---&gt;
188     Sound ---&gt;
189    
190     <comment>(This needs to be enabled)</comment>
191     &lt;M&gt; Sound card support
192    
193     <comment>(Make sure OSS is disabled)</comment>
194     Open Sound System ---&gt;
195     &lt; &gt; Open Sound System (DEPRECATED)
196    
197     <comment>(Move one step back and enter ALSA)</comment>
198     Advanced Linux Sound Architecture ---&gt;
199     &lt;M&gt; Advanced Linux Sound Architecture
200     <comment>(Select this if you want MIDI sequencing and routing)</comment>
201     &lt;M&gt; Sequencer support
202     <comment>(Old style /dev/mixer* and /dev/dsp* support. Recommended.)</comment>
203     &lt;M&gt; OSS Mixer API
204     &lt;M&gt; OSS PCM (digital audio) API
205    
206     <comment>(You now have a choice of devices to enable support for. Generally,
207 nightmorph 1.80 you will have one type of device and not more. If you have more than one
208 fox2mike 1.51 sound card, please enable them all here.)</comment>
209    
210 nightmorph 1.80 <comment>(Mostly for testing and development purposes, not needed for normal
211 fox2mike 1.51 users unless you know what you are doing.)</comment>
212     Generic devices ---&gt;
213    
214     <comment>(For ISA Sound cards)</comment>
215     ISA devices ---&gt;
216     <comment>(IF you had the Gravis, you would select this option)</comment>
217     &lt;M&gt; Gravis UltraSound Extreme
218    
219 nightmorph 1.80 <comment>(Move one level back and into PCI devices. Most sound cards today are
220 fox2mike 1.51 PCI devices)</comment>
221     PCI devices ---&gt;
222     <comment>(We now select the emu10k1 driver for our card)</comment>
223     &lt;M&gt; Emu10k1 (SB Live!, Audigy, E-mu APS)
224     <comment>(Or an Intel card would be)</comment>
225     &lt;M&gt; Intel/SiS/nVidia/AMD/ALi AC97 Controller
226     <comment>(Or if you have a VIA Card)</comment>
227     &lt;M&gt; VIA 82C686A/B, 8233/8235 AC97 Controller
228    
229     <comment>(Move one level back and select in case you have an USB sound card)</comment>
230     USB Devices ---&gt;
231 swift 1.35 </pre>
232 swift 1.20
233 fox2mike 1.51 <p>
234     Now that your options are set, you can (re)compile the kernel and ALSA support
235 swift 1.62 for your card should be functional once you reboot into the new kernel. Don't
236     forget to update your GRUB configuration to use the newly built kernel.
237 nightmorph 1.80 You can now proceed to <uri link="#alsa-utilities">ALSA Utilities</uri> and
238 fox2mike 1.51 see if everything is working as it should.
239     </p>
240 swift 1.20
241 drobbins 1.1 </body>
242     </section>
243 swift 1.35 </chapter>
244 fox2mike 1.51
245 swift 1.35 <chapter>
246 fox2mike 1.51 <title>Configuring/Testing ALSA</title>
247     <section id="alsa-utilities">
248     <title>ALSA Utilities</title>
249 drobbins 1.1 <body>
250 swift 1.20
251 drobbins 1.1 <p>
252 nightmorph 1.80 <c>alsa-utils</c> forms an integral part of ALSA as it has a truckload of
253     programs that are highly useful, including the ALSA Initscripts. Hence we
254 fox2mike 1.51 strongly recommend that you install <c>alsa-utils</c>
255 drobbins 1.1 </p>
256 swift 1.12
257 fox2mike 1.51 <pre caption="Install alsa-utils">
258     # <i>emerge alsa-utils</i>
259 drobbins 1.1 </pre>
260 swift 1.20
261 fox2mike 1.51 <note>
262 nightmorph 1.81 If you did <e>not</e> compile ALSA as modules, please proceed to the <uri
263     link="#initscript">ALSA Initscript</uri> section. The rest of you need to
264     configure ALSA. This is made very easy by the existence of the <c>alsaconf</c>
265     tool provided by <c>alsa-utils</c>.
266 fox2mike 1.51 </note>
267    
268     </body>
269     </section>
270     <section id="alsa-config">
271     <title>Configuration</title>
272     <body>
273    
274 nightmorph 1.71 <p>
275     Recent versions of <c>udev</c> (<c>>=udev-103</c>) provide some degree of
276     kernel-level autoconfiguration of your sound card. If possible, try to rely on
277     just letting your kernel automatically setup your sound card for you. Otherwise,
278     use <c>alsaconf</c> to configure your card, as shown below.
279     </p>
280    
281 fox2mike 1.51 <note>
282 nightmorph 1.80 Please shut down any programs that <e>might</e> access the sound card while
283 fox2mike 1.51 running <c>alsaconf</c>.
284     </note>
285    
286 drobbins 1.1 <p>
287 nightmorph 1.80 To configure your sound card just type <c>alsaconf</c> in a shell as root.
288 swift 1.20 </p>
289    
290 fox2mike 1.51 <pre caption="Invoking alsaconf">
291     # <i>alsaconf</i>
292 drobbins 1.1 </pre>
293 swift 1.20
294 fox2mike 1.51 <p>
295 nightmorph 1.80 You will now see a neat menu guided interface that will automatically probe
296     your devices and try to find out your sound card. You will be asked to pick
297     your sound card from a list. Once that's done, it will ask you permission to
298     automatically make required changes to <path>/etc/modules.d/alsa</path>.
299 fox2mike 1.54 It will then adjust your volume settings to optimum levels, run
300 nightmorph 1.76 <c>update-modules</c> and start the <path>/etc/init.d/alsasound</path> service.
301 fox2mike 1.63 Once <c>alsaconf</c> exits, you can proceed with setting up the ALSA
302     initscript.
303 fox2mike 1.51 </p>
304    
305 swift 1.35 </body>
306     </section>
307 fox2mike 1.51 <section id="initscript">
308     <title>ALSA Initscript</title>
309 swift 1.35 <body>
310 swift 1.20
311 drobbins 1.1 <p>
312 nightmorph 1.80 We're now almost all setup. Whichever method you chose to install ALSA, you'll
313     need to have something load your modules or initialize ALSA and restore your
314     volume settings when your system comes up. The ALSA Initscript handles all of
315 neysx 1.56 this for you and is called <c>alsasound</c>. Add it to the boot runlevel.
316 drobbins 1.1 </p>
317 swift 1.20
318 neysx 1.56 <pre caption="Adding ALSA to the boot runlevel">
319 fox2mike 1.54 # <i>rc-update add alsasound boot</i>
320     * alsasound added to runlevel boot
321 fox2mike 1.51 * rc-update complete.
322 drobbins 1.1 </pre>
323 swift 1.20
324 fox2mike 1.51 <p>
325 nightmorph 1.80 Next, just check the <path>/etc/conf.d/alsasound</path> file and ensure that
326     SAVE_ON_STOP variable is set to yes. This saves your sound settings when you
327 fox2mike 1.51 shutdown your system.
328     </p>
329    
330 drobbins 1.1 </body>
331     </section>
332     <section>
333 fox2mike 1.54 <title>Audio Group</title>
334     <body>
335    
336     <p>
337     Before we move on to testing, there's one last <e>important</e> thing that needs
338 nightmorph 1.79 to be setup. Rule of thumb in a *nix OS: Do not run as root unless needed.
339 fox2mike 1.54 This applies here as well ;) How? Well, most of the times you should be logged
340     in as a user and would like to listen to music or access your soundcard. For
341 vanquirius 1.59 that to happen, you need to be in the "audio" group. At this point, we'll add
342 fox2mike 1.54 users to the audio group, so that they won't have any issues when they want to
343     access sound devices. We'll use <c>gpasswd</c> here and you need to be logged in
344     as root for this to work.
345     </p>
346    
347     <pre caption="Adding users to the audio group">
348     <comment>(Substitute &lt;username&gt; with your user)</comment>
349     # <i>gpasswd -a &lt;username&gt; audio </i>
350     Adding user &lt;username&gt; to group audio
351     </pre>
352    
353     </body>
354     </section>
355     <section>
356 fox2mike 1.51 <title>Volume Check!</title>
357 drobbins 1.1 <body>
358 swift 1.20
359 drobbins 1.1 <p>
360 nightmorph 1.80 We've completed all the setups and prerequisites, so let's fire up ALSA. If
361     you ran <c>alsaconf</c>, you can skip this step, since <c>alsaconf</c> already
362 fox2mike 1.51 does this for you.
363 swift 1.20 </p>
364    
365 fox2mike 1.51 <pre caption="Start the service">
366 nightmorph 1.80 # <i>/etc/init.d/alsasound start</i>
367 fox2mike 1.51 </pre>
368    
369     <p>
370 nightmorph 1.80 Now that the required things have been taken care of, we need to check up on
371 fox2mike 1.54 the volume as in certain cases, it is muted. We use <c>alsamixer</c> for this
372     purpose.
373 fox2mike 1.51 </p>
374    
375     <pre caption="Starting alsamixer">
376     <comment>(Opens up a console program. Only required settings are shown)</comment>
377     # <i>alsamixer</i>
378 drobbins 1.1 </pre>
379 swift 1.20
380 fox2mike 1.51 <p>
381 nightmorph 1.80 This is how the ALSA Mixer <e>might</e> look the first time you open it. Pay
382     attention to the Master and PCM channels which both have an MM below them.
383     That means they are muted. If you try to play anything with <c>alsamixer</c>
384 fox2mike 1.51 in this state, you will not hear anything on your speakers.
385     </p>
386    
387     <figure link="/images/docs/alsa-mixermuted.png" short="AlsaMixer Muted" caption="The Alsa Mixer Main Window, Muted"/>
388    
389     <p>
390     Now, we shall unmute the channels, and set volume levels as needed.
391     </p>
392    
393     <warn>
394 fox2mike 1.54 Both Master <e>and</e> PCM need to be unmuted and set to audible volume levels
395     if you want to hear some output on your speakers.
396 fox2mike 1.51 </warn>
397    
398     <ul>
399     <li>
400 nightmorph 1.80 To move between channels, use your left and right arrow keys. (&lt;-
401 fox2mike 1.51 &amp; -&gt;)
402     </li>
403     <li>
404 nightmorph 1.80 To toggle mute, move to the specific channel, for example Master and press
405     the <e>m</e> key on the keyboard.
406 fox2mike 1.51 </li>
407     <li>
408 nightmorph 1.80 To increase and decrease the volume levels, use the up and down arrow keys
409 fox2mike 1.51 respectively.
410     </li>
411     </ul>
412    
413     <note>
414 nightmorph 1.80 Be careful when setting your Bass and Treble values. 50 is usually a good
415     number for both. Extremely high values of Bass may cause <e>jarring</e>
416 fox2mike 1.51 on speakers that are not designed to handle them.
417     </note>
418    
419     <p>
420 nightmorph 1.80 After you're all done, your ALSA Mixer should look similar to the one below.
421     Note the 00 instead of the MM and also the volume levels for some optimum
422 fox2mike 1.51 settings.
423     </p>
424    
425     <figure link="/images/docs/alsa-mixerunmuted.png" short="AlsaMixer Unmuted" caption="Alsa Mixer ready to roll"/>
426    
427 drobbins 1.1 </body>
428     </section>
429     <section>
430 fox2mike 1.51 <title>Sound Check!</title>
431 drobbins 1.1 <body>
432 swift 1.20
433 drobbins 1.1 <p>
434 fox2mike 1.54 Finally. Some music. If everything above is perfect, you should now be able to
435     listen to some good music. A quick way to test is to use a command line tool
436     like <c>media-sound/madplay</c>. You could also use something more well known
437 nightmorph 1.70 like <c>mpg123</c>. If you are an ogg fan, you could use <c>ogg123</c> provided
438     by <c>media-sound/vorbis-tools</c>. Use any player you are comfortable with. As
439     always, <c>emerge</c> what you need.
440 fox2mike 1.51 </p>
441    
442     <pre caption="Getting the software">
443     <comment>(Install the applications you want)</comment>
444 nightmorph 1.70 # <i>emerge madplay mpg123</i>
445 fox2mike 1.51 <comment>(To play .ogg files)</comment>
446     # <i>emerge vorbis-tools</i>
447     </pre>
448    
449     <p>
450     And then play your favorite sound track...
451 drobbins 1.1 </p>
452 swift 1.20
453 fox2mike 1.51 <pre caption="Playing Music">
454     # <i>madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3</i>
455     MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
456     Title: Dread Rock
457     Artist: Paul Oakenfold
458     Album: Matrix Reloaded
459     Year: 2003
460     Genre: Soundtrack
461     Soundtrack
462     00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC
463    
464     # <i>ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg</i>
465     Audio Device: Advanced Linux Sound Architecture (ALSA) output
466    
467     Playing: Paul Oakenfold - Dread Rock.ogg
468     Ogg Vorbis stream: 2 channel, 44100 Hz
469     Genre: Soundtrack
470     Transcoded: mp3;160
471     Title: Dread Rock
472     Artist: Paul Oakenfold
473     Date: 2003
474     Album: Matrix Reloaded
475     Time: 00:11.31 [04:28.75] of 04:40.06 (200.6 kbps) Output Buffer 96.9%
476 drobbins 1.1 </pre>
477 swift 1.20
478 fox2mike 1.51 </body>
479     </section>
480     <section>
481 vanquirius 1.59 <title>ALSA and USE</title>
482 fox2mike 1.54 <body>
483    
484     <p>
485     You can now add the <c>alsa</c> use flag to <path>/etc/make.conf</path> to
486     ensure that your applications that support ALSA get built with it. Some
487     architectures like x86 and amd64 have the flag enabled by default.
488     </p>
489    
490     </body>
491     </section>
492     <section>
493 fox2mike 1.51 <title>Issues?</title>
494     <body>
495    
496 drobbins 1.1 <p>
497 nightmorph 1.80 If for some reason you're unable to hear sound, the first thing to do would
498     be to check your <uri link="#doc_chap3_pre6">alsamixer</uri> settings. 80% of
499     the issues lie with muted channels or low volume. Also check your Window
500 fox2mike 1.51 Manager's sound applet and verify that volumes are set to audible levels.
501 drobbins 1.1 </p>
502 swift 1.20
503 drobbins 1.1 <p>
504 nightmorph 1.80 <path>/proc</path> is your friend. And in this case, <path>/proc/asound</path>
505     is your best friend. We shall just take a short look at how much info is made
506 fox2mike 1.51 available to us there.
507 drobbins 1.1 </p>
508 swift 1.20
509 fox2mike 1.51 <pre caption="Fun with /proc/asound">
510 nightmorph 1.80 <comment>(First and foremost, if /proc/asound/cards shows your card, ALSA has
511 fox2mike 1.51 picked up your sound card fine.)</comment>
512     # <i>cat /proc/asound/cards</i>
513     0 [Live ]: EMU10K1 - Sound Blaster Live!
514     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
515    
516 nightmorph 1.79 <comment>(This displays the current running ALSA version)</comment>
517 fox2mike 1.51 # <i>cat /proc/asound/version</i>
518     Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).
519 cam 1.47
520 fox2mike 1.51 <comment>(ALSA OSS emulation details)</comment>
521     # <i>cat /proc/asound/oss/sndstat</i>
522     Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
523     Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
524     Config options: 0
525    
526     Installed drivers:
527     Type 10: ALSA emulation
528    
529     Card config:
530     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
531    
532     Audio devices:
533     0: EMU10K1 (DUPLEX)
534 neysx 1.46
535 fox2mike 1.51 Synth devices: NOT ENABLED IN CONFIG
536 neysx 1.46
537 fox2mike 1.51 Midi devices:
538     0: EMU10K1 MPU-401 (UART)
539 swift 1.20
540 fox2mike 1.51 Timers:
541     7: system timer
542 neysx 1.46
543 fox2mike 1.51 Mixers:
544     0: SigmaTel STAC9721/23
545     </pre>
546 swift 1.20
547 nightmorph 1.81 <!-- TODO: remove this a few months after alsa-driver leaves the tree -->
548    
549 fox2mike 1.61 <p>
550     The other most common issue users face is the dreaded "Unknown symbol in module"
551     error. An example of the same is shown below.
552     </p>
553    
554     <pre caption="Unknown Symbol in module error">
555     # <i>/etc/init.d/alsasound start</i>
556     * Loading ALSA modules ...
557     * Loading: snd-card-0 ... [ ok ]
558     * Loading: snd-pcm-oss ...
559     WARNING: Error inserting snd_mixer_oss
560     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
561     symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting
562     snd_pcm_oss
563     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
564     symbol in module, or unknown parameter (see dmesg)
565     [ !! ]
566     * Loading: snd-mixer-oss ...
567     FATAL: Error inserting snd_mixer_oss
568     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
569     symbol in module, or unknown parameter (see dmesg)
570     [ !! ]
571     * Loading: snd-seq ... [ ok ]
572     * Loading: snd-emu10k1-synth ... [ ok ]
573     * Loading: snd-seq-midi ... [ ok ]
574     * Restoring Mixer Levels ... [ ok ]
575     </pre>
576    
577     <p>
578     And when you take a look at <c>dmesg</c> as suggested, you're quite likely to
579     see:
580     </p>
581    
582     <pre caption="dmesg output">
583     <comment>(Only relevant portions are shown below)</comment>
584     # <i>dmesg | less</i>
585     ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
586     snd_mixer_oss: Unknown symbol snd_unregister_oss_device
587     snd_mixer_oss: Unknown symbol snd_register_oss_device
588     snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
589     snd_mixer_oss: Unknown symbol snd_oss_info_register
590     snd_pcm_oss: Unknown symbol snd_unregister_oss_device
591     snd_pcm_oss: Unknown symbol snd_register_oss_device
592     snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
593     snd_pcm_oss: Unknown symbol snd_oss_info_register
594     snd_mixer_oss: Unknown symbol snd_unregister_oss_device
595     snd_mixer_oss: Unknown symbol snd_register_oss_device
596     snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
597     snd_mixer_oss: Unknown symbol snd_oss_info_register
598     </pre>
599    
600     <p>
601 nightmorph 1.81 The above issue is caused when you switch from the <c>alsa-driver</c> to in-kernel
602 fox2mike 1.61 ALSA because when you unmerge <c>alsa-driver</c> the module files are config
603     protected and hence get left behind. So, when you switch to in-kernel
604     drivers, running <c>modprobe</c> gives you a mix of <c>alsa-driver</c> and
605     in-kernel modules thus causing the above errors.
606     </p>
607    
608     <p>
609     The solution is quite easy. We just need to manually remove the problem causing
610     directory after you unmerge <c>alsa-driver</c>. Be sure to remove the correct
611     kernel version and not the current one!
612     </p>
613    
614     <pre caption="Removing the alsa-driver modules">
615 rane 1.68 # <i>rm -rf /lib/modules/$(uname -r)/alsa-driver</i>
616 fox2mike 1.61 </pre>
617    
618 fox2mike 1.66 <p>
619     Another reason for error messages similar to the ones above could be a file in
620 neysx 1.67 <path>/etc/modules.d</path> supplying a <c>device_mode</c> parameter when it
621 fox2mike 1.66 isn't required. Confirm that this is indeed the issue and find out which file
622     is the culprit.
623     </p>
624    
625 neysx 1.67 <pre caption="Confirming and searching for device_mode">
626 fox2mike 1.66 <comment>(Check dmesg to confirm)</comment>
627     # <i>dmesg | grep device_mode</i>
628     snd: Unknown parameter `device_mode'
629     <comment>(Now, to get to the source of the issue)</comment>
630     # <i>grep device_mode /etc/modules.d/*</i>
631     </pre>
632    
633     <p>
634     Usually it is a file called <path>alsa</path> with the line <c>options snd
635 nightmorph 1.81 device_mode=0666</c>. Remove this line and restart the <c>alsasound</c> service
636     and that should take care of this issue.
637 fox2mike 1.66 </p>
638    
639 nightmorph 1.81 <!-- End of removal notice -->
640    
641 erwin 1.26 </body>
642     </section>
643     </chapter>
644 fox2mike 1.51
645 erwin 1.26 <chapter>
646 fox2mike 1.51 <title>Other things ALSA</title>
647 nightmorph 1.71 <section id="midi">
648 fox2mike 1.51 <title>Setting up MIDI support</title>
649 erwin 1.26 <body>
650    
651     <p>
652 nightmorph 1.71 First, check to make sure that you enabled the <c>midi</c> USE flag in
653 jkt 1.75 <path>/etc/make.conf</path>. If you didn't, go ahead and add it now. You will
654     also need to re-emerge any ALSA packages that use the <c>midi</c> flag, such as
655 nightmorph 1.81 <c>alsa-lib</c> and <c>alsa-utils</c>.
656 nightmorph 1.71 </p>
657    
658     <p>
659 nightmorph 1.80 If your sound card is one of those that come with on-board MIDI synthesizers
660     and you would like to listen to some .mid files, you have to install
661     <c>awesfx</c> which is basically a set of utilities for controlling the AWE32
662     driver. We need to install it first. If you don't have a hardware synthesizer,
663     you can use a virtual one. Please see the section on
664 fox2mike 1.51 <uri link="#vsynth">Virtual Synthesizers</uri> for more information.
665 erwin 1.26 </p>
666    
667 fox2mike 1.51 <pre caption="Installing awesfx">
668 erwin 1.26 # <i>emerge awesfx</i>
669     </pre>
670    
671 fox2mike 1.51 <note>
672 nightmorph 1.80 You will need to copy over SoundFont (SF2) files from your sound card's driver
673     CD or a Windows installation into <path>/usr/share/sounds/sf2/</path>. For
674 fox2mike 1.51 example a sound font file for the Creative SBLive! card would be 8MBGMSFX.SF2.
675     </note>
676    
677 erwin 1.26 <p>
678 fox2mike 1.51 After copying over the Soundfont files, we can then play a midi file as shown.
679 nightmorph 1.80 You can also add the <c>asfxload</c> command to
680     <path>/etc/conf.d/local.start</path>, so that the sound font is loaded
681 fox2mike 1.51 every time the system starts up.
682 erwin 1.26 </p>
683    
684 fox2mike 1.51 <note>
685 nightmorph 1.80 <path>/mnt</path> paths mentioned in the code listing(s) below will <e>not</e>
686     be the same in your machine. They are just an example. Please be careful to
687 fox2mike 1.51 change the path to suit your machine.
688     </note>
689 erwin 1.26
690 fox2mike 1.51 <pre caption="Loading Soundfonts">
691     <comment>(First, copy the Soundfont)</comment>
692 fox2mike 1.61 # <i>cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
693     <comment>(Or get it from your SoundBlaster CD)</comment>
694     # <i>cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
695 fox2mike 1.51 <comment>(We load the specific Soundfont)</comment>
696     # <i>asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2</i>
697 erwin 1.26 </pre>
698    
699 swift 1.35 <p>
700 nightmorph 1.80 You can now play midi files using a program like <c>aplaymidi</c>. Run
701     <c>aplaymidi -l</c> to get a list of available ports and then pick one
702 fox2mike 1.51 to play the file on.
703 swift 1.35 </p>
704 erwin 1.26
705 fox2mike 1.51 <pre caption="Playing MIDI">
706     <comment>(Check open ports)</comment>
707     # <i>aplaymidi -l</i>
708     Port Client name Port name
709     64:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)
710     65:0 Emu10k1 WaveTable Emu10k1 Port 0
711     65:1 Emu10k1 WaveTable Emu10k1 Port 1
712     65:2 Emu10k1 WaveTable Emu10k1 Port 2
713     65:3 Emu10k1 WaveTable Emu10k1 Port 3
714     <comment>(Pick a port, and play a mid file)</comment>
715     # <i> aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid</i>
716     </pre>
717 swift 1.32
718 erwin 1.26 </body>
719     </section>
720 fox2mike 1.51 <section id="vsynth">
721     <title>Virtual Synthesizers</title>
722 erwin 1.26 <body>
723    
724     <p>
725 fox2mike 1.51 If your sound card lacks a hardware synthesizer, you could use a virtual one
726     like <c>timidity++</c>. Installation is a breeze.
727 erwin 1.26 </p>
728    
729 fox2mike 1.51 <pre caption="Installing timidity++">
730 erwin 1.26 # <i>emerge timidity++</i>
731     </pre>
732    
733     <p>
734 nightmorph 1.71 For timidity to play sounds, it needs a sound font. Fortunately, the ebuild will
735     install some sound font packages for you. There are a few other font packages
736     available in Portage, such as <c>timidity-freepats</c> and
737     <c>timidity-eawpatches</c>. You can have multiple sound font configurations
738 nightmorph 1.80 installed, and you can place your own in <path>/usr/share/timidity/</path>. To
739 nightmorph 1.73 switch between different timidity configurations, you should use
740     <c>eselect</c>.
741 cam 1.33 </p>
742    
743 nightmorph 1.71 <pre caption="Changing configurations">
744     # <i>eselect timidity list</i>
745     # <i>eselect timidity set eawpatches</i>
746 cam 1.33 </pre>
747    
748     <p>
749 swift 1.35 Don't forget to add <c>timidity</c> to the default runlevel.
750 erwin 1.26 </p>
751    
752 swift 1.35 <pre caption="Adding timidity to the default runlevel">
753 erwin 1.26 # <i>rc-update add timidity default</i>
754     # <i>/etc/init.d/timidity start</i>
755     </pre>
756    
757 drobbins 1.1 <p>
758 fox2mike 1.51 You can now try out <uri link="#doc_chap4_pre3">Playing MIDI</uri> files.
759 erwin 1.26 </p>
760    
761 drobbins 1.1 </body>
762     </section>
763     <section>
764 swift 1.35 <title>Tools and Firmware</title>
765 drobbins 1.1 <body>
766 swift 1.20
767     <p>
768 swift 1.35 Some specific sound cards can benefit from certain tools provided by the
769 nightmorph 1.71 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. You may install either with
770     a simple <c>emerge</c>.
771     </p>
772    
773     <pre caption="Installing ALSA Tools">
774     # <i>emerge alsa-tools</i>
775     </pre>
776    
777     </body>
778     </section>
779     <section>
780     <title>Multiple sound cards</title>
781     <body>
782    
783     <p>
784 nightmorph 1.74 You can have more than one sound card in your system simultaneously, provided
785 nightmorph 1.81 that you have built ALSA as modules in your kernel. You just need to specify
786     which should be started first in <path>/etc/modules.d/alsa</path>. Your cards
787     are identified by their driver names inside this file. 0 is the first card, 1 is
788     the second, and so on. Here's an example for a system with two sound cards.
789 nightmorph 1.71 </p>
790    
791     <pre caption="Two sound cards in /etc/modules.d/alsa">
792     options snd-emu10k1 index=0
793     options snd-via82xx index=1
794     </pre>
795    
796     <p>
797     Or, if you have two cards that use the same driver, you specify them on the same
798     line, using comma-separated numbers. Here's an example for a system with three
799     sound cards, two of which are the same Intel High Definition Audio card.
800 swift 1.20 </p>
801    
802 nightmorph 1.71 <pre caption="Multiple sound cards in /etc/modules.d/alsa">
803     options snd-ymfpci index=0
804     options snd-hda-intel index=1,2
805 drobbins 1.1 </pre>
806 swift 1.20
807 nightmorph 1.71 </body>
808     </section>
809     <section>
810     <title>Plugins</title>
811     <body>
812    
813 erwin 1.26 <p>
814 nightmorph 1.71 You may want to install some plugins for extra functionality.
815     <c>alsa-plugins</c> is a collection of useful plugins, which include: PulseAudio
816     output, a sample rate converter, jack (a low-latency audio server), and an
817     encoder that lets you output 6-channel audio through digital S/PDIF connections
818     (both optical and coaxial). You can choose which of its plugins you want
819     installed by adding their USE flags to <path>/etc/portage/package.use</path>.
820 erwin 1.26 </p>
821    
822 nightmorph 1.71 <pre caption="Installing alsa-plugins">
823     # <i>emerge -avt alsa-plugins</i>
824 erwin 1.26 </pre>
825    
826     </body>
827     </section>
828     <section>
829 nightmorph 1.71 <title>A big thank you to...</title>
830 swift 1.21 <body>
831    
832     <p>
833 fox2mike 1.51 Everyone who contributed to the earlier version of the Gentoo ALSA Guide:
834 nightmorph 1.80 Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston,
835 fox2mike 1.51 John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft and Erwin.
836 swift 1.21 </p>
837    
838 swift 1.17 </body>
839     </section>
840 drobbins 1.1 <section>
841 fox2mike 1.51 <title>References</title>
842 drobbins 1.1 <body>
843 swift 1.20
844 drobbins 1.1 <ul>
845 fox2mike 1.51 <li><uri link="http://www.alsa-project.org/">The ALSA Project</uri></li>
846 swift 1.35 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
847 drobbins 1.1 </ul>
848 swift 1.20
849 drobbins 1.1 </body>
850     </section>
851     </chapter>
852     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20