/[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.89 - (hide annotations) (download) (as text)
Sat Feb 23 18:20:55 2013 UTC (18 months ago) by swift
Branch: MAIN
Changes since 1.88: +4 -10 lines
File MIME type: application/xml
Fix bug #454394 - Update guide to remove 2.6-only references (doc was originally written for 2.4 and 2.6 kernels)

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

  ViewVC Help
Powered by ViewVC 1.1.20