/[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.81 - (hide annotations) (download) (as text)
Wed Mar 5 09:16:49 2008 UTC (6 years, 6 months ago) by nightmorph
Branch: MAIN
Changes since 1.80: +40 -220 lines
File MIME type: application/xml
removed alsa-driver steps from the guide, per bug 183418, bug 207427 and other showstopper/regression bugs, and requests from the alsa & kernel teams. no one maintains or wants to maintain alsa-driver. it is the weakest link.

1 fox2mike 1.51 <?xml version='1.0' encoding="UTF-8"?>
2 nightmorph 1.81 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/alsa-guide.xml,v 1.80 2007/05/19 03:00:29 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.81 <version>2.23</version>
28     <date>2008-03-05</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.54 <impo>
381     If you have issues starting up <c>alsamixer</c> and get errors such as
382     alsamixer: function snd_ctl_open failed for default: No such file or directory,
383 alin 1.58 this is usually an issue with udev setting up the devices. Run <c>killall
384     udevd; udevstart</c> to reload <path>/dev</path> entries and fire up
385     <c>alsamixer</c>. It should solve the issue.
386 fox2mike 1.54 </impo>
387    
388 fox2mike 1.51 <p>
389 nightmorph 1.80 This is how the ALSA Mixer <e>might</e> look the first time you open it. Pay
390     attention to the Master and PCM channels which both have an MM below them.
391     That means they are muted. If you try to play anything with <c>alsamixer</c>
392 fox2mike 1.51 in this state, you will not hear anything on your speakers.
393     </p>
394    
395     <figure link="/images/docs/alsa-mixermuted.png" short="AlsaMixer Muted" caption="The Alsa Mixer Main Window, Muted"/>
396    
397     <p>
398     Now, we shall unmute the channels, and set volume levels as needed.
399     </p>
400    
401     <warn>
402 fox2mike 1.54 Both Master <e>and</e> PCM need to be unmuted and set to audible volume levels
403     if you want to hear some output on your speakers.
404 fox2mike 1.51 </warn>
405    
406     <ul>
407     <li>
408 nightmorph 1.80 To move between channels, use your left and right arrow keys. (&lt;-
409 fox2mike 1.51 &amp; -&gt;)
410     </li>
411     <li>
412 nightmorph 1.80 To toggle mute, move to the specific channel, for example Master and press
413     the <e>m</e> key on the keyboard.
414 fox2mike 1.51 </li>
415     <li>
416 nightmorph 1.80 To increase and decrease the volume levels, use the up and down arrow keys
417 fox2mike 1.51 respectively.
418     </li>
419     </ul>
420    
421     <note>
422 nightmorph 1.80 Be careful when setting your Bass and Treble values. 50 is usually a good
423     number for both. Extremely high values of Bass may cause <e>jarring</e>
424 fox2mike 1.51 on speakers that are not designed to handle them.
425     </note>
426    
427     <p>
428 nightmorph 1.80 After you're all done, your ALSA Mixer should look similar to the one below.
429     Note the 00 instead of the MM and also the volume levels for some optimum
430 fox2mike 1.51 settings.
431     </p>
432    
433     <figure link="/images/docs/alsa-mixerunmuted.png" short="AlsaMixer Unmuted" caption="Alsa Mixer ready to roll"/>
434    
435 drobbins 1.1 </body>
436     </section>
437     <section>
438 fox2mike 1.51 <title>Sound Check!</title>
439 drobbins 1.1 <body>
440 swift 1.20
441 drobbins 1.1 <p>
442 fox2mike 1.54 Finally. Some music. If everything above is perfect, you should now be able to
443     listen to some good music. A quick way to test is to use a command line tool
444     like <c>media-sound/madplay</c>. You could also use something more well known
445 nightmorph 1.70 like <c>mpg123</c>. If you are an ogg fan, you could use <c>ogg123</c> provided
446     by <c>media-sound/vorbis-tools</c>. Use any player you are comfortable with. As
447     always, <c>emerge</c> what you need.
448 fox2mike 1.51 </p>
449    
450     <pre caption="Getting the software">
451     <comment>(Install the applications you want)</comment>
452 nightmorph 1.70 # <i>emerge madplay mpg123</i>
453 fox2mike 1.51 <comment>(To play .ogg files)</comment>
454     # <i>emerge vorbis-tools</i>
455     </pre>
456    
457     <p>
458     And then play your favorite sound track...
459 drobbins 1.1 </p>
460 swift 1.20
461 fox2mike 1.51 <pre caption="Playing Music">
462     # <i>madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3</i>
463     MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
464     Title: Dread Rock
465     Artist: Paul Oakenfold
466     Album: Matrix Reloaded
467     Year: 2003
468     Genre: Soundtrack
469     Soundtrack
470     00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC
471    
472     # <i>ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg</i>
473     Audio Device: Advanced Linux Sound Architecture (ALSA) output
474    
475     Playing: Paul Oakenfold - Dread Rock.ogg
476     Ogg Vorbis stream: 2 channel, 44100 Hz
477     Genre: Soundtrack
478     Transcoded: mp3;160
479     Title: Dread Rock
480     Artist: Paul Oakenfold
481     Date: 2003
482     Album: Matrix Reloaded
483     Time: 00:11.31 [04:28.75] of 04:40.06 (200.6 kbps) Output Buffer 96.9%
484 drobbins 1.1 </pre>
485 swift 1.20
486 fox2mike 1.51 </body>
487     </section>
488     <section>
489 vanquirius 1.59 <title>ALSA and USE</title>
490 fox2mike 1.54 <body>
491    
492     <p>
493     You can now add the <c>alsa</c> use flag to <path>/etc/make.conf</path> to
494     ensure that your applications that support ALSA get built with it. Some
495     architectures like x86 and amd64 have the flag enabled by default.
496     </p>
497    
498     </body>
499     </section>
500     <section>
501 fox2mike 1.51 <title>Issues?</title>
502     <body>
503    
504 drobbins 1.1 <p>
505 nightmorph 1.80 If for some reason you're unable to hear sound, the first thing to do would
506     be to check your <uri link="#doc_chap3_pre6">alsamixer</uri> settings. 80% of
507     the issues lie with muted channels or low volume. Also check your Window
508 fox2mike 1.51 Manager's sound applet and verify that volumes are set to audible levels.
509 drobbins 1.1 </p>
510 swift 1.20
511 drobbins 1.1 <p>
512 nightmorph 1.80 <path>/proc</path> is your friend. And in this case, <path>/proc/asound</path>
513     is your best friend. We shall just take a short look at how much info is made
514 fox2mike 1.51 available to us there.
515 drobbins 1.1 </p>
516 swift 1.20
517 fox2mike 1.51 <pre caption="Fun with /proc/asound">
518 nightmorph 1.80 <comment>(First and foremost, if /proc/asound/cards shows your card, ALSA has
519 fox2mike 1.51 picked up your sound card fine.)</comment>
520     # <i>cat /proc/asound/cards</i>
521     0 [Live ]: EMU10K1 - Sound Blaster Live!
522     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
523    
524 nightmorph 1.79 <comment>(This displays the current running ALSA version)</comment>
525 fox2mike 1.51 # <i>cat /proc/asound/version</i>
526     Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).
527 cam 1.47
528 fox2mike 1.51 <comment>(ALSA OSS emulation details)</comment>
529     # <i>cat /proc/asound/oss/sndstat</i>
530     Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
531     Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
532     Config options: 0
533    
534     Installed drivers:
535     Type 10: ALSA emulation
536    
537     Card config:
538     Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
539    
540     Audio devices:
541     0: EMU10K1 (DUPLEX)
542 neysx 1.46
543 fox2mike 1.51 Synth devices: NOT ENABLED IN CONFIG
544 neysx 1.46
545 fox2mike 1.51 Midi devices:
546     0: EMU10K1 MPU-401 (UART)
547 swift 1.20
548 fox2mike 1.51 Timers:
549     7: system timer
550 neysx 1.46
551 fox2mike 1.51 Mixers:
552     0: SigmaTel STAC9721/23
553     </pre>
554 swift 1.20
555 nightmorph 1.81 <!-- TODO: remove this a few months after alsa-driver leaves the tree -->
556    
557 fox2mike 1.61 <p>
558     The other most common issue users face is the dreaded "Unknown symbol in module"
559     error. An example of the same is shown below.
560     </p>
561    
562     <pre caption="Unknown Symbol in module error">
563     # <i>/etc/init.d/alsasound start</i>
564     * Loading ALSA modules ...
565     * Loading: snd-card-0 ... [ ok ]
566     * Loading: snd-pcm-oss ...
567     WARNING: 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) FATAL: Error inserting
570     snd_pcm_oss
571     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
572     symbol in module, or unknown parameter (see dmesg)
573     [ !! ]
574     * Loading: snd-mixer-oss ...
575     FATAL: Error inserting snd_mixer_oss
576     (/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
577     symbol in module, or unknown parameter (see dmesg)
578     [ !! ]
579     * Loading: snd-seq ... [ ok ]
580     * Loading: snd-emu10k1-synth ... [ ok ]
581     * Loading: snd-seq-midi ... [ ok ]
582     * Restoring Mixer Levels ... [ ok ]
583     </pre>
584    
585     <p>
586     And when you take a look at <c>dmesg</c> as suggested, you're quite likely to
587     see:
588     </p>
589    
590     <pre caption="dmesg output">
591     <comment>(Only relevant portions are shown below)</comment>
592     # <i>dmesg | less</i>
593     ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
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     snd_pcm_oss: Unknown symbol snd_unregister_oss_device
599     snd_pcm_oss: Unknown symbol snd_register_oss_device
600     snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
601     snd_pcm_oss: Unknown symbol snd_oss_info_register
602     snd_mixer_oss: Unknown symbol snd_unregister_oss_device
603     snd_mixer_oss: Unknown symbol snd_register_oss_device
604     snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
605     snd_mixer_oss: Unknown symbol snd_oss_info_register
606     </pre>
607    
608     <p>
609 nightmorph 1.81 The above issue is caused when you switch from the <c>alsa-driver</c> to in-kernel
610 fox2mike 1.61 ALSA because when you unmerge <c>alsa-driver</c> the module files are config
611     protected and hence get left behind. So, when you switch to in-kernel
612     drivers, running <c>modprobe</c> gives you a mix of <c>alsa-driver</c> and
613     in-kernel modules thus causing the above errors.
614     </p>
615    
616     <p>
617     The solution is quite easy. We just need to manually remove the problem causing
618     directory after you unmerge <c>alsa-driver</c>. Be sure to remove the correct
619     kernel version and not the current one!
620     </p>
621    
622     <pre caption="Removing the alsa-driver modules">
623 rane 1.68 # <i>rm -rf /lib/modules/$(uname -r)/alsa-driver</i>
624 fox2mike 1.61 </pre>
625    
626 fox2mike 1.66 <p>
627     Another reason for error messages similar to the ones above could be a file in
628 neysx 1.67 <path>/etc/modules.d</path> supplying a <c>device_mode</c> parameter when it
629 fox2mike 1.66 isn't required. Confirm that this is indeed the issue and find out which file
630     is the culprit.
631     </p>
632    
633 neysx 1.67 <pre caption="Confirming and searching for device_mode">
634 fox2mike 1.66 <comment>(Check dmesg to confirm)</comment>
635     # <i>dmesg | grep device_mode</i>
636     snd: Unknown parameter `device_mode'
637     <comment>(Now, to get to the source of the issue)</comment>
638     # <i>grep device_mode /etc/modules.d/*</i>
639     </pre>
640    
641     <p>
642     Usually it is a file called <path>alsa</path> with the line <c>options snd
643 nightmorph 1.81 device_mode=0666</c>. Remove this line and restart the <c>alsasound</c> service
644     and that should take care of this issue.
645 fox2mike 1.66 </p>
646    
647 nightmorph 1.81 <!-- End of removal notice -->
648    
649 erwin 1.26 </body>
650     </section>
651     </chapter>
652 fox2mike 1.51
653 erwin 1.26 <chapter>
654 fox2mike 1.51 <title>Other things ALSA</title>
655 nightmorph 1.71 <section id="midi">
656 fox2mike 1.51 <title>Setting up MIDI support</title>
657 erwin 1.26 <body>
658    
659     <p>
660 nightmorph 1.71 First, check to make sure that you enabled the <c>midi</c> USE flag in
661 jkt 1.75 <path>/etc/make.conf</path>. If you didn't, go ahead and add it now. You will
662     also need to re-emerge any ALSA packages that use the <c>midi</c> flag, such as
663 nightmorph 1.81 <c>alsa-lib</c> and <c>alsa-utils</c>.
664 nightmorph 1.71 </p>
665    
666     <p>
667 nightmorph 1.80 If your sound card is one of those that come with on-board MIDI synthesizers
668     and you would like to listen to some .mid files, you have to install
669     <c>awesfx</c> which is basically a set of utilities for controlling the AWE32
670     driver. We need to install it first. If you don't have a hardware synthesizer,
671     you can use a virtual one. Please see the section on
672 fox2mike 1.51 <uri link="#vsynth">Virtual Synthesizers</uri> for more information.
673 erwin 1.26 </p>
674    
675 fox2mike 1.51 <pre caption="Installing awesfx">
676 erwin 1.26 # <i>emerge awesfx</i>
677     </pre>
678    
679 fox2mike 1.51 <note>
680 nightmorph 1.80 You will need to copy over SoundFont (SF2) files from your sound card's driver
681     CD or a Windows installation into <path>/usr/share/sounds/sf2/</path>. For
682 fox2mike 1.51 example a sound font file for the Creative SBLive! card would be 8MBGMSFX.SF2.
683     </note>
684    
685 erwin 1.26 <p>
686 fox2mike 1.51 After copying over the Soundfont files, we can then play a midi file as shown.
687 nightmorph 1.80 You can also add the <c>asfxload</c> command to
688     <path>/etc/conf.d/local.start</path>, so that the sound font is loaded
689 fox2mike 1.51 every time the system starts up.
690 erwin 1.26 </p>
691    
692 fox2mike 1.51 <note>
693 nightmorph 1.80 <path>/mnt</path> paths mentioned in the code listing(s) below will <e>not</e>
694     be the same in your machine. They are just an example. Please be careful to
695 fox2mike 1.51 change the path to suit your machine.
696     </note>
697 erwin 1.26
698 fox2mike 1.51 <pre caption="Loading Soundfonts">
699     <comment>(First, copy the Soundfont)</comment>
700 fox2mike 1.61 # <i>cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
701     <comment>(Or get it from your SoundBlaster CD)</comment>
702     # <i>cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/</i>
703 fox2mike 1.51 <comment>(We load the specific Soundfont)</comment>
704     # <i>asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2</i>
705 erwin 1.26 </pre>
706    
707 swift 1.35 <p>
708 nightmorph 1.80 You can now play midi files using a program like <c>aplaymidi</c>. Run
709     <c>aplaymidi -l</c> to get a list of available ports and then pick one
710 fox2mike 1.51 to play the file on.
711 swift 1.35 </p>
712 erwin 1.26
713 fox2mike 1.51 <pre caption="Playing MIDI">
714     <comment>(Check open ports)</comment>
715     # <i>aplaymidi -l</i>
716     Port Client name Port name
717     64:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)
718     65:0 Emu10k1 WaveTable Emu10k1 Port 0
719     65:1 Emu10k1 WaveTable Emu10k1 Port 1
720     65:2 Emu10k1 WaveTable Emu10k1 Port 2
721     65:3 Emu10k1 WaveTable Emu10k1 Port 3
722     <comment>(Pick a port, and play a mid file)</comment>
723     # <i> aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid</i>
724     </pre>
725 swift 1.32
726 erwin 1.26 </body>
727     </section>
728 fox2mike 1.51 <section id="vsynth">
729     <title>Virtual Synthesizers</title>
730 erwin 1.26 <body>
731    
732     <p>
733 fox2mike 1.51 If your sound card lacks a hardware synthesizer, you could use a virtual one
734     like <c>timidity++</c>. Installation is a breeze.
735 erwin 1.26 </p>
736    
737 fox2mike 1.51 <pre caption="Installing timidity++">
738 erwin 1.26 # <i>emerge timidity++</i>
739     </pre>
740    
741     <p>
742 nightmorph 1.71 For timidity to play sounds, it needs a sound font. Fortunately, the ebuild will
743     install some sound font packages for you. There are a few other font packages
744     available in Portage, such as <c>timidity-freepats</c> and
745     <c>timidity-eawpatches</c>. You can have multiple sound font configurations
746 nightmorph 1.80 installed, and you can place your own in <path>/usr/share/timidity/</path>. To
747 nightmorph 1.73 switch between different timidity configurations, you should use
748     <c>eselect</c>.
749 cam 1.33 </p>
750    
751 nightmorph 1.71 <pre caption="Changing configurations">
752     # <i>eselect timidity list</i>
753     # <i>eselect timidity set eawpatches</i>
754 cam 1.33 </pre>
755    
756     <p>
757 swift 1.35 Don't forget to add <c>timidity</c> to the default runlevel.
758 erwin 1.26 </p>
759    
760 swift 1.35 <pre caption="Adding timidity to the default runlevel">
761 erwin 1.26 # <i>rc-update add timidity default</i>
762     # <i>/etc/init.d/timidity start</i>
763     </pre>
764    
765 drobbins 1.1 <p>
766 fox2mike 1.51 You can now try out <uri link="#doc_chap4_pre3">Playing MIDI</uri> files.
767 erwin 1.26 </p>
768    
769 drobbins 1.1 </body>
770     </section>
771     <section>
772 swift 1.35 <title>Tools and Firmware</title>
773 drobbins 1.1 <body>
774 swift 1.20
775     <p>
776 swift 1.35 Some specific sound cards can benefit from certain tools provided by the
777 nightmorph 1.71 <c>alsa-tools</c> and <c>alsa-firmware</c> packages. You may install either with
778     a simple <c>emerge</c>.
779     </p>
780    
781     <pre caption="Installing ALSA Tools">
782     # <i>emerge alsa-tools</i>
783     </pre>
784    
785     </body>
786     </section>
787     <section>
788     <title>Multiple sound cards</title>
789     <body>
790    
791     <p>
792 nightmorph 1.74 You can have more than one sound card in your system simultaneously, provided
793 nightmorph 1.81 that you have built ALSA as modules in your kernel. You just need to specify
794     which should be started first in <path>/etc/modules.d/alsa</path>. Your cards
795     are identified by their driver names inside this file. 0 is the first card, 1 is
796     the second, and so on. Here's an example for a system with two sound cards.
797 nightmorph 1.71 </p>
798    
799     <pre caption="Two sound cards in /etc/modules.d/alsa">
800     options snd-emu10k1 index=0
801     options snd-via82xx index=1
802     </pre>
803    
804     <p>
805     Or, if you have two cards that use the same driver, you specify them on the same
806     line, using comma-separated numbers. Here's an example for a system with three
807     sound cards, two of which are the same Intel High Definition Audio card.
808 swift 1.20 </p>
809    
810 nightmorph 1.71 <pre caption="Multiple sound cards in /etc/modules.d/alsa">
811     options snd-ymfpci index=0
812     options snd-hda-intel index=1,2
813 drobbins 1.1 </pre>
814 swift 1.20
815 nightmorph 1.71 </body>
816     </section>
817     <section>
818     <title>Plugins</title>
819     <body>
820    
821 erwin 1.26 <p>
822 nightmorph 1.71 You may want to install some plugins for extra functionality.
823     <c>alsa-plugins</c> is a collection of useful plugins, which include: PulseAudio
824     output, a sample rate converter, jack (a low-latency audio server), and an
825     encoder that lets you output 6-channel audio through digital S/PDIF connections
826     (both optical and coaxial). You can choose which of its plugins you want
827     installed by adding their USE flags to <path>/etc/portage/package.use</path>.
828 erwin 1.26 </p>
829    
830 nightmorph 1.71 <pre caption="Installing alsa-plugins">
831     # <i>emerge -avt alsa-plugins</i>
832 erwin 1.26 </pre>
833    
834     </body>
835     </section>
836     <section>
837 nightmorph 1.71 <title>A big thank you to...</title>
838 swift 1.21 <body>
839    
840     <p>
841 fox2mike 1.51 Everyone who contributed to the earlier version of the Gentoo ALSA Guide:
842 nightmorph 1.80 Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston,
843 fox2mike 1.51 John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft and Erwin.
844 swift 1.21 </p>
845    
846 swift 1.17 </body>
847     </section>
848 drobbins 1.1 <section>
849 fox2mike 1.51 <title>References</title>
850 drobbins 1.1 <body>
851 swift 1.20
852 drobbins 1.1 <ul>
853 fox2mike 1.51 <li><uri link="http://www.alsa-project.org/">The ALSA Project</uri></li>
854 swift 1.35 <li><uri link="http://linux-sound.org">Linux Sound/MIDI Software</uri></li>
855 drobbins 1.1 </ul>
856 swift 1.20
857 drobbins 1.1 </body>
858     </section>
859     </chapter>
860     </guide>

  ViewVC Help
Powered by ViewVC 1.1.20