1975 lines
67 KiB
Plaintext
1975 lines
67 KiB
Plaintext
|
Alsa-sound-mini-HOWTO
|
|||
|
Valentijn Sessink valentyn@alsa-project.org
|
|||
|
v2.0-pre1, 12 November 1999
|
|||
|
|
|||
|
Describes the installation of the ALSA sound drivers for Linux. These
|
|||
|
sound drivers can be used as a replacement for the regular sound
|
|||
|
drivers, as they are fully compatible.
|
|||
|
______________________________________________________________________
|
|||
|
|
|||
|
Table of Contents
|
|||
|
|
|||
|
|
|||
|
|
|||
|
1. Introduction
|
|||
|
|
|||
|
1.1 Acknowledgments
|
|||
|
1.2 Revision History
|
|||
|
1.3 New versions of this document
|
|||
|
1.4 Feedback
|
|||
|
1.5 Distribution Policy
|
|||
|
|
|||
|
2. NOWTO - a quick install guide
|
|||
|
|
|||
|
2.1 Installing ALSA for kernels 2.2.x
|
|||
|
2.2 Playing and recording sound
|
|||
|
2.3 Installing ALSA for 2.0.x
|
|||
|
2.4 Playing and recording sound
|
|||
|
|
|||
|
3. Before you start
|
|||
|
|
|||
|
3.1 Introduction
|
|||
|
3.2 General information about the ALSA drivers
|
|||
|
3.3 Supported hardware
|
|||
|
3.4 Other HOWTO's
|
|||
|
3.4.1 Sound cards
|
|||
|
3.4.2 Plug and Play cards
|
|||
|
3.4.3 Loadable modules
|
|||
|
3.4.4 Kerneld
|
|||
|
|
|||
|
4. How to install ALSA sound drivers
|
|||
|
|
|||
|
4.1 What you need
|
|||
|
4.2 Getting the drivers
|
|||
|
4.3 ALSA versions
|
|||
|
4.4 Extracting
|
|||
|
4.5 Compiling
|
|||
|
4.6 Preparing the devices
|
|||
|
|
|||
|
5. Loading the driver
|
|||
|
|
|||
|
5.1 Inserting with modprobe
|
|||
|
5.2 Which module for which card?
|
|||
|
5.2.1 Gravis UltraSound Extreme
|
|||
|
5.2.2 Gravis UltraSound MAX
|
|||
|
5.2.3 ESS AudioDrive
|
|||
|
5.2.4 ESS AudioDrive 18xx
|
|||
|
5.2.5 Gravis UltraSound PnP
|
|||
|
5.2.6 UltraSound 32-Pro
|
|||
|
5.2.7 Soundblaster
|
|||
|
5.2.8 Soundblaster 16
|
|||
|
5.2.9 OAK Mozart
|
|||
|
5.2.10 OPTi 82C9xx
|
|||
|
5.2.11 AD1847/48 and CS4248
|
|||
|
5.2.12 Yamaha OPL3-SA2/SA3 soundcards
|
|||
|
5.2.13 S3 SonicVibes
|
|||
|
5.2.14 Ensoniq/Soundblaster PCI64
|
|||
|
5.2.15 CS4231
|
|||
|
5.2.16 CS4232/4232A
|
|||
|
5.2.17 4235 and higher
|
|||
|
5.2.18 4610/4612/4615 and 4680
|
|||
|
5.2.19 ESS Solo 1
|
|||
|
5.2.20 Trident 4DWave DX/NX
|
|||
|
5.2.21 ForteMedia FM801
|
|||
|
5.3 modprobe for drivers without auto-probing
|
|||
|
5.3.1 OPL3-SA2 and OPL3-SA3
|
|||
|
5.3.2 CS4231 chips
|
|||
|
5.3.3 CS4232/CS4232A chips
|
|||
|
5.3.4 CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 chips
|
|||
|
5.4 The kerneld approach
|
|||
|
5.5 Backwards compatibility
|
|||
|
|
|||
|
6. Testing and using
|
|||
|
|
|||
|
6.1 The /proc filesystem
|
|||
|
6.2 The mixer
|
|||
|
6.2.1 Mixer settings for playing
|
|||
|
6.2.2 Mixer parts
|
|||
|
6.2.3 Mixer settings for recording
|
|||
|
6.2.4 Other mixer settings
|
|||
|
6.3 The /dev/snd/ devices
|
|||
|
6.4 Additional information
|
|||
|
6.4.1 /proc/asound/#/pcm#0
|
|||
|
6.4.2 /proc/asound/#card#/sb16
|
|||
|
|
|||
|
7. Tips and Troubleshooting
|
|||
|
|
|||
|
7.1 Compiling the driver
|
|||
|
7.1.1 Linux kernel sourcetree
|
|||
|
7.1.2 Cannot create executables
|
|||
|
7.2 Loading the driver
|
|||
|
7.2.1 Sound devices
|
|||
|
7.2.2 Sound card compatibility
|
|||
|
7.2.3 ``Device busy'' or ``unresolved symbols''
|
|||
|
7.2.3.1 2.0 kernels
|
|||
|
7.2.3.2 2.2 kernels
|
|||
|
7.2.4 References to other drivers
|
|||
|
7.2.5 Unresolved symbols revisited
|
|||
|
7.2.6 Check the PnP setup
|
|||
|
7.2.7 Are your parameters right ?
|
|||
|
7.3 Driver loaded... but no (or hardly any) sound
|
|||
|
7.3.1 Unmuting
|
|||
|
7.3.2 Gain
|
|||
|
7.3.3 OSS/Linux compatibility
|
|||
|
7.3.4 Cannot open mixer
|
|||
|
7.4 General suggestions
|
|||
|
7.4.1 Try using ``insmod''
|
|||
|
7.4.2 Read the INSTALL file.
|
|||
|
7.4.3 Debug messages
|
|||
|
7.4.4 If all else fails...
|
|||
|
7.5 Bug reports
|
|||
|
7.6 Tip: playing CD's
|
|||
|
7.7 Tip: installing the MIDI serial driver
|
|||
|
7.8 Tip: new kernel? New modules!
|
|||
|
7.9 Tip: KDE and ALSA drivers
|
|||
|
7.10 Tip: use the ALSA devices
|
|||
|
7.11 Tip: removing all modules
|
|||
|
|
|||
|
|
|||
|
______________________________________________________________________
|
|||
|
|
|||
|
1. Introduction
|
|||
|
|
|||
|
This is the ALSA Sound drivers mini-HOWTO. It gives you information
|
|||
|
about installing and using the ALSA sound drivers for your soundcard.
|
|||
|
The ALSA drivers are fully modularized sound drivers that support
|
|||
|
kerneld and kmod. They are compatible with, but surpass the
|
|||
|
possibilities of, the current OSS API. In other words: compatible, but
|
|||
|
better.
|
|||
|
|
|||
|
1.1. Acknowledgments
|
|||
|
|
|||
|
This documents contains information I got from the ALSA driver page.
|
|||
|
The structure was ripped off the SB-mini-HOWTO, mainly because it had
|
|||
|
about the structure I was looking for. Thanks to the SGML Tools
|
|||
|
package, this HOWTO is available in several formats, all generated
|
|||
|
from a common source file. Thanks to Erik Warmelink for proof reading,
|
|||
|
thanks to Alfred Munnikes for a couple of questions and helpful
|
|||
|
suggestions. Yamahata Isaku thanks for the Japanese translation,
|
|||
|
Miodrag Vallat for the translation in French. Later on, Steve Crowder
|
|||
|
did a great job by reading and editing the whole text. Thanks to
|
|||
|
Cserna Zsolt for the Hungarian translation and Marco Meloni for the
|
|||
|
Italian one. Thanks to Mohamed Ismail Mohamed-Ibrahim who sent me a
|
|||
|
document about the Trident 4DWave DX/NX soundcard with a lot of useful
|
|||
|
information, thanks to Gerard Haagh who sent me a lot of useful
|
|||
|
information and who also pointed out a few unclear sections.
|
|||
|
|
|||
|
Thanks to Marc-Aur`ele Darche, Piotr Ingling, Juergen Kahrs, Tim
|
|||
|
Pearce, Patrick Stoddard, Rutger de Graaf, Shuly Wintner, Jyrki
|
|||
|
Saarela, Jonas Lofwander, Kumar Sankaran and many others for useful
|
|||
|
tips and additions.
|
|||
|
|
|||
|
1.2. Revision History
|
|||
|
|
|||
|
Version 2.0-pre1 - November 12, 1999. Updating a couple of sections to
|
|||
|
ALSA 0.4.1e., added various links.
|
|||
|
|
|||
|
Version 1.7 - July 29, 1999. A few fixes.
|
|||
|
|
|||
|
Version 1.6 - July 26, 1999. Added a section about ALSA-versions
|
|||
|
|
|||
|
Version 1.5 - May 21, 1999. Changed the mixer section, added a quick
|
|||
|
install section
|
|||
|
|
|||
|
Version 1.4 - May 18, 1999. Included the URL to the French version,
|
|||
|
changed more URLs.
|
|||
|
|
|||
|
Version 1.3 - May 16, 1999. Thanks to Jaroslav this HOWTO has found a
|
|||
|
home at the ALSA-project website. As a result of that, some updates
|
|||
|
in mail and web addresses.
|
|||
|
|
|||
|
Version 1.2 - May 11, 1999. Several updates.
|
|||
|
|
|||
|
Version 1.1 - March 11, 1999. Added a couple of sound cards from the
|
|||
|
new 0.3 series drivers, wrote a bit about the 2.2 series kernel.
|
|||
|
|
|||
|
Version 1.0 - February 8, 1999. Added a few things to the
|
|||
|
troubleshooting section, but we seem fairly complete.
|
|||
|
|
|||
|
Version 0.3 beta - January 20, 1999. A link on the ALSA-homepage. Ha,
|
|||
|
we're official!
|
|||
|
|
|||
|
Version 0.2 alpha - Mid January 1999, first .sgml-version.
|
|||
|
|
|||
|
Version 0.1 alpha - January 1999, first version, mostly HTML.
|
|||
|
|
|||
|
Still: please submit any patches in plain English, you native
|
|||
|
speakers!
|
|||
|
|
|||
|
There are a couple of additions that need to be added to the HOWTO
|
|||
|
now. Notably, Mohamed Ismail Mohamed-Ibrahim and Gerard Haagh wrote
|
|||
|
wonderful additions to the HOWTO, that will keep me off my regular
|
|||
|
work for some more time. So this is 2.0-pre1 and more pre's are to
|
|||
|
follow.
|
|||
|
|
|||
|
|
|||
|
1.3. New versions of this document
|
|||
|
|
|||
|
The latest version can be found at http://www.alsa-
|
|||
|
project.org./~valentyn
|
|||
|
|
|||
|
|
|||
|
Other formats (full size html, sgml, txt) are in the directory other-
|
|||
|
formats. Unfortunately, I have not succeeded in compiling a Postscript
|
|||
|
version, as the sgml2latex-script returns a bunch of errors.
|
|||
|
|
|||
|
Yamahata Isaku has translated a Japanese version, which will be
|
|||
|
available at the Japanese ALSA site,
|
|||
|
http://plaza21.mbn.or.jp/~momokuri/alsa/index.html
|
|||
|
|
|||
|
Miodrag Vallat translated a French version, which is available at
|
|||
|
http://www.freenix.fr/unix/linux/HOWTO/mini/Alsa.html.
|
|||
|
|
|||
|
Cserna Zsolt has translated the Hungarian version of the ALSA-HOWTO.
|
|||
|
You can find it at http://kib4.vein.hu/~zsolt/alsa.html.
|
|||
|
|
|||
|
Marco Meloni did an Italian version, you can get it at
|
|||
|
http://pluto.linux.it/ildp/index.html.
|
|||
|
|
|||
|
If you make a translation of this document into another language, let
|
|||
|
me know and I'll include a reference to it here. Ook een Nederlandse
|
|||
|
versie is welkom, ik heb zelf geen tijd om deze te schrijven. Leve de
|
|||
|
koningin!
|
|||
|
|
|||
|
1.4. Feedback
|
|||
|
|
|||
|
I rely on you, the reader, to make this HOWTO useful. If you have any
|
|||
|
suggestions, corrections or comments, please send them to me (alsa-
|
|||
|
howto@alsa-project.org), and I will try to incorporate them in the
|
|||
|
next revision.
|
|||
|
|
|||
|
Please note: I do not get a lot of mail about the ALSA drivers and any
|
|||
|
addition is welcome. Even a ``thank you for'' is appreciated - maybe
|
|||
|
it's not too much work to add a ``I appreciated most'' or ``this-or-
|
|||
|
that was not immediately clear to me''-section.
|
|||
|
|
|||
|
If you publish this document on a CD-ROM or in hardcopy form, a
|
|||
|
complimentary copy would be appreciated. Mail me for my postal
|
|||
|
address. Also consider making a donation to the Linux Documentation
|
|||
|
Project to help support free documentation for Linux. Contact the
|
|||
|
Linux HOWTO co-ordinator, Tim Bynum linux-howto@metalab.unc.edu, for
|
|||
|
more information.
|
|||
|
|
|||
|
1.5. Distribution Policy
|
|||
|
|
|||
|
Copyright 1998/1999 Valentijn Sessink
|
|||
|
|
|||
|
This HOWTO is free documentation; you can redistribute it and/or
|
|||
|
modify it under the terms of the GNU General Public License as
|
|||
|
published by the Free Software Foundation; either version 2 of the
|
|||
|
License, or (at your option) any later version.
|
|||
|
|
|||
|
This document is distributed in the hope that it will be useful, but
|
|||
|
without any warranty; without even the implied warranty of
|
|||
|
merchantability or fitness for a particular purpose. See the GNU
|
|||
|
General Public License for more details.
|
|||
|
|
|||
|
You can obtain a copy of the GNU General Public License by writing to
|
|||
|
the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
|
|||
|
USA.
|
|||
|
|
|||
|
|
|||
|
2. NOWTO - a quick install guide
|
|||
|
|
|||
|
If you want sound and you want it NOW! and not after reading this
|
|||
|
HOWTO, this quick tour through the ALSA driver installation might be
|
|||
|
of help. Please note: there are a couple of differences between the
|
|||
|
ALSA versions that support 2.0 kernels and those that support 2.2
|
|||
|
kernels.
|
|||
|
|
|||
|
2.1. Installing ALSA for kernels 2.2.x
|
|||
|
|
|||
|
You will probably want to use the ALSA 0.4.1e (or later) version if
|
|||
|
your kernel is 2.2.x. If your kernel is older, please use 0.3.0-pre4
|
|||
|
and see below.
|
|||
|
|
|||
|
Just the all time ``./configure - make - make install'' stuff. Do this
|
|||
|
for drivers, library and utilities. You need all three because the
|
|||
|
utilities help you to unmute your card. Kernels 2.2.x need to have
|
|||
|
general sound support in the kernel (without choosing a specific
|
|||
|
card).
|
|||
|
|
|||
|
The ALSA drivers have their own devices, you can make them usinge the
|
|||
|
./snddevices script.
|
|||
|
|
|||
|
You need to load the module for your card (or use kmod) and if you
|
|||
|
want sound to be backwards compatible with the Linux kernel sound
|
|||
|
drivers (yes you want this) you need two other modules called snd-
|
|||
|
pcm1-oss and snd-mixer-oss. See the section ``Which module for which
|
|||
|
card'' to find out which module to load. After loading, you can look
|
|||
|
in /proc/asound for various information about the ALSA drivers.
|
|||
|
|
|||
|
2.2. Playing and recording sound
|
|||
|
|
|||
|
A few remarks. ALSA has it's own devices in /dev/snd, for example
|
|||
|
/dev/snd/pcmC0D1 is Card 0, Device 1. You can use the old /dev/pcmXY
|
|||
|
devices if you loaded snd-pcm1-oss for backwards compatibility. You'll
|
|||
|
also want to use /dev/mixer, so load snd-mixer-oss as well. Before you
|
|||
|
can play any sound, you need to unmute the card with ``amixer''. Type
|
|||
|
``amixer groups'', then try something like
|
|||
|
|
|||
|
amixer set PCM 100 unmute
|
|||
|
|
|||
|
Generally you can use options ``mute'' or ``unmute'', ``capture'' or
|
|||
|
``nocapture'' and numbers.
|
|||
|
|
|||
|
That's it! Now if it works, it works. If it doesn't work, you may need
|
|||
|
to actually read this HOWTO...
|
|||
|
|
|||
|
|
|||
|
2.3. Installing ALSA for 2.0.x
|
|||
|
|
|||
|
The ALSA drivers versions 0.3.0, 0.3.1 and 0.3.2 have various problems
|
|||
|
due to the restructuring of the mixer interface. Later versions do not
|
|||
|
support kernel 2.0.x, so you definately will want to use version
|
|||
|
0.3.0-pre4 if you have a 2.0 version kernel.
|
|||
|
|
|||
|
Just the all time ``./configure - make - make install'' stuff. Do this
|
|||
|
for drivers, library and utilities. You need all three because the
|
|||
|
utilities help you to unmute your card. Kernels 2.0.x need to have all
|
|||
|
sound support disabled in the kernel setup
|
|||
|
|
|||
|
The ALSA drivers have their own devices, you can make them usinge the
|
|||
|
./snddevices script.
|
|||
|
|
|||
|
You need to load the module for your card (or use kmod) and if you
|
|||
|
want sound to be backwards compatible with the Linux kernel sound
|
|||
|
drivers (yes you want this) you need another modules called snd-
|
|||
|
pcm1-oss. See the section ``Which module for which card'' to find out
|
|||
|
which module to load. After loading, you can look in /proc/asound for
|
|||
|
various information about the ALSA drivers.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2.4. Playing and recording sound
|
|||
|
|
|||
|
A few remarks. ALSA has it's own devices in /dev/snd, for example
|
|||
|
/dev/snd/pcmC0D1 is Card 0, Device 1. You can use the old /dev/pcmXY
|
|||
|
devices if you loaded snd-pcm1-oss for backwards compatibility. Before
|
|||
|
you can play any sound, you need to unmute the card with ``amixer''.
|
|||
|
Type ``amixer'', then try something like
|
|||
|
|
|||
|
amixer pcm 100 unmute
|
|||
|
|
|||
|
Generally you can use options ``mute'' or ``unmute'', ``rec'' or
|
|||
|
``norec'', numbers or left:right.
|
|||
|
|
|||
|
That's it! Now if it works, it works. If it doesn't work, you may need
|
|||
|
to actually read this HOWTO...
|
|||
|
|
|||
|
3. Before you start
|
|||
|
|
|||
|
|
|||
|
|
|||
|
3.1. Introduction
|
|||
|
|
|||
|
This document tries to help you install and use the ALSA sound drivers
|
|||
|
in your Linux system. The reference system is a Slackware 4.0
|
|||
|
distribution of Linux on an AMD/K6 computer (x86 compatible), but it
|
|||
|
should work with any other Linux distribution. I do not know if the
|
|||
|
ALSA drivers work on other platforms, according to the documentation,
|
|||
|
Alpha has been tested and proven to work. I have only x86 PC's here,
|
|||
|
so any additional information you may have would be appreciated.
|
|||
|
|
|||
|
It might be handy to read the Linux Sound HOWTO (see section Other
|
|||
|
HOWTO's), but that HOWTO focuses on the built-in kernel drivers.
|
|||
|
|
|||
|
3.2. General information about the ALSA drivers
|
|||
|
|
|||
|
The ALSA sound driver was originally written as a replacement for the
|
|||
|
Linux kernel sound for Gravis UltraSound (GUS) cards. As this GUS
|
|||
|
replacement proved to be a success, the author started the ALSA
|
|||
|
project for a generic driver for several sound chips, with fully
|
|||
|
modularized design.
|
|||
|
|
|||
|
It is compatible with the OSS/Free and OSS/Linux sound drivers (the
|
|||
|
drivers in the kernel), but has its own interface that is even better
|
|||
|
than the OSS drivers. A list of features can be found at
|
|||
|
http://www.alsa-project.org/intro.html
|
|||
|
|
|||
|
Please note that the ALSA drivers are still under development. Things
|
|||
|
may change over time, and some programs that rely on ALSA only work
|
|||
|
under specific versions of it. Apart from that: I think they're great.
|
|||
|
I use ALSA for 10 months now and will never go back to the dark ages
|
|||
|
of closed source sound drivers - hint ;)
|
|||
|
|
|||
|
The main page of the ALSA project is http://www.alsa-project.org/
|
|||
|
|
|||
|
|
|||
|
3.3. Supported hardware
|
|||
|
|
|||
|
The ALSA drivers support only a subset of all sound cards available.
|
|||
|
As the time of writing, the following cards are supported.
|
|||
|
|
|||
|
<20> Cards with a Trident 4D Wave DX/NX chipset, thanks to Trident
|
|||
|
Microsystems who offered ALSA ``first cut'' GPL'd drivers (MIXER
|
|||
|
and PCM devices only) and documentation for their 4D Wave PCI audio
|
|||
|
chipsets. See
|
|||
|
http://www.tridentmicro.com/HTML/products%20folder/audio.htm for
|
|||
|
more information.
|
|||
|
Cards using this chipset include: Best Union Miss Melody 4DWave
|
|||
|
PCI, HIS 4DWave PCI, Warpspeed ONSpeed 4DWave PCI, AzTech PCI
|
|||
|
64-Q3D, Addonics SV 750, CHIC True Sound 4Dwave, Shark
|
|||
|
Predator4D-PCI and Jaton SonicWave 4D.
|
|||
|
|
|||
|
<20> Gravis Ultrasound (GUS): ``PnP'', Extreme, Classic/ACE, MAX
|
|||
|
|
|||
|
<20> Cards with a GUS chipset: Dynasonic 3-D, STB Sound Rage 32,
|
|||
|
UltraSound 32-Pro (STB), ExpertColor MED3201 and others with AMD
|
|||
|
InterWave(TM) chip, notably some STB cards by Compaq
|
|||
|
|
|||
|
<20> Soundblaster: 1.0, 2.0, Pro, 16, AWE32/64, PCI64
|
|||
|
|
|||
|
<20> ESS AudioDrive ESx688
|
|||
|
|
|||
|
<20> ESS ES968 chip based cards (PnP only).
|
|||
|
|
|||
|
<20> ESS ES18xx (chipsets). Please note that I personally experienced a
|
|||
|
lot of trouble with the ESS1888. The developer of the driver for
|
|||
|
this card did his best, but to no avail.
|
|||
|
|
|||
|
<20> ESS Solo-1 ES1938 and ES1946. Only one of the two channels works,
|
|||
|
which means that recording is not possible. The author of the
|
|||
|
ES1938 code ``is aware of the problem and is currently
|
|||
|
investigating it''.
|
|||
|
|
|||
|
<20> Yamaha: OPL3-SA2, OPL3-SA3 (chipsets)
|
|||
|
|
|||
|
<20> OAK Mozart
|
|||
|
|
|||
|
<20> Schubert 32 PCI (PINE, S3 SonicVibes PCI chipset)
|
|||
|
|
|||
|
<20> Ensoniq AudioPCI ES1370/1371 PCI soundcards (Soundblaster PCI64)
|
|||
|
|
|||
|
<20> SonicVibes PCI soundcards (PINE Schubert 32 PCI)
|
|||
|
|
|||
|
<20> ForteMedia FM801 based cards (in 0.3.2)
|
|||
|
|
|||
|
<20> OPTi 82C9xx chipset based soundcards
|
|||
|
|
|||
|
<20> AD1847, AD1848 and CS4248 chipset based cards
|
|||
|
|
|||
|
<20> AZT2320 chip based soundcards (PnP only).
|
|||
|
|
|||
|
<20> Advance Logic ALS100/ALS120 based cards
|
|||
|
|
|||
|
<20> C-Media CMI8330 based cards
|
|||
|
|
|||
|
Then a whole lot of Crystal Semiconductors-based sound boards are
|
|||
|
supported. These chips can be found in a lot of hardware, in
|
|||
|
separate cards (some Philips PCA series) and on motherboards (e.g.
|
|||
|
IBM Aptiva, Dell computers). Boards based on the following chipsets
|
|||
|
are supported:
|
|||
|
|
|||
|
<20> 4231
|
|||
|
|
|||
|
<20> 4232
|
|||
|
|
|||
|
<20> 4232A
|
|||
|
|
|||
|
<20> 4235
|
|||
|
|
|||
|
<20> 4236B
|
|||
|
|
|||
|
<20> 4237B
|
|||
|
|
|||
|
<20> 4238B
|
|||
|
|
|||
|
<20> 4239
|
|||
|
|
|||
|
<20> 4280
|
|||
|
|
|||
|
<20> 4610
|
|||
|
|
|||
|
<20> 4612
|
|||
|
|
|||
|
<20> 4614
|
|||
|
|
|||
|
<20> 4615
|
|||
|
|
|||
|
<20> 4680
|
|||
|
|
|||
|
The best thing is: ALSA now supports computers without a soundcard
|
|||
|
to produce video! This is done with a dummy driver, that tricks
|
|||
|
programs like Realplayer into thinking that there is a sound card
|
|||
|
available.
|
|||
|
|
|||
|
A more recent list may be found inside the driver package itself, that
|
|||
|
is in doc/SOUNDCARDS
|
|||
|
|
|||
|
3.4. Other HOWTO's
|
|||
|
|
|||
|
This ALSA-sound-mini-HOWTO is just mini - although it seems to grow
|
|||
|
fast. Other HOWTO's may help you out in case this one is too terse. I
|
|||
|
will name a few things you may come across while trying to install the
|
|||
|
ALSA drivers. HOWTO's can generally, be found at mirrors of Metalab
|
|||
|
(the former Sunsite). So take a look at
|
|||
|
http://metalab.unc.edu/LDP/mirrors.html and pick out your closest
|
|||
|
mirror site. You can find HOWTO's in the directory LDP/HOWTO/. Please
|
|||
|
note: the links in this document will all be relative to
|
|||
|
/LDP/HOWTO/mini. If you look at this document from a reasonably good
|
|||
|
mirror site, you will find the HOWTO's.
|
|||
|
|
|||
|
Then a note for the 2.2.x kernel series. For the 2.2.x kernel series,
|
|||
|
sound support is like any other support: it works, but it is different
|
|||
|
from what you used to do. This HOWTO (like any other HOWTO) will from
|
|||
|
version 2.0pre1 concentrate on the 2.2 series kernel, although I'll
|
|||
|
try to point out the differences.
|
|||
|
|
|||
|
3.4.1. Sound cards
|
|||
|
|
|||
|
Perhaps you bought a sound card already, or maybe it has been
|
|||
|
installed in your computer for ages. And now you are going to use it!
|
|||
|
Have a look at the Sound-HOWTO to see if this is all worth the
|
|||
|
trouble. (You might want to buy this new Mega-Rumble-Blaster first,
|
|||
|
then try the ALSA drivers.)
|
|||
|
|
|||
|
3.4.2. Plug and Play cards
|
|||
|
|
|||
|
Most modern sound cards for the Intel platform are ISA PnP cards,
|
|||
|
which is an abbreviation for ''Plug and Play''. This means, that the
|
|||
|
card has to be configured by the operation system. This has to be done
|
|||
|
through an initialization routine at boot time. You probably need to
|
|||
|
configure your card with the PnP-utils-package. Every recent Linux
|
|||
|
distribution includes these tools. For usage have a look at the Plug-
|
|||
|
and-Play-HOWTO
|
|||
|
|
|||
|
The ALSA-drivers seem to have built in their own ISA-PnP-support for a
|
|||
|
couple of sound cards. Unfortunately, as I cannot find documentation
|
|||
|
about this, I cannot tell you how it works. If anyone out there wants
|
|||
|
to try ALSA sound support while deliberately not using the ISA-PnP-
|
|||
|
tools, please drop me a line.
|
|||
|
3.4.3. Loadable modules
|
|||
|
|
|||
|
The ALSA sound drivers are built as modules. You can find more
|
|||
|
information about modules in the Kernel-HOWTO. There is also a
|
|||
|
module-HOWTO, but that is unmaintained at the moment; take a look at
|
|||
|
the umaintained section of the Howto-HOWTO. There is a Modules-mini-
|
|||
|
HOWTO though that may be useful.
|
|||
|
|
|||
|
3.4.4. Kerneld
|
|||
|
|
|||
|
Another HOWTO that will be useful for some, is the Kerneld-mini-HOWTO.
|
|||
|
Kerneld is a daemon that installs and removes kernel modules as
|
|||
|
needed. (I have zero experience with it, so additional information on
|
|||
|
the topic is welcome. The ALSA driver documentation contains some
|
|||
|
information about configuration of the kerneld, this has been included
|
|||
|
in this mini-HOWTO.)
|
|||
|
|
|||
|
As the kernel module loader is included in kernel 2.2.x, things have
|
|||
|
changed. But as I am one of those guys that rather modprobes something
|
|||
|
than have some daemon handle it, I have no info on this.
|
|||
|
|
|||
|
|
|||
|
4. How to install ALSA sound drivers
|
|||
|
|
|||
|
|
|||
|
|
|||
|
4.1. What you need
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<20> a functional Linux system (e.g. the Slackware distribution), with
|
|||
|
the "Development" packages installed (i.e. gcc, make etc.)
|
|||
|
|
|||
|
<20> some knowledge about Linux (meaning you know how to use "ls", "cd",
|
|||
|
"tar" etc.)
|
|||
|
|
|||
|
<20> a root-account
|
|||
|
|
|||
|
The great thing is: you don't need a supported sound card anymore,
|
|||
|
as ALSA now has a dummy driver that does nothing! (No, it really
|
|||
|
does nothing, but some programs will work now that they believe
|
|||
|
there is a sound card available).
|
|||
|
|
|||
|
If you have a PnP card, you will also need:
|
|||
|
|
|||
|
<20> the isapnptools software package.
|
|||
|
|
|||
|
The INSTALL text in the driver directory suggests that for some
|
|||
|
cards, PnP support is native. I also received a suggestion from
|
|||
|
Jaroslav about this. When I get further information about this
|
|||
|
topic I will add it to this mini-HOWTO.
|
|||
|
|
|||
|
Please note that you should not have any sound drivers active when you
|
|||
|
want to use the ALSA drivers. If you have a kernel with sound drivers
|
|||
|
compiled in, you'll need a kernel recompilation. If you have the old
|
|||
|
"sound.o" module active, you need to deactivate it. If you use
|
|||
|
kerneld, this probably means deleting sound.o from the
|
|||
|
/lib/modules/<kernel_version>/misc directory. Newer RedHat systems
|
|||
|
have a different sound approach, with several sound modules active.
|
|||
|
You need to deactivate them all.
|
|||
|
|
|||
|
The 2.2 series kernel has a new approach to sound. You should include
|
|||
|
sound support here ! Yep, that's right: you add sound support to the
|
|||
|
kernel, but do not include any sound card. Then compile and install
|
|||
|
the kernel and after that, compile the ALSA-drivers.
|
|||
|
|
|||
|
4.2. Getting the drivers
|
|||
|
|
|||
|
The ALSA drivers are available from ftp://ftp.alsa-project.org/pub/
|
|||
|
and there are mirrors at
|
|||
|
|
|||
|
<20> US: ftp://ftp.silug.org/pub/alsa
|
|||
|
|
|||
|
<20> US: ftp://ftp.eecs.umich.edu/pub/linux/alsa
|
|||
|
|
|||
|
<20> Netherlands: ftp://linux.a2000.nl/alsa
|
|||
|
|
|||
|
<20> Poland: ftp://ftp.task.gda.pl/pub/linux/misc/alsa
|
|||
|
|
|||
|
<20> Germany: ftp://ftp.tu-clausthal.de/pub/linux/alsa
|
|||
|
|
|||
|
<20> Slovakia: ftp://ftp.phacka.sk/pub/alsa
|
|||
|
|
|||
|
<20> Australia: ftp://ftp.suburbia.com.au/pub/alsa
|
|||
|
|
|||
|
For a fully functional ALSA-installation, you will need the driver,
|
|||
|
the libs and the utilities; e.g if you chose the A2000 mirror you
|
|||
|
would get ftp://linux.a2000.nl/alsa/driver/alsa-driver-0.4.1e.tar.gz,
|
|||
|
ftp://linux.a2000.nl/alsa/lib/alsa-lib-0.4.1d.tar.gz and
|
|||
|
ftp://linux.a2000.nl/alsa/utils/alsa-utils-0.4.1.tar.gz
|
|||
|
|
|||
|
|
|||
|
4.3. ALSA versions
|
|||
|
|
|||
|
The ALSA drivers have come a long way. Development started during the
|
|||
|
2.0 version kernel, then the 2.2 series showed up (with their own
|
|||
|
sound kernel).
|
|||
|
|
|||
|
As the 0.4 versions work perfectly for me, I think it is safe to use
|
|||
|
0.4.1e (or newer, if you want). If you have a 2.0.x kernel, you will
|
|||
|
definately not want to use 0.3.0 or later. Instead, use alsa-
|
|||
|
driver-0.3.0-pre4, alsa-lib-0.3.0-pre4 and alsa-utils-0.3.0-pre3.
|
|||
|
|
|||
|
The older versions, 0.2.0-pre10p3 and older do work under 2.0.x, but I
|
|||
|
cannot get them to work under 2.2.x (probably due to the lack of
|
|||
|
interfacing with the soundcore module of the kernel).
|
|||
|
|
|||
|
|
|||
|
4.4. Extracting
|
|||
|
|
|||
|
You extract the drivers by some reasonable command, like the all-time
|
|||
|
tar -zxf <file>. Most likely you would do that in the /usr/src
|
|||
|
directory, so you need root priviliges for this. Type ``su'' and then
|
|||
|
the root password to become root. But please note: it is unwise to use
|
|||
|
your system as the ``root'' user if it is not necessary. So:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
cd /usr/src
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tar -zxf ~/alsa-driver-0.4.1e.tar.gz
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tar -zxf ~/alsa-lib-0.4.1d.tar.gz
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tar -zxf ~/alsa-utils-0.4.1.tar.gz
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Also working and more fun: find ~ -name alsa* -exec tar -zxf {} \;
|
|||
|
(Don't try this at home kids, it's just an example). Note that when
|
|||
|
downloading the drivers with Netscape, you may accidentally get
|
|||
|
unpacked drivers with a ".tgz" extension. If tar complains about the
|
|||
|
file format, you may get better results by leaving off the "z" in the
|
|||
|
tar options.
|
|||
|
|
|||
|
4.5. Compiling
|
|||
|
|
|||
|
You need the drivers before you can compile and use the libs. You need
|
|||
|
the libs before you can compile or use the utils. So let's begin:
|
|||
|
|
|||
|
|
|||
|
cd alsa-driver-0.4.1e
|
|||
|
|
|||
|
|
|||
|
|
|||
|
(and for those not so experienced: try typing a <tab> (the "tab"-key)
|
|||
|
after "alsa-d". That's called command line completion.)
|
|||
|
|
|||
|
|
|||
|
./configure
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If you want to use the built-in PnP interfacing, you should use
|
|||
|
|
|||
|
|
|||
|
./configure --with-isapnp=yes
|
|||
|
|
|||
|
|
|||
|
|
|||
|
make
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Now you need to be 'root' to install the stuff (you probably were
|
|||
|
"root" already)
|
|||
|
|
|||
|
|
|||
|
make install
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If this tells you that something like ``version.h'' cannot be found,
|
|||
|
then you probably do not have a proper kernel source tree. You need a
|
|||
|
couple of files of your kernel source to be able to compile the ALSA-
|
|||
|
drivers. Unpack your favorite linux-2.x.y.tar.gz in /usr/src, and
|
|||
|
issue a make menuconfig. (Actually, make symlinks may be enough). Now
|
|||
|
compile the libraries:
|
|||
|
|
|||
|
|
|||
|
cd ../alsa-lib-0.4.1d
|
|||
|
|
|||
|
|
|||
|
|
|||
|
./configure
|
|||
|
|
|||
|
|
|||
|
|
|||
|
make
|
|||
|
|
|||
|
|
|||
|
|
|||
|
make install
|
|||
|
|
|||
|
|
|||
|
|
|||
|
OK, you're getting it, the utilities:
|
|||
|
|
|||
|
|
|||
|
cd ../alsa-utils-0.4.1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
./configure
|
|||
|
|
|||
|
|
|||
|
|
|||
|
make
|
|||
|
|
|||
|
|
|||
|
|
|||
|
make install
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Note: you can leave out the "make install" for the utilities at first.
|
|||
|
You could even leave out the whole library-making and utility-making,
|
|||
|
just to check if the driver works.
|
|||
|
|
|||
|
|
|||
|
4.6. Preparing the devices
|
|||
|
|
|||
|
There is a script in the driver-directory that will install the ALSA-
|
|||
|
sound-devices in your /dev directory. Type
|
|||
|
|
|||
|
|
|||
|
./snddevices
|
|||
|
|
|||
|
|
|||
|
|
|||
|
from the driver-directory. There should be a /dev/snd subdirectory now
|
|||
|
(test if it is there. If you are not familiar with even the "ls" com<6F>
|
|||
|
mand, please consider reading other HOWTO's first. You should have
|
|||
|
some basic Linux knowledge to install these drivers).
|
|||
|
|
|||
|
Now you're ready to insert the driver, so please turn over to the next
|
|||
|
paragraph.
|
|||
|
|
|||
|
5. Loading the driver
|
|||
|
|
|||
|
There are two ways to use the ALSA-sound-modules. I personally prefer
|
|||
|
using the manual method, meaning that I insert the driver at startup.
|
|||
|
The ALSA-drivers were designed as loadable/unloadable modules - for
|
|||
|
instance they do not reset the mixer after loading - so you can easily
|
|||
|
use the kerneld approach.
|
|||
|
|
|||
|
Please do read the section ``Backwards Compatibility''. You need it
|
|||
|
to have sound support ``the old way''.
|
|||
|
|
|||
|
5.1. Inserting with modprobe
|
|||
|
|
|||
|
Note: If you have a PnP audio-card, you first need to set it to the
|
|||
|
right (or at least some known) IO/IRQ/DMA. See the Plug-and-Play-
|
|||
|
HOWTO. Did you configure your Plug-and-Play-soundcard? Ok, then read
|
|||
|
on please. The main part is: do a "modprobe snd-card-<soundcard>".
|
|||
|
This should do the trick. Please note that not all distributions do
|
|||
|
include /sbin in your path. If you get a "bash: modprobe: command not
|
|||
|
found", this will most likely mean that modprobe is not in your path.
|
|||
|
Try ``/sbin/modprobe snd-card-sb16'', or try to find the modprobe
|
|||
|
utility elsewhere.
|
|||
|
|
|||
|
The most important difficulty is with the Crystal chipsets, for these
|
|||
|
the ALSA-drivers are not auto probing. More recent information may be
|
|||
|
acquired from the INSTALL file in the driver-directory. Two examples,
|
|||
|
then a list: Gravis UltraSound (GUS) and compatibles:
|
|||
|
|
|||
|
|
|||
|
/sbin/modprobe snd-card-gusclassic
|
|||
|
|
|||
|
|
|||
|
|
|||
|
For all 16-bit Soundblaster-cards (SoundBlaster 16 (PnP), SoundBlaster
|
|||
|
AWE 32 (PnP), SoundBlaster AWE 64 (PnP):
|
|||
|
|
|||
|
|
|||
|
/sbin/modprobe snd-card-sb16
|
|||
|
|
|||
|
|
|||
|
|
|||
|
However, if you have a 0.3.0-pre4 package, the GUS Classic driver is
|
|||
|
called ``snd-gusclassic'' and the SoundBlaster 16 module is called
|
|||
|
``snd-sb16'' (so, without the ``card'' part).
|
|||
|
|
|||
|
5.2. Which module for which card?
|
|||
|
|
|||
|
Please note that ALSA versions before 0.4.x sometimes had different
|
|||
|
names. You need to leave out the ``card'' part for those drivers. This
|
|||
|
is indicated by an asterisk (*).
|
|||
|
|
|||
|
|
|||
|
5.2.1. Gravis UltraSound Extreme``(*)''
|
|||
|
|
|||
|
|
|||
|
modprobe snd-card-gusextreme
|
|||
|
|
|||
|
5.2.2. Gravis UltraSound MAX``(*)''
|
|||
|
|
|||
|
|
|||
|
modprobe snd-card-gusmax
|
|||
|
|
|||
|
|
|||
|
5.2.3. ESS AudioDrive``(*)''
|
|||
|
|
|||
|
ESS AudioDrive ES-1688 and ES-688 soundcards
|
|||
|
|
|||
|
modprobe snd-card-audiodrive1688
|
|||
|
|
|||
|
|
|||
|
5.2.4. ESS AudioDrive 18xx``(*)''
|
|||
|
|
|||
|
ESS AudioDrive ES-18xx based soundcards
|
|||
|
|
|||
|
modprobe snd-card-audiodrive18xx
|
|||
|
|
|||
|
|
|||
|
5.2.5. Gravis UltraSound PnP``(*)''
|
|||
|
|
|||
|
Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32,
|
|||
|
ExpertColor MED3201 and other soundcards based on AMD InterWave(TM)
|
|||
|
chip.
|
|||
|
|
|||
|
modprobe snd-card-interwave
|
|||
|
|
|||
|
5.2.6. UltraSound 32-Pro``(*)''
|
|||
|
|
|||
|
UltraSound 32-Pro (soundcard from STB used by Compaq) and other
|
|||
|
soundcards based on AMD InterWave (tm) chip with TEA6330T circuit for
|
|||
|
extended control of bass, treble and master volume
|
|||
|
|
|||
|
modprobe snd-card-interwave-stb
|
|||
|
|
|||
|
5.2.7. Soundblaster``(*)''
|
|||
|
|
|||
|
8-bit Soundblaster cards (SoundBlaster 1.0, SoundBlaster 2.0,
|
|||
|
SoundBlaster Pro)
|
|||
|
|
|||
|
modprobe snd-card-sb8
|
|||
|
|
|||
|
5.2.8. Soundblaster 16``(*)''
|
|||
|
|
|||
|
16-bit SoundBlaster cards (SoundBlaster 16 (PnP), SoundBlaster AWE 32
|
|||
|
(PnP), SoundBlaster AWE 64 (PnP). Please note: this module does not
|
|||
|
support the SoundBlaster VibraX16 soundcard.
|
|||
|
|
|||
|
modprobe snd-card-sb16
|
|||
|
|
|||
|
|
|||
|
|
|||
|
5.2.9. OAK Mozart``(*)''
|
|||
|
|
|||
|
|
|||
|
modprobe snd-mozart
|
|||
|
|
|||
|
5.2.10. OPTi 82C9xx``(*)''
|
|||
|
|
|||
|
Various sound cards that use the OPTi 82C9xx chipset, like Audio 16
|
|||
|
Pro EPC-SOUN9301 (82C930 based), ExpertColor MED-3931 v2.0 (82C931
|
|||
|
based), ExpertMedia Sound 16 MED-1600 (82C928 based - AD1848), Mozart
|
|||
|
S601206-G (OPTI601 based - CS4231) and Sound Player S-928
|
|||
|
|
|||
|
modprobe snd-card-opti9xx
|
|||
|
|
|||
|
5.2.11. AD1847/48 and CS4248
|
|||
|
|
|||
|
|
|||
|
modprobe snd-card-ad1848
|
|||
|
|
|||
|
5.2.12. Yamaha OPL3-SA2/SA3 soundcards``(*)''
|
|||
|
|
|||
|
Just "modprobe snd-opl3sa" will not work, this driver does not do
|
|||
|
autoprobing. See below.
|
|||
|
|
|||
|
5.2.13. S3 SonicVibes``(*)''
|
|||
|
|
|||
|
S3 SonicVibes PCI soundcards. (PINE Schubert 32 PCI)
|
|||
|
|
|||
|
modprobe snd-card-sonicvibes
|
|||
|
|
|||
|
|
|||
|
5.2.14. Ensoniq/Soundblaster PCI64``(*)''
|
|||
|
|
|||
|
Ensoniq AudioPCI ES1370/1371 PCI soundcards. (SoundBlaster PCI 64)
|
|||
|
|
|||
|
modprobe snd-card-audiopci
|
|||
|
|
|||
|
5.2.15. CS4231
|
|||
|
|
|||
|
Just ``modprobe snd-card-cs4231'' will not work, no auto-probing. See
|
|||
|
below.
|
|||
|
|
|||
|
5.2.16. CS4232/4232A
|
|||
|
|
|||
|
All soundcards based on CS4232/CS4232A chips. Just "modprobe snd-
|
|||
|
card-cs4232" will not work, no auto-probing. See below.
|
|||
|
|
|||
|
|
|||
|
5.2.17. 4235 and higher
|
|||
|
|
|||
|
All soundcards based on CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239
|
|||
|
chips. Just "modprobe snd-card-cs4236" will not work, no auto-
|
|||
|
probing. See below.
|
|||
|
|
|||
|
|
|||
|
5.2.18. 4610/4612/4615 and 4680
|
|||
|
|
|||
|
|
|||
|
modprobe snd-card-cs461x
|
|||
|
|
|||
|
5.2.19. ESS Solo 1``(*)''
|
|||
|
|
|||
|
ESS Solo-1, 128iPCI card (es1938, ESS-SOLO-1). Jonas Lofwander sent me
|
|||
|
a link to a document that will help you installing this card - which
|
|||
|
is, basically, nothing more than modprobe snd-card-esssolo1 ... but
|
|||
|
http://dice.shopcenter.nu/alsa/ can be of help. If you have an IBM
|
|||
|
Thinkpad 1412 you can also refer to
|
|||
|
http://www.geocities.com/SiliconValley/Peaks/3649/1412.html, thanks to
|
|||
|
Kumar Sankaran.
|
|||
|
|
|||
|
5.2.20. Trident 4DWave DX/NX``(**)''
|
|||
|
|
|||
|
Best Union Miss Melody 4DWave PCI, HIS 4DWave PCI, Warpspeed
|
|||
|
ONSpeed 4DWave PCI, AzTech PCI 64-Q3D, Addonics SV 750, CHIC True
|
|||
|
Sound 4Dwave, Shark Predator4D-PCI, Jaton SonicWave 4D.
|
|||
|
|
|||
|
modprobe snd-card-trident
|
|||
|
|
|||
|
5.2.21. ForteMedia FM801
|
|||
|
|
|||
|
These are PCI cards based on the FM801 chip.
|
|||
|
|
|||
|
modprobe snd-card-fm801
|
|||
|
|
|||
|
(*) For ALSA version 0.3.0-pre4, you need to leave out the ``card-''
|
|||
|
part in most (not all!) of the drivernames. So ``snd-card-sb16''
|
|||
|
becomes ``snd-sb16'', however, ``snd-card-cs4232'' remains ``snd-card-
|
|||
|
cs4232'' (modprobe snd-cs4232 will do something, but it will not
|
|||
|
produce any sound!)
|
|||
|
|
|||
|
(**) In older ALSA versions this driver was called ``snd-card-
|
|||
|
trid4wave'' and ``snd-trid4wave''.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
5.3. modprobe for drivers without auto-probing
|
|||
|
|
|||
|
If you have a non-autoprobing driver, you need to supply additional
|
|||
|
info at startup to have the driver work. More information can be found
|
|||
|
in the file INSTALL in the driver directory.
|
|||
|
|
|||
|
5.3.1. OPL3-SA2 and OPL3-SA3
|
|||
|
|
|||
|
According to the INSTALL file you need to supply all the information
|
|||
|
for this driver. If you initialized the card with the isapnp-tools,
|
|||
|
you can probably get info from the /etc/isapnp.conf file for the
|
|||
|
following values:
|
|||
|
|
|||
|
|
|||
|
snd_port - control port # for OPL3-SA chip
|
|||
|
snd_wss_port - WSS port # for OPL3-SA chip (0x530,0xe80,0xf40,0x604)
|
|||
|
snd_midi_port - port # for MPU-401 UART (0x300,0x330), -1 = disable
|
|||
|
snd_fm_port - FM port # for OPL3-SA chip (0x388), -1 = disable
|
|||
|
snd_irq - IRQ # for OPL3-SA chip (5,7,9,10)
|
|||
|
snd_dma1 - first DMA # for Yamaha OPL3-SA chip (0,1,3)
|
|||
|
snd_dma1_size - max first DMA size in kB (4-64kB)
|
|||
|
snd_dma2 - second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable
|
|||
|
snd_dma2_size - max second DMA size in kB (4-64kB)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You would do a "modprobe snd-card-opl3sa snd_port=0xNNN
|
|||
|
snd_wss_port=0x530 snd_midi_port=-1 snd_fm_port=0x388 snd_irq=5
|
|||
|
snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" to load this
|
|||
|
driver (without midi-support. I am still convinced that midi-support
|
|||
|
is the thing you need when you have synthesizers and stuff and want to
|
|||
|
connect them to your Linux box. Never needed Midi-support even to play
|
|||
|
midi-files.)
|
|||
|
|
|||
|
Note that the "NN" values need to be supplied, only I do not know what
|
|||
|
would be reasonable values. I do not know if the dma size option is
|
|||
|
really required.
|
|||
|
|
|||
|
If you happen to have an IBM Thinkpad with this chipset, then
|
|||
|
http://www.cirs.org/patrick/index.html might be of help.
|
|||
|
|
|||
|
If you use the driver from 0.3.0-pre4, then leave out the ``card-''
|
|||
|
part in the name.
|
|||
|
|
|||
|
|
|||
|
5.3.2. CS4231 chips
|
|||
|
|
|||
|
According to the INSTALL file you need to supply the main port for
|
|||
|
this card. Note that with the driver for 3235/6/7/8/9 cards, the one
|
|||
|
below, I ended up supplying all information (except DMA-size),
|
|||
|
otherwise the driver did not work. So you may as well use the whole
|
|||
|
command line to insert the driver. If you initialized the card with
|
|||
|
the isapnp-tools, you can probably get info from the /etc/isapnp.conf
|
|||
|
file for the following values:
|
|||
|
|
|||
|
|
|||
|
snd_port - port # for CS4232 chip (PnP setup - 0x534)
|
|||
|
snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
|
|||
|
snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
|
|||
|
snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
|
|||
|
snd_dma1 - first DMA # for CS4232 chip (0,1,3)
|
|||
|
snd_dma1_size - max first DMA size in kB (4-64kB)
|
|||
|
snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
|
|||
|
snd_dma2_size - max second DMA size in kB (4-64kB)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You would do a "modprobe snd-card-cs4231 snd_port=0x534
|
|||
|
snd_mpu_port=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1
|
|||
|
snd_dma2_size=NN" to load the driver for a "standard configured"
|
|||
|
soundcard. (Without midi-support, see the note at Yamaha OPL-3). If
|
|||
|
you used different values in /etc/isapnp.conf, then you would use the
|
|||
|
values here also (Note: it can be wise to use your brains anyway ;)
|
|||
|
|
|||
|
Note that the "NN" values need to be supplied, only I do not know what
|
|||
|
would be reasonable values. I do not know if the dma size option is
|
|||
|
really required.
|
|||
|
|
|||
|
|
|||
|
5.3.3. CS4232/CS4232A chips
|
|||
|
|
|||
|
According to the INSTALL file you need to supply the main port for
|
|||
|
this card. Note that with the driver for 3235/6/7/8/9 cards, the one
|
|||
|
below, I ended up supplying all information (except DMA-size),
|
|||
|
otherwise the driver did not work. So you may as well use the whole
|
|||
|
command line to insert the driver. If you initialized the card with
|
|||
|
the isapnp-tools, you can probably get info from the /etc/isapnp.conf
|
|||
|
file for the following values:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
snd_port - port # for CS4232 chip (PnP setup - 0x534)
|
|||
|
snd_cport - control port # for CS4232 chip (PnP setup - 0x120)
|
|||
|
snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
|
|||
|
snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
|
|||
|
snd_jport - joystick port for CS4232 chip (PnP setup - 0x200), -1 =
|
|||
|
disable
|
|||
|
snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
|
|||
|
snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
|
|||
|
snd_dma1 - first DMA # for CS4232 chip (0,1,3)
|
|||
|
snd_dma1_size - max first DMA size in kB (4-64kB)
|
|||
|
snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
|
|||
|
snd_dma2_size - max second DMA size in kB (4-64kB)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You would do a "modprobe snd-card-cs4232 snd_port=0x534
|
|||
|
snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1
|
|||
|
snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" to
|
|||
|
load the driver for a "standard configured" soundcard. (Without midi-
|
|||
|
support, see the note at Yamaha OPL-3, and no joystick support). If
|
|||
|
you used different values in /etc/isapnp.conf, then you would use the
|
|||
|
values here also (Note: it can be wise to use your brains anyway ;)
|
|||
|
|
|||
|
Note that the "NN" values need to be supplied, only I do not know what
|
|||
|
would be reasonable values. I do not know if the dma size option is
|
|||
|
really required.
|
|||
|
|
|||
|
5.3.4. CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 chips
|
|||
|
|
|||
|
According to the INSTALL file you need to supply the main port and
|
|||
|
control ports for this card. Note that with a CS4237B card, I ended up
|
|||
|
supplying all information (except DMA-size), otherwise the driver did
|
|||
|
not work. So you may as well use the whole command line to insert the
|
|||
|
driver, and not only supply snd_port and snd_cport. If you initialized
|
|||
|
the card with the isapnp-tools, you can probably get info from the
|
|||
|
/etc/isapnp.conf file for the following values:
|
|||
|
|
|||
|
|
|||
|
snd_port - port # for CS4232 chip (PnP setup - 0x534)
|
|||
|
snd_cport - control port # for CS4232 chip (PnP setup - 0x120)
|
|||
|
snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
|
|||
|
snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
|
|||
|
snd_jport - joystick port for CS4232 chip (PnP setup - 0x200), -1 = disable
|
|||
|
snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
|
|||
|
snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
|
|||
|
snd_dma1 - first DMA # for CS4232 chip (0,1,3)
|
|||
|
snd_dma1_size - max first DMA size in kB (4-64kB)
|
|||
|
snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
|
|||
|
snd_dma2_size - max second DMA size in kB (4-64kB)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You would do a "modprobe snd-card-cs4236 snd_port=0x534
|
|||
|
snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1
|
|||
|
snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" to
|
|||
|
load the driver. (Without midi-support, see the note at Yamaha OPL-3,
|
|||
|
and no joystick support). Notes:
|
|||
|
|
|||
|
<20> the "NN" values need to be supplied, only I do not know what would
|
|||
|
be reasonable values.
|
|||
|
|
|||
|
<20> my CS4237B works fine without explicit dma size option.
|
|||
|
|
|||
|
|
|||
|
5.4. The kerneld approach
|
|||
|
|
|||
|
kerneld is a daemon that inserts modules on request, and unloads them
|
|||
|
once they are not in use anymore. Since I have no experience with
|
|||
|
kerneld, I do not know if the information below is accurate. The info
|
|||
|
comes from the INSTALL file in the ALSA-drivers package. Excellent
|
|||
|
information about kerneld can be found in the kerneld-mini-HOWTO.
|
|||
|
|
|||
|
Follow these steps:
|
|||
|
|
|||
|
<20> Edit your /etc/conf.modules (see below for examples)
|
|||
|
|
|||
|
<20> Run 'modprobe snd-card' where card is name of your card [Which I
|
|||
|
find rather strange, since kerneld is supposed to load them? VS]
|
|||
|
|
|||
|
Example for /etc/conf.modules for Gravis UltraSound PnP soundcard:
|
|||
|
|
|||
|
|
|||
|
alias char-major-14 snd
|
|||
|
alias snd-minor-oss-0 snd-interwave
|
|||
|
alias snd-minor-oss-3 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-4 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-5 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-12 snd-pcm1-oss
|
|||
|
alias snd-card-0 snd-interwave
|
|||
|
options snd snd_major=14 snd_cards_limit=1
|
|||
|
options snd-interwave snd_index=1 snd_id="guspnp" snd_port=0x220 snd_irq=5
|
|||
|
snd_dma1=5 snd_dma2=6
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Example if you want use more soundcards in one machine (configuration
|
|||
|
below is for Sound Blaster 16 and Gravis UltraSound Classic):
|
|||
|
|
|||
|
|
|||
|
alias char-major-14 snd
|
|||
|
alias snd-minor-oss-0 snd-mixer
|
|||
|
alias snd-minor-oss-3 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-4 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-5 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-12 snd-pcm1-oss
|
|||
|
alias snd-card-0 snd-sb16
|
|||
|
alias snd-card-1 snd-gusclassic
|
|||
|
options snd snd_major=14 snd_cards_limit=2
|
|||
|
options snd-sb16 snd_index=1 snd_port=0x220 snd_irq=5 snd_dma8=1 snd_dma16=5
|
|||
|
options snd-gusclassic snd_index=2 snd_irq=11 snd_dma1=6 snd_dma2=7
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Example if two Gravis UltraSound Classic soundcards are present in
|
|||
|
system:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
alias char-major-14 snd
|
|||
|
alias snd-minor-oss-0 snd-mixer
|
|||
|
alias snd-minor-oss-3 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-4 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-5 snd-pcm1-oss
|
|||
|
alias snd-minor-oss-12 snd-pcm1-oss
|
|||
|
alias snd-card-0 snd-gusclassic
|
|||
|
alias snd-card-1 snd-gusclassic
|
|||
|
options snd snd_major=14 snd_cards_limit=2
|
|||
|
options snd-gusclassic snd_index=1,2 snd_port=0x220,0x260 snd_irq=5,11
|
|||
|
snd_dma1=5,6 snd_dma2=7,3
|
|||
|
|
|||
|
|
|||
|
|
|||
|
5.5. Backwards compatibility
|
|||
|
|
|||
|
If you want to preserve OSS/Free or OSS/Linux compatibility, you need
|
|||
|
to insert one more driver: the snd-pcm1-oss driver for OSS-
|
|||
|
compatibility. Issue a
|
|||
|
|
|||
|
|
|||
|
modprobe snd-pcm1-oss
|
|||
|
|
|||
|
|
|||
|
|
|||
|
This will give you /dev/audio and /dev/dsp-support, just as the
|
|||
|
OSS/Free (kernel) drivers and OSS/Linux (the $25 ones) do. Note that
|
|||
|
this is only an emulation.
|
|||
|
|
|||
|
|
|||
|
6. Testing and using
|
|||
|
|
|||
|
Now you should test if the sound driver really is available, then try
|
|||
|
to use it.
|
|||
|
|
|||
|
6.1. The /proc filesystem
|
|||
|
|
|||
|
You can find a lot of useful information about your system in the
|
|||
|
/proc subdirectory. /proc is a "virtual" filesystem, meaning that it
|
|||
|
does not exist in real life, but merely is a mapping to various
|
|||
|
processes and tasks in your computer. In order for /proc to work, you
|
|||
|
need to have support for it compiled into your kernel. Most linux
|
|||
|
distributions have this as a default, but if you compiled a kernel and
|
|||
|
left /proc out obviously there won't be anything in /proc.
|
|||
|
|
|||
|
/proc/modules gives information about loaded modules. Once the ALSA
|
|||
|
sound drivers are loaded, if you type cat /proc/modules you should see
|
|||
|
something like:
|
|||
|
|
|||
|
|
|||
|
snd-pcm1-oss 4 0
|
|||
|
snd-sb16 1 1
|
|||
|
snd-sb-dsp 4 [snd-sb16] 0
|
|||
|
snd-pcm1 4 [snd-pcm1-oss snd-sb-dsp] 0
|
|||
|
snd-pcm 3 [snd-pcm1-oss snd-sb16 snd-sb-dsp snd-pcm1] 0
|
|||
|
snd-mixer 3 [snd-pcm1-oss snd-sb16 snd-sb-dsp] 1
|
|||
|
snd-mpu401-uart 1 [snd-sb16] 0
|
|||
|
snd-midi 4 [snd-sb16 snd-sb-dsp snd-mpu401-uart] 0
|
|||
|
snd-opl3 1 [snd-sb16] 0
|
|||
|
snd-synth 1 [snd-sb16 snd-opl3] 0
|
|||
|
snd-timer 1 [snd-opl3] 0
|
|||
|
snd 8 [snd-pcm1-oss snd-sb16 snd-sb-dsp snd-pcm1 snd-pcm snd-mixer snd-mpu401-uart snd-midi snd-opl3 snd-synth snd-timer] 0
|
|||
|
|
|||
|
If something went wrong during the installation of the driver, you
|
|||
|
will still see a couple of "snd" devices, but there won't be sound
|
|||
|
support.
|
|||
|
|
|||
|
For example (Note: you should never issue this command as follows, the
|
|||
|
cs4236 driver needs options):
|
|||
|
|
|||
|
|
|||
|
win3:~# modprobe snd-card-cs4236
|
|||
|
/lib/modules/2.0.35/misc/snd-card-cs4236.o: init_module: Device or resource busy
|
|||
|
snd-mixer: Device or resource busy
|
|||
|
win3:~# cat /proc/modules
|
|||
|
snd-cs4236 2 0
|
|||
|
snd-cs4231 3 [snd-cs4236] 0
|
|||
|
snd-timer 1 [snd-cs4231] 0
|
|||
|
snd-pcm1 4 [snd-cs4236 snd-cs4231] 0
|
|||
|
snd-mixer 3 [snd-cs4236 snd-cs4231] 0
|
|||
|
snd-pcm 3 [snd-cs4236 snd-cs4231 snd-pcm1] 0
|
|||
|
snd-mpu401-uart 1 0
|
|||
|
snd-midi 4 [snd-mpu401-uart] 0
|
|||
|
snd-opl3 1 0
|
|||
|
snd-synth 1 [snd-opl3] 0
|
|||
|
snd-timer 1 [snd-cs4231 snd-opl3] 0
|
|||
|
snd 8 [snd-cs4231 snd-timer snd-pcm1 snd-mixer snd-pcm] 0
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You can check the existence of a soundcard by looking in
|
|||
|
/proc/asound/cards. For example:
|
|||
|
|
|||
|
|
|||
|
bash$ cat /proc/asound/cards
|
|||
|
0 [card1 : SB16 - Sound Blaster 16
|
|||
|
Sound Blaster 16 at 0x220, irq 5, dma 1&5
|
|||
|
|
|||
|
|
|||
|
|
|||
|
In the previous example (where I forgot the options) the output would
|
|||
|
have been:
|
|||
|
|
|||
|
|
|||
|
win3:~# cat /proc/asound/cards
|
|||
|
--- no soundcards ---
|
|||
|
|
|||
|
|
|||
|
|
|||
|
A working CS4236 card would produce
|
|||
|
|
|||
|
|
|||
|
0 [card1 ]: CS4236 - CS4237B
|
|||
|
CS4237B at 0x534, irq 7, dma 1&0
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If you checked and doublechecked your settings and still see no sound
|
|||
|
card, take a look at the troubleshooting section.
|
|||
|
|
|||
|
The /proc/asound/ virtual directory shows lots of other information
|
|||
|
about the driver. Please note that /proc/asound/ will only exist after
|
|||
|
you inserted the first ALSA module. If there is no /proc/asound, it
|
|||
|
simply means that the "snd" module was not loaded properly. You can
|
|||
|
find installed cards in /proc/asound/cards, then find information
|
|||
|
about card0 in /proc/asound/0, /proc/asound/1 for card1 etcetera.
|
|||
|
|
|||
|
If cat /proc/asound/card1/pcm0 shows something like
|
|||
|
|
|||
|
|
|||
|
ES1370 DAC2/ADC
|
|||
|
Playback isn't active.
|
|||
|
Record isn't active.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
this means that your driver is ready to go, but is not doing anything
|
|||
|
right now. (So everything went well).
|
|||
|
|
|||
|
For users of a 2.0.x kernel there is a third method to find
|
|||
|
information about the sound devices, namely if you inserted the OSS
|
|||
|
compatible driver there is a /dev/sndstat device. The ALSA drivers
|
|||
|
kindly request that you not to rely on this information as it is only
|
|||
|
there for compatibility with the OSS drivers and better information
|
|||
|
can easily be obtained from /proc/asound/. In kernel 2.2.x ALSA uses
|
|||
|
the kernel soundcore and therefor cannot emulate /dev/sndstat, since
|
|||
|
it would interfere with the OSS drivers.
|
|||
|
|
|||
|
|
|||
|
6.2. The mixer
|
|||
|
|
|||
|
Once the drivers for your sound card have been installed and your
|
|||
|
/proc filesystem tells you so, you can try to make a real sound. To do
|
|||
|
this, you need to set the mixer volumes to a reasonable value. You
|
|||
|
need the ``amixer'' from the alsa-utils package for this. First of
|
|||
|
all, install the utility package, or at least put the "amixer" command
|
|||
|
in some reasonable place (like /usr/local/bin).
|
|||
|
|
|||
|
Version 0.3.2 and later have an interface that differs from the OSS
|
|||
|
drivers. If you type just ``amixer'' you will see the mixer elements
|
|||
|
and their value. One of these elements could be ``Master volume'' for
|
|||
|
example, and could look like:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Group 'Master',0
|
|||
|
Capabilities: volume
|
|||
|
Channels: Front-Left Front-Right
|
|||
|
Limits: min = 0, max = 31
|
|||
|
Front-Left: 31 [100%] [on] [---]
|
|||
|
Front-Right: 26 [84%] [on] [---]
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Unfortunately, I do not know how to set left and right volumes
|
|||
|
independently. With amixer, you can change volumes with the ``amixer
|
|||
|
set'' command. For example, to change the Master volume, you would
|
|||
|
issue a
|
|||
|
|
|||
|
|
|||
|
|
|||
|
amixer set Master 15
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Please note that the names of the elements can be different for
|
|||
|
different types of sound cards. Also note that amixer is case
|
|||
|
dependent, so ``amixer set masteR 10'' will not work. For more
|
|||
|
information, please look in the amixer man page.
|
|||
|
If you have a 0.3.0-pre4 ALSA, then amixer works just like normal
|
|||
|
mixer programs. You can look at the mixer settings by typing
|
|||
|
``amixer''. This command lists the ``mixer settings'', or as you would
|
|||
|
normally call it, the volume settings of the various parts of the
|
|||
|
soundcard. The output from amixer can greatly differ from card to
|
|||
|
card. My Soundblaster 16 shows:
|
|||
|
|
|||
|
|
|||
|
Master 0 % (-14.00dB) : 0 % (-14.00dB)
|
|||
|
Bass 0 % (-14.00dB) : 0 % (-14.00dB)
|
|||
|
Treble 0 % (-14.00dB) : 0 % (-14.00dB)
|
|||
|
Synth 0 % (-62.00dB) : 0 % (-62.00dB)
|
|||
|
PCM 0 % (-62.00dB) : 0 % (-62.00dB)
|
|||
|
Line-In 0 % (-62.00dB) : 0 % (-62.00dB) Mute
|
|||
|
MIC 0 % (-62.00dB) : 0 % (-62.00dB) Mute
|
|||
|
CD 0 % (-62.00dB) : 0 % (-62.00dB) Mute
|
|||
|
In-Gain 0 % (-18.00dB) : 0 % (-18.00dB)
|
|||
|
Out-Gain 0 % (-18.00dB) : 0 % (-18.00dB)
|
|||
|
PC Speaker 0 % (-18.00dB) : 0 % (-18.00dB)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If you only get a message like ``amixer: Specify command...'', then
|
|||
|
you are using the ALSA 3.2 utilities. I suggest you to upgrade to
|
|||
|
0.4.1e or later, or to go back to 0.3.0-pre4.
|
|||
|
|
|||
|
|
|||
|
6.2.1. Mixer settings for playing
|
|||
|
|
|||
|
You have noticed the "Mute" entry for some devices. This means that
|
|||
|
this particular device will be zeroed out, whatever volume setting you
|
|||
|
use. Some cards (the CS4237B in the example) even mute their master
|
|||
|
channel. So, for the CS4237B, I would have to type
|
|||
|
|
|||
|
amixer set "Master d" unmute
|
|||
|
|
|||
|
to even be able to produce any sound at all. The Soundblaster does not
|
|||
|
have muted output, but
|
|||
|
|
|||
|
amixer set Master 100 unmute
|
|||
|
|
|||
|
would set the volume to 100% - and unmute it if it would have been
|
|||
|
muted. You can use a number, a word like "mute" or "unmute", or both.
|
|||
|
Type
|
|||
|
|
|||
|
amixer set "Master d" 100; amixer set PCM 100 unmute
|
|||
|
|
|||
|
to set the CS4237B card to maximum master volume and unmute PCM volume
|
|||
|
and set it to maximum.
|
|||
|
|
|||
|
If you use an older version of amixer, you need to leave out the
|
|||
|
``set'' part of the command, so you would just type
|
|||
|
|
|||
|
amixer "master d" 100
|
|||
|
|
|||
|
|
|||
|
6.2.2. Mixer parts
|
|||
|
|
|||
|
The various mixer parts may confuse you if you have no knowledge of
|
|||
|
digital sound production. The sound-HOWTO may help a bit, but a very
|
|||
|
short introduction is here.
|
|||
|
|
|||
|
You will probably only need few mixer elements: one of them is the
|
|||
|
``CD'' setting (this is analog sound of your CD player, most CD
|
|||
|
players are connected with a 3 or 4 wire red/white/black cable).
|
|||
|
The ``PCM'' setting is used for most applications. Programs like
|
|||
|
mpg123, xmms, speakfreely, realplayer and most others use the PCM
|
|||
|
channel.
|
|||
|
|
|||
|
``MIC'' stands for microphone, ``line-in'' is an (optional) extra
|
|||
|
input at the back of your sound card.
|
|||
|
|
|||
|
The various ``gain'' parts offer extra amplification for various uses
|
|||
|
and are pretty self-explanatory. (Like: record-gain is extra
|
|||
|
amplification for the recording channel, which can be useful if you
|
|||
|
use a microphone).
|
|||
|
|
|||
|
|
|||
|
6.2.3. Mixer settings for recording
|
|||
|
|
|||
|
You would set the CD channel to record by typing
|
|||
|
|
|||
|
amixer set CD capture
|
|||
|
|
|||
|
and stop the recording setting again by typing
|
|||
|
|
|||
|
amixer set CD nocapture.
|
|||
|
|
|||
|
Note that older amixer programs use ``amixer CD rec'' and ``amixer CD
|
|||
|
norec'' for this.
|
|||
|
|
|||
|
If you would like to record something from the microphone, you would
|
|||
|
probably use
|
|||
|
|
|||
|
amixer set "Input Gain" 100; amixer set Mic 100 capture mute.
|
|||
|
|
|||
|
(Using the microphone input unmuted will produce loud high-pitched
|
|||
|
sound if your mic picks up its own signal from the speakers again).
|
|||
|
Most microphones have a ``gain'' setting to boost the microphone
|
|||
|
volume; you are most likely going to need it to pick up any sound from
|
|||
|
the microphone at all.
|
|||
|
|
|||
|
Again, older amixer programs use ``amixer "input gain" 100; amixer mic
|
|||
|
100 rec mute''.
|
|||
|
|
|||
|
|
|||
|
6.2.4. Other mixer settings
|
|||
|
|
|||
|
Unfortunately I have not been able to change the volume of the "3d
|
|||
|
center" and "3d space" settings with amixer 0.3.0-pre4. I haven't
|
|||
|
tried yet with 0.4.1e (this particular machine is still running
|
|||
|
2.0.38). If anyone succeeds please let me know. I can use alsamixer
|
|||
|
for this job, but alsamixer was not ported to the 0.4.1e version yet.
|
|||
|
|
|||
|
The ALSA FAQ says that it is possible to restore mixer settings with
|
|||
|
cat <file> > /proc/asound/#/mixerC0D0, where <file> was obtained from
|
|||
|
/proc/asound/#/mixerC0D0. I have not been able to reproduce this as my
|
|||
|
system complains about non-existing devices. Then there is the
|
|||
|
``alsactl'' program, which I don't use. I invite you (yes, you!) to
|
|||
|
write this section.
|
|||
|
|
|||
|
|
|||
|
6.3. The /dev/snd/ devices
|
|||
|
|
|||
|
The alsa drivers have native sound-devices in the /dev/snd/ directory.
|
|||
|
If you have one card you might see the following devices:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/dev/snd/pcmC0D0 - the raw audio device for the card
|
|||
|
/dev/snd/mixerC0D0 - the mixer for card 0
|
|||
|
/dev/snd/controlC0D0 - the control device for card 0
|
|||
|
|
|||
|
|
|||
|
|
|||
|
The first number means the number of the soundcard, the second number
|
|||
|
(if any) is the number of the device. A sound card with two PCM
|
|||
|
devices would have a pcmC0D0 and pcmC0D1 device. Please note: the
|
|||
|
ALSA devices have changed between the previous version. Older ALSA
|
|||
|
drivers use /dev/snd/pcm00 (first number is the card, second number is
|
|||
|
the device). If this HOWTO uses the older notation, please drop me a
|
|||
|
line so I can correct it.
|
|||
|
|
|||
|
Now you are ready to put any soundfile you want into the PCM device of
|
|||
|
the first card. So try to cat any textfile (any file) to
|
|||
|
/dev/snd/pcmC0D0, like this: cat <filename> > /dev/snd/pcmC0D0. The
|
|||
|
filename can be any file, as long as it has some length. If you have a
|
|||
|
soundfile lying around somewhere, you could try that. You could also
|
|||
|
get the file at http://www.ldp.org/sounds/english.au this is Linus
|
|||
|
Torvalds saying how to pronounce Linux.
|
|||
|
|
|||
|
The default setting of your sound device is 8000 Hz, 8 bit. That means
|
|||
|
that the "english.au" file mentioned above will produce speech, other
|
|||
|
test files will probably just produce noise. If you do not hear
|
|||
|
anything, check your speakers, try to run "amixer" again or consult a
|
|||
|
doctor. (Later on you can easily use the full 48 KHz, 16 bit features
|
|||
|
of your sound card, by using your favourite sound player like sox or
|
|||
|
mpg123).
|
|||
|
|
|||
|
If you loaded the ``snd-pcm1-oss'' module, you can also use the OSS-
|
|||
|
compatibility to access your sound card. The following mappings are
|
|||
|
made:
|
|||
|
|
|||
|
|
|||
|
/dev/snd/pcmC0D0 -> /dev/audio0 (/dev/audio) -> minor 4
|
|||
|
/dev/snd/pcmC0D0 -> /dev/dsp0 (/dev/dsp) -> minor 3
|
|||
|
/dev/snd/pcmC0D1 -> /dev/adsp0 (/dev/adsp) -> minor 12
|
|||
|
/dev/snd/pcmC1D0 -> /dev/audio1 -> minor 4+16 = 20
|
|||
|
/dev/snd/pcmC1D0 -> /dev/dsp1 -> minor 3+16 = 19
|
|||
|
/dev/snd/pcmC1D1 -> /dev/adsp1 -> minor 12+16 = 28
|
|||
|
/dev/snd/pcmC2D0 -> /dev/audio2 -> minor 4+32 = 36
|
|||
|
/dev/snd/pcmC2D0 -> /dev/dsp2 -> minor 3+32 = 35
|
|||
|
/dev/snd/pcmC2D1 -> /dev/adsp2 -> minor 12+32 = 44
|
|||
|
|
|||
|
|
|||
|
|
|||
|
You probaly want to use the ``snd-mixer-oss'' module as wel, so you
|
|||
|
can use the backwards compatible mixer.
|
|||
|
|
|||
|
|
|||
|
6.4. Additional information
|
|||
|
|
|||
|
The INSTALL file in the ALSA driver directory mentions some tricks to
|
|||
|
tell the driver which settings to use. If you need these commands it
|
|||
|
will depend on the application you use to play sound. Regular sound
|
|||
|
playing applications, like mpg123, sox (mostly called with the
|
|||
|
``play'' command), or X11 applications like RealPlayer will probably
|
|||
|
do fine without these. I never used these anyway.
|
|||
|
|
|||
|
6.4.1. /proc/asound/#/pcm#0
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"Playback erase" - erase all additional informations about OSS applications
|
|||
|
"Playback <app_name> <fragments> <fragment_size> [<options>]"
|
|||
|
"Record erase" - erase all additional informations about OSS applications
|
|||
|
"Record <app_name> <fragments> <fragment_size> [<options>]"
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<app_name> - name of application with (highter priority) or without
|
|||
|
path
|
|||
|
|
|||
|
<fragments> - number of fragments or zero if auto
|
|||
|
|
|||
|
<fragment_size> - size of fragment in bytes or zero if auto
|
|||
|
|
|||
|
<options> - optional parameters
|
|||
|
|
|||
|
WR_ONLY - if application tries open pcm device with O_RDWR driver
|
|||
|
rewrites this to O_WRONLY (playback) - good for Quake etc...
|
|||
|
|
|||
|
Examples:
|
|||
|
|
|||
|
|
|||
|
echo "Playback x11amp 128 16384" > /proc/asound/0/pcm0o
|
|||
|
echo "Playback squake 0 0 WR_ONLY" > /proc/asound/0/pcm0o
|
|||
|
|
|||
|
|
|||
|
|
|||
|
6.4.2. /proc/asound/#card#/sb16
|
|||
|
|
|||
|
|
|||
|
|
|||
|
"Playback 8" -> driver will use always 8-bit DMA channel for playback.
|
|||
|
"Playback 16" -> driver will use always 16-bit DMA channel for playback.
|
|||
|
"Playback auto" (default) -> driver will use auto mode (first opened direction will use 16-bit DMA channel).
|
|||
|
"Record 8" -> driver will use always 8-bit DMA channel for record.
|
|||
|
"Record 16" -> driver will use always 16-bit DMA channel for record.
|
|||
|
"Record auto" (default) -> driver will use auto mode (first opened direction will use 16-bit DMA channel).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Example: echo "Record 16" > /proc/asound/0/sb16
|
|||
|
|
|||
|
For further reference, please consult the INSTALL file.
|
|||
|
|
|||
|
7. Tips and Troubleshooting
|
|||
|
|
|||
|
Please take a look at the FAQ file in the sound driver directory. This
|
|||
|
section is still under construction.
|
|||
|
|
|||
|
7.1. Compiling the driver
|
|||
|
|
|||
|
|
|||
|
7.1.1. Linux kernel sourcetree
|
|||
|
|
|||
|
If your ALSA drivers do not compile correctly and tell you things
|
|||
|
about ``version.h'' or other header-files that cannot be found, this
|
|||
|
can mean that you do not have the kernel header files. Take a look at
|
|||
|
the kernel-HOWTO, unpack a recent kernel in /usr/src and issue a make
|
|||
|
config.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
7.1.2. Cannot create executables
|
|||
|
|
|||
|
The utils also contain code written in c++. Most of us have a c++
|
|||
|
compiler either from gcc or egcs but make sure you also have the
|
|||
|
libstdc++-devel package installed, else when you run the configure
|
|||
|
script for the utils, your system will stump you with an error message
|
|||
|
saying your ``c++ compiler cannot create executables''.
|
|||
|
|
|||
|
|
|||
|
7.2. Loading the driver
|
|||
|
|
|||
|
Please check the following items.
|
|||
|
|
|||
|
|
|||
|
7.2.1. Sound devices
|
|||
|
|
|||
|
ALSA uses special devices in the /dev-tree. Make sure you have run the
|
|||
|
./snddevices script in the alsa-drivers source directory.
|
|||
|
|
|||
|
|
|||
|
7.2.2. Sound card compatibility
|
|||
|
|
|||
|
Are you 100% sure that your sound card IS supported ? Do check it
|
|||
|
again. Sometimes an X123 is not exactly an X123b and you might be
|
|||
|
wasting time. On the other hand, even a supported card can give you
|
|||
|
troubles - it took me two hours to figure out the installation of a
|
|||
|
CS4237B which was, after all, just a fine example of RTFM.
|
|||
|
|
|||
|
|
|||
|
7.2.3. ``Device busy'' or ``unresolved symbols''
|
|||
|
|
|||
|
You might have a 2.0.x kernel with sound support compiled in, or the
|
|||
|
OSS/Lite (kernel) sound driver could be loaded (check with cat
|
|||
|
/proc/modules). Remove the driver or recompile the kernel (have a look
|
|||
|
at the Kernel-HOWTO).
|
|||
|
|
|||
|
The sound module in the 2.0 series kernel is called ``sound.o'' and
|
|||
|
should not be active. (The ALSA driver ``snd.o'' is OK, though).
|
|||
|
|
|||
|
If you have a 2.2.x series kernel without sound driver compiled in,
|
|||
|
the ALSA drivers will not work, too.
|
|||
|
|
|||
|
|
|||
|
7.2.3.1. 2.0 kernels
|
|||
|
|
|||
|
I know it this is confusing, so let me try to explain it one more
|
|||
|
time. If you have a 2.0.x series kernel (the command ``uname -a''
|
|||
|
tells you something like ``Linux penguin 2.0.35 #6 Wed Sep 23 10:19:16
|
|||
|
CEST 1998 i686 unknown'') then you need to leave out sound drivers in
|
|||
|
the kernel. ALSA 0.4.x and later do not work with the 2.0 series
|
|||
|
kernel
|
|||
|
|
|||
|
|
|||
|
7.2.3.2. 2.2 kernels
|
|||
|
|
|||
|
If you have a 2.2.x series kernel you do need the sound drivers. A 2.2
|
|||
|
series kernel should be compiled with sound support, but without any
|
|||
|
sound card driver. So you select sound support but make sure that no
|
|||
|
specific sound card driver will be compiled.
|
|||
|
|
|||
|
|
|||
|
7.2.4. References to other drivers
|
|||
|
|
|||
|
Another reason why the driver complains that the device is busy could
|
|||
|
be that the file /etc/conf.modules still has references to the
|
|||
|
soundcard drivers. You should delete these and leave only the
|
|||
|
references to the ALSA-driver. (If there are other non-sound-related
|
|||
|
drivers there, then you can probably leave these as-is).
|
|||
|
|
|||
|
|
|||
|
7.2.5. Unresolved symbols revisited
|
|||
|
|
|||
|
Another source of ``unresolved symbols'' messages could be a new
|
|||
|
kernel with older drivers. Please recompile the ALSA drivers after you
|
|||
|
recompile a new kernel. This will make sure that the drivers match
|
|||
|
your new kernel.
|
|||
|
|
|||
|
|
|||
|
7.2.6. Check the PnP setup
|
|||
|
|
|||
|
Are you sure that your card is active? Take another look at the PnP-
|
|||
|
HOWTO and check if you activated your sound card correctly.
|
|||
|
|
|||
|
|
|||
|
7.2.7. Are your parameters right ?
|
|||
|
|
|||
|
Check, doublecheck your sound card parameters. Please note: 534 is not
|
|||
|
543, nor is 0x534 the same as 534.
|
|||
|
|
|||
|
Also, some sound cards must be loaded by a different name than might
|
|||
|
be expected. Take a break, a beer or whatever, and look again at your
|
|||
|
``modprobe'' command. For example the Crystal 4232 driver should be
|
|||
|
inserted by modprobe snd-card-cs4232, not ``snd-cs4231'', and the
|
|||
|
SoundBlaster PCI 64 should be loaded with ``snd-card-audiopci'', not
|
|||
|
snd-es1370. (It's all in the docs, and even though I wrote the HOWTO,
|
|||
|
I once spent an evening trying to persuade snd-cs4231 to make sound).
|
|||
|
|
|||
|
|
|||
|
7.3. Driver loaded... but no (or hardly any) sound
|
|||
|
|
|||
|
|
|||
|
|
|||
|
7.3.1. Unmuting
|
|||
|
|
|||
|
The ALSA drivers can use the ``muting'' facilities that most
|
|||
|
soundcards have. If you loaded the sound drivers and everything is
|
|||
|
fine but you get nothing but silence, then you probably forgot to
|
|||
|
unmute your card. You need ``amixer'' or ``alsamixer'' for this, both
|
|||
|
from the ALSA-util package. Just typing
|
|||
|
|
|||
|
|
|||
|
amixer set -c 1 Master 70 unmute
|
|||
|
amixer set -c 1 PCM 70 unmute
|
|||
|
amixer set -c 1 CD 70 unmute
|
|||
|
|
|||
|
|
|||
|
|
|||
|
should do for most applications. Please note that for the older amixer
|
|||
|
command you need to leave out the ``set'' in the command line.
|
|||
|
|
|||
|
|
|||
|
7.3.2. Gain
|
|||
|
|
|||
|
Most sound cards have a separate mixer part for extra input or output
|
|||
|
boosting. This entry is most likely called the ``gain'', ``in-gain''
|
|||
|
for input and ``out-gain'' for output. Setting this gain to an
|
|||
|
appropriate level will greatly help you getting the maximum volume out
|
|||
|
of your speakers (think about your parents/neighbours/ears though).
|
|||
|
So a command like
|
|||
|
|
|||
|
|
|||
|
amixer set out-gain 100 unmute
|
|||
|
|
|||
|
|
|||
|
|
|||
|
will probably help.
|
|||
|
|
|||
|
|
|||
|
7.3.3. OSS/Linux compatibility
|
|||
|
|
|||
|
If this is the first time you use the ALSA drivers and you used the
|
|||
|
built-in sound drivers before, you probably want to have backwards
|
|||
|
compatible sound (i.e. use the /dev/pcmX devices). You need to load
|
|||
|
the ``OSS compatibility driver'' for this. Do a modprobe snd-pcm1-oss
|
|||
|
&& modprobe snd-mixer-oss. (See the end of the section about loading
|
|||
|
the driver). Please note: snd-pcm1-oss is not equal to snd-pcm1, you
|
|||
|
need snd-pcm1-oss for old-fashioned sound support and snd-mixer-oss
|
|||
|
for (you guessed it) the mixer.
|
|||
|
|
|||
|
|
|||
|
7.3.4. Cannot open mixer
|
|||
|
|
|||
|
If you have tried to install a couple of different ALSA versions, then
|
|||
|
sometimes the mixer cannot be opened anymore. This happens if you have
|
|||
|
tried 0.3.2 and want to downgrade to 0.3.0-pre4 (IIRC). You should
|
|||
|
delete all libasound files and links from /usr/lib and then recompile
|
|||
|
libraries and utils:
|
|||
|
|
|||
|
|
|||
|
rm /usr/lib/libasound.*
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Just to be safe, remove all ALSA sound drivers afterwards, then recom<6F>
|
|||
|
pile and install and reload the drivers.
|
|||
|
|
|||
|
|
|||
|
7.4. General suggestions
|
|||
|
|
|||
|
|
|||
|
|
|||
|
7.4.1. Try using ``insmod''
|
|||
|
|
|||
|
It can always be useful to start with "insmod" instead of kerneld.
|
|||
|
Maybe you actually see the error on screen.
|
|||
|
|
|||
|
|
|||
|
7.4.2. Read the INSTALL file.
|
|||
|
|
|||
|
A lot of information can be found in the INSTALL file in the drivers
|
|||
|
directory. If your driver won't work check if there is additional
|
|||
|
information available.
|
|||
|
|
|||
|
|
|||
|
7.4.3. Debug messages
|
|||
|
|
|||
|
As a last resort, you can rebuild the driver and tell it to send debug
|
|||
|
information to /var/log/messages. Go to the driver-directory with cd
|
|||
|
/usr/src/alsa-driver-.... and type:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
./configure --with-debug=detect; make clean; make
|
|||
|
|
|||
|
|
|||
|
Remove the driver (as far as it is active, see below for a general
|
|||
|
remove statement). Then use the "modprobe" statement you used before
|
|||
|
to insert the newly compiled driver. Look in /var/log/messages if
|
|||
|
there are any messages.
|
|||
|
|
|||
|
|
|||
|
7.4.4. If all else fails...
|
|||
|
|
|||
|
If these messages doesn't help you, send a message to the ALSA users
|
|||
|
mailing list, alsa-user@alsa-project.org.
|
|||
|
|
|||
|
Include the following information:
|
|||
|
|
|||
|
<20> soundcard name + chip names present on your soundcard
|
|||
|
|
|||
|
<20> relevant sections in your isapnp.conf if you have ISA PnP soundcard
|
|||
|
|
|||
|
<20> your conf.modules or line which you activate ALSA driver
|
|||
|
|
|||
|
<20> all messages from /var/log/messages which should be relevant to the
|
|||
|
ALSA driver
|
|||
|
|
|||
|
|
|||
|
7.5. Bug reports
|
|||
|
|
|||
|
If you found a bug, the ALSA developers would like to know the
|
|||
|
following things (at minimum)
|
|||
|
|
|||
|
1. driver + kernel version: 'cat /proc/asound/version'
|
|||
|
|
|||
|
2. soundcard info
|
|||
|
|
|||
|
<20> soundcard name provided by manufacture
|
|||
|
|
|||
|
<20> list of chips which soundcard have onboard
|
|||
|
|
|||
|
<20> contents of 'cat /proc/asound/cards'
|
|||
|
|
|||
|
3. all messages from /var/log/messages which should be relevant to
|
|||
|
ALSA driver
|
|||
|
|
|||
|
4. problem description
|
|||
|
|
|||
|
|
|||
|
7.6. Tip: playing CD's
|
|||
|
|
|||
|
If you use kmod/kerneld and the ALSA drivers to play CD's, then
|
|||
|
kmod/kerneld probably do not load the drivers as expected. This is due
|
|||
|
to the fact that a command line CD player only tells the CD player to
|
|||
|
start playing without using any of the devices that tell kmod/kerneld
|
|||
|
that there is sound to occur. Using modprobe may be your only solution
|
|||
|
to this problem.
|
|||
|
|
|||
|
|
|||
|
7.7. Tip: installing the MIDI serial driver
|
|||
|
|
|||
|
Normally, the IO port of the serial device is owned by the standard
|
|||
|
serial device driver. So before you can do ``modprobe snd-serial'' we
|
|||
|
have to tell the driver to release the serial device.
|
|||
|
|
|||
|
Here is the procedure.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
setserial /dev/ttyS0 uart none
|
|||
|
modprobe snd-serial
|
|||
|
|
|||
|
|
|||
|
|
|||
|
(Replace /dev/ttyS0 with the appropriate /dev/ttySx device if your
|
|||
|
MIDI device uses a different serial device).
|
|||
|
|
|||
|
|
|||
|
7.8. Tip: new kernel? New modules!
|
|||
|
|
|||
|
After you upgrade your kernel, you probably need to recompile the ALSA
|
|||
|
drivers. If they are still in the original /usr/src directory, then
|
|||
|
please do not forget to issue a make clean before you do the
|
|||
|
./configure, make, make install thing.
|
|||
|
|
|||
|
Oh, and then there is this anomaly in kernel numbering: a ``2.2.0ac1''
|
|||
|
kernel that is ``not a number'' - says the configure script. I think
|
|||
|
this was resolved in newer scripts, otherwise you should maybe change
|
|||
|
the kernel version in the source.
|
|||
|
|
|||
|
|
|||
|
7.9. Tip: KDE and ALSA drivers
|
|||
|
|
|||
|
Suppose you have KDE up and running but you cannot get system sounds
|
|||
|
to work, like for opening windows, changing desktops, etc. Sound works
|
|||
|
in general. If your cd player and mp3 player and mixer all do work,
|
|||
|
then it's probably just "kwmsound" that's lacking.
|
|||
|
|
|||
|
So: make sure "kwmsound" is in your startscript ($KDEDIR/bin/startkde)
|
|||
|
|
|||
|
|
|||
|
7.10. Tip: use the ALSA devices
|
|||
|
|
|||
|
If you had sound support in your Linux before, then your applications
|
|||
|
will probably all point to /dev/pcm0, /dev/audio and /dev/mixer. This
|
|||
|
is fine, if you use OSS compatibility with the snd-pcm1-oss module. It
|
|||
|
might be better, however, to use the real ALSA devices, those found in
|
|||
|
/dev/snd/.
|
|||
|
|
|||
|
|
|||
|
7.11. Tip: removing all modules
|
|||
|
|
|||
|
Removing 10+ modules one by one is not the way to go. Luckily, all
|
|||
|
modules start with the "snd-" prefix, so a little command line
|
|||
|
programming will do. You can easily remove ALSA sound by issuing a
|
|||
|
command like:
|
|||
|
|
|||
|
|
|||
|
|
|||
|
cat /proc/modules|gawk '/^snd-/{print $1}'|xargs -i rmmod {}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Juergen Kahrs wrote: ``I have a script that also removes soundcore and
|
|||
|
soundlow and sound if present and if they are not in use. This script
|
|||
|
processes /proc/modules three times so there should not be too many
|
|||
|
modules left after processing''. His solution is
|
|||
|
|
|||
|
|
|||
|
|
|||
|
awk '/^snd/||/^sound/&&($3==0){system("rmmod " $1)}' /proc/modules /proc/modules /proc/modules
|
|||
|
|
|||
|
|
|||
|
Please note: if some module is dependent on another module you cannot
|
|||
|
just remove the "higher" one. This means that you might need to issue
|
|||
|
a second removal statement. (I never encountered this situation
|
|||
|
though, it seems that you can remove the ALSA modules in the order
|
|||
|
they appear in /proc/modules).
|
|||
|
|
|||
|
|
|||
|
|