/[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.88 - (hide annotations) (download) (as text)
Tue Jul 24 12:12:51 2012 UTC (23 months, 2 weeks ago) by swift
Branch: MAIN
Changes since 1.87: +6 -6 lines
File MIME type: application/xml
Fix bug #427860 - Use /etc/portage for make.conf and make.profile. Old location (/etc) is still supported, this is a heads up (new default)

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

  ViewVC Help
Powered by ViewVC 1.1.20