home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / mini / Alsa-sound < prev    next >
Text File  |  1999-05-17  |  51KB  |  1,585 lines

  1.   Alsa-sound-mini-HOWTO
  2.   Valentijn Sessink valentyn@alsa-project.org
  3.   v0.2, 18 May 1999
  4.  
  5.   Describes the installation of the ALSA sound drivers for Linux. These
  6.   sound drivers can be used as a replacement for the regular sound
  7.   drivers, as they are fully compatible.
  8.   ______________________________________________________________________
  9.  
  10.   Table of Contents
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.   1. Introduction
  68.  
  69.      1.1 Acknowledgments
  70.      1.2 Revision History
  71.      1.3 New versions of this document
  72.      1.4 Feedback
  73.      1.5 Distribution Policy
  74.  
  75.   2. Before you start
  76.  
  77.      2.1 Introduction
  78.      2.2 General information about the ALSA drivers
  79.      2.3 Supported hardware
  80.      2.4 Other HOWTO's
  81.         2.4.1 Sound cards
  82.         2.4.2 Plug and Play cards
  83.         2.4.3 Loadable modules
  84.         2.4.4 Kerneld
  85.  
  86.   3. How to install ALSA sound drivers
  87.  
  88.      3.1 What you need
  89.      3.2 Getting the drivers
  90.      3.3 Extracting
  91.      3.4 Compiling
  92.      3.5 Preparing the devices
  93.  
  94.   4. Loading the driver
  95.  
  96.      4.1 Inserting with modprobe
  97.      4.2 Which module for which card?
  98.         4.2.1 Gravis UltraSound Extreme
  99.         4.2.2 Gravis UltraSound MAX
  100.         4.2.3 ESS AudioDrive
  101.         4.2.4 Gravis UltraSound PnP
  102.         4.2.5 UltraSound 32-Pro
  103.         4.2.6 Soundblaster
  104.         4.2.7 Soundblaster 16
  105.         4.2.8 Yamaha OPL3-SA2/SA3 soundcards
  106.         4.2.9 S3 SonicVibes
  107.         4.2.10 Ensoniq/Soundblaster PCI64
  108.         4.2.11 CS4232/4232A
  109.         4.2.12 4235 and higher
  110.      4.3 modprobe for drivers without auto-probing
  111.         4.3.1 OPL3-SA2 and OPL3-SA3
  112.         4.3.2 CS4232/CS4232A chips
  113.         4.3.3 CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 chips
  114.      4.4 The kerneld approach
  115.      4.5 Backwards compatibility
  116.  
  117.   5. Testing and using
  118.  
  119.      5.1 The /proc filesystem
  120.      5.2 The mixer
  121.      5.3 The /dev/snd/ devices
  122.      5.4 Additional information
  123.         5.4.1 /proc/asound/#/pcm#0
  124.         5.4.2 /proc/asound/#card#/sb16
  125.  
  126.   6. Tips and Troubleshooting
  127.  
  128.      6.1 Compiling the driver
  129.         6.1.1 Linux kernel sourcetree
  130.      6.2 Loading the driver
  131.         6.2.1 Sound card compatibility
  132.         6.2.2 ``Device busy'' or ``unresolved symbols''
  133.         6.2.3 Unresolved symbols revisited
  134.         6.2.4 Check the PnP setup
  135.         6.2.5 Are your parameters right ?
  136.      6.3 Driver loaded... but no sound
  137.         6.3.1 Unmuting
  138.         6.3.2 OSS/Linux compatibility
  139.      6.4 General suggestions
  140.         6.4.1 Try using ``insmod''
  141.         6.4.2 Read the INSTALL file.
  142.         6.4.3 Debug messages
  143.         6.4.4 If all else fails...
  144.      6.5 Bug reports
  145.      6.6 Tip: playing CD's
  146.      6.7 Tip: installing the MIDI serial driver
  147.      6.8 Tip: new kernel? New modules!
  148.      6.9 Tip: KDE and ALSA drivers
  149.      6.10 Tip: use the ALSA devices
  150.      6.11 Tip: removing all modules
  151.  
  152.  
  153.   ______________________________________________________________________
  154.  
  155.   1.  Introduction
  156.  
  157.   This is the ALSA Sound drivers mini-HOWTO. It gives you information
  158.   about installing and using the ALSA sound drivers for your soundcard.
  159.   The ALSA drivers are fully modularized sound drivers that support
  160.   kerneld and kmod. They are compatible with, but surpass the
  161.   possibilities of, the current OSS API. In other words: compatible, but
  162.   better.
  163.  
  164.   1.1.  Acknowledgments
  165.  
  166.   This documents contains information I got from the ALSA driver page.
  167.   The structure was ripped off the SB-mini-HOWTO, mainly because it had
  168.   about the structure I was looking for. Thanks to the SGML Tools
  169.   package, this HOWTO is available in several formats, all generated
  170.   from a common source file. Thanks to Erik Warmelink for proof reading,
  171.   thanks to Alfred Munnikes for a couple of questions and helpful
  172.   suggestions. Yamahata Isaku thanks for the Japanese translation,
  173.   Miodrag Vallat for the translation in French. Later on, Steve Crowder
  174.   did a great job by reading and editing the whole text.  Thanks to
  175.   Marc-Aur`ele Darche, Piotr Ingling, Juergen Kahrs and Tim Pearce for
  176.   useful tips and additions.
  177.  
  178.   1.2.  Revision History
  179.  
  180.   Version 1.4 - May 18, 1999. Included the URL to the French version,
  181.   changed more URLs.
  182.  
  183.   Version 1.3 - May 16, 1999. Thanks to Jaroslav this HOWTO has found a
  184.   home at the ALSA-project website.  As a result of that, some updates
  185.   in mail and web addresses.
  186.  
  187.   Version 1.2 - May 11, 1999. Several updates.
  188.  
  189.   Version 1.1 - March 11, 1999. Added a couple of sound cards from the
  190.   new 0.3 series drivers, wrote a bit about the 2.2 series kernel.
  191.  
  192.   Version 1.0 - February 8, 1999. Added a few things to the
  193.   troubleshooting section, but we seem fairly complete.
  194.  
  195.   Version 0.3 beta - January 20, 1999. A link on the ALSA-homepage. Ha,
  196.   we're official!
  197.  
  198.  
  199.   Version 0.2 alpha - Mid January 1999, first .sgml-version.
  200.  
  201.   Version 0.1 alpha - January 1999, first version, mostly HTML.
  202.  
  203.   Still: please submit any patches in plain English, you native
  204.   speakers!
  205.  
  206.  
  207.   1.3.  New versions of this document
  208.  
  209.   The latest version can be found at http://www.alsa-
  210.   project.org./~valentyn
  211.  
  212.   Other formats (full size html, sgml, txt) are in the directory other-
  213.   formats.
  214.  
  215.   Yamahata Isaku has translated a Japanese version, which will be
  216.   available at the Japanese ALSA site,
  217.   http://plaza21.mbn.or.jp/~momokuri/alsa/index.html
  218.  
  219.   Miodrag Vallat translated a French version, which is available at
  220.   http://www.freenix.fr/unix/linux/HOWTO/mini/Alsa.html.
  221.  
  222.   If you make a translation of this document into another language, let
  223.   me know and I'll include a reference to it here.
  224.  
  225.   1.4.  Feedback
  226.  
  227.   I rely on you, the reader, to make this HOWTO useful. If you have any
  228.   suggestions, corrections or comments, please send them to me (alsa-
  229.   howto@alsa-project.org), and I will try to incorporate them in the
  230.   next revision.
  231.  
  232.   Please note: I do not get a lot of mail about the ALSA drivers and any
  233.   addition is welcome. Even a ``thank you for'' is appreciated - maybe
  234.   it's not too much work to add a ``I appreciated most'' or ``this-or-
  235.   that was not immediately clear to me''-section.
  236.  
  237.   If you publish this document on a CD-ROM or in hardcopy form, a
  238.   complimentary copy would be appreciated. Mail me for my postal
  239.   address. Also consider making a donation to the Linux Documentation
  240.   Project to help support free documentation for Linux. Contact the
  241.   Linux HOWTO co-ordinator, Tim Bynum linux-howto@metalab.unc.edu, for
  242.   more information.
  243.  
  244.   1.5.  Distribution Policy
  245.  
  246.   Copyright 1998/1999 Valentijn Sessink
  247.  
  248.   This HOWTO is free documentation; you can redistribute it and/or
  249.   modify it under the terms of the GNU General Public License as
  250.   published by the Free Software Foundation; either version 2 of the
  251.   License, or (at your option) any later version.
  252.  
  253.   This document is distributed in the hope that it will be useful, but
  254.   without any warranty; without even the implied warranty of
  255.   merchantability or fitness for a particular purpose. See the GNU
  256.   General Public License for more details.
  257.  
  258.   You can obtain a copy of the GNU General Public License by writing to
  259.   the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  260.   USA.
  261.  
  262.  
  263.  
  264.  
  265.   2.  Before you start
  266.  
  267.  
  268.  
  269.   2.1.  Introduction
  270.  
  271.   This document tries to help you install and use the ALSA sound drivers
  272.   in your Linux system. The reference system is a Slackware 3.5
  273.   distribution of Linux on an AMD/K6 computer (x86 compatible), but it
  274.   should work with any other Linux distribution. I do not know if the
  275.   ALSA drivers work on other platforms, according to the documentation,
  276.   Alpha has been tested and proven to work.  I have only x86 PC's here,
  277.   so any additional information you may have would be appreciated.
  278.  
  279.   It might be handy to read the Linux Sound HOWTO (see section Other
  280.   HOWTO's), but that HOWTO focuses on the built-in kernel drivers.
  281.  
  282.   2.2.  General information about the ALSA drivers
  283.  
  284.   The ALSA sound driver was originally written as a replacement for the
  285.   Linux kernel sound for Gravis UltraSound (GUS) cards. As this GUS
  286.   replacement proved to be a success, the author started the ALSA
  287.   project for a generic driver for several sound chips, with fully
  288.   modularized design.
  289.  
  290.   It is compatible with the OSS/Free and OSS/Linux sound drivers (the
  291.   drivers in the kernel), but has its own interface that is even better
  292.   than the OSS drivers. A list of features can be found at
  293.   http://www.alsa-project.org/intro.html
  294.  
  295.   The main page of the ALSA project is http://www.alsa-project.org/
  296.  
  297.   2.3.  Supported hardware
  298.  
  299.   The ALSA drivers support only a subset of all sound cards available.
  300.   As the time of writing, the following cards are supported:
  301.  
  302.   ╖  Cards with a Trident 4D Wave DX/NX chipset, thanks to Trident
  303.      Microsystems who offered ALSA ``first cut'' GPL'd drivers (MIXER
  304.      and PCM devices only) and documentation for their 4D Wave PCI audio
  305.      chipsets.  See
  306.      http://www.tridentmicro.com/HTML/products%20folder/audio.htm for
  307.      more information. The drivers are now in cvs, and will be included
  308.      with the ALSA 0.3.0-pre5 release.
  309.  
  310.   ╖  Gravis Ultrasound (GUS): "PnP",  Extreme, Classic/ACE, MAX
  311.  
  312.   ╖  Cards with a GUS chipset: Dynasonic 3-D, STB Sound Rage 32,
  313.      UltraSound 32-Pro (STB)
  314.  
  315.   ╖  Soundblaster: 1.0, 2.0, Pro, 16, AWE32/64, PCI64
  316.  
  317.   ╖  ESS AudioDrive ESx688
  318.  
  319.   ╖  ESS ES18xx (chipsets). Please note that I personally experienced a
  320.      lot of trouble with the ESS1888. The developer of the driver for
  321.      this card did his best, but to no avail.
  322.  
  323.   ╖  ESS Solo-1 ES1938
  324.  
  325.   ╖  Yamaha: OPL3-SA2, OPL3-SA3 (chipsets)
  326.  
  327.   ╖  OAK Mozart
  328.  
  329.   ╖  Schubert 32 PCI (PINE, S3 SonicVibes PCI chipset)
  330.  
  331.   ╖  Ensoniq AudioPCI ES1370/1371 PCI soundcards (Soundblaster PCI64)
  332.  
  333.   ╖  SonicVibes PCI soundcards (PINE Schubert 32 PCI)
  334.  
  335.      Then a whole lot of Crystal Semiconductors-based sound boards are
  336.      supported.  These chips can be found in a lot of hardware, in
  337.      separate cards (some Philips PCA series)and on motherboards (e.g.
  338.      IBM Aptiva, Dell computers). Boards based on the following chipsets
  339.      are supported:
  340.  
  341.   ╖  4232
  342.  
  343.   ╖  4232A
  344.  
  345.   ╖  4235
  346.  
  347.   ╖  4236B
  348.  
  349.   ╖  4237B
  350.  
  351.   ╖  4238B
  352.  
  353.   ╖  4239
  354.  
  355.      A more recent list may be found inside the driver package itself,
  356.      that is in doc/SOUNDCARDS
  357.  
  358.   2.4.  Other HOWTO's
  359.  
  360.   This ALSA-sound-mini-HOWTO is just mini. Other HOWTO's may help you
  361.   out in case this one is too terse. I will name a few things you may
  362.   come across while trying to install the ALSA drivers. HOWTO's can
  363.   generally, be found at mirrors of Metalab (the former Sunsite). So
  364.   take a look at http://metalab.unc.edu/LDP/mirrors.html and pick out
  365.   your closest mirror site. You can find HOWTO's in the directory
  366.   LDP/HOWTO/.  Please note: the links in this document will all be
  367.   relative to /LDP/HOWTO/mini. If you look at this document from a
  368.   reasonably good mirror site, you will find the HOWTO's.
  369.  
  370.   Then a note for the 2.2.x kernel series. For the 2.2.x kernel series,
  371.   sound support is like any other support: it works, but it is different
  372.   from what you used to do. This HOWTO (like any other HOWTO) will
  373.   concentrate on the 2.0 series kernel, although I'll try to point out
  374.   the differences.  I will gladly add anything that would help bring
  375.   this HOWTO upto date with the 2.2 series kernel.
  376.  
  377.   2.4.1.  Sound cards
  378.  
  379.   Perhaps you bought a sound card already, or maybe it has been
  380.   installed in your computer for ages. And now you are going to use it !
  381.   Have a look at the Sound-HOWTO to see if this is all worth the
  382.   trouble. (You might want to buy this new Mega-Rumble-Blaster first,
  383.   then try the ALSA drivers.)
  384.  
  385.   2.4.2.  Plug and Play cards
  386.  
  387.   Most modern sound cards for the Intel platform are ISA PnP cards,
  388.   which is an abbreviation for ''Plug and Play''. This means, that the
  389.   card has to be configured by the operation system. This has to be done
  390.   through an initialization routine at boot time. You probably need to
  391.   configure your card with the PnP-utils-package. Every recent Linux
  392.   distribution includes these tools. For usage have a look at the Plug-
  393.   and-Play-HOWTO
  394.  
  395.   The ALSA-drivers seem to have built in their own ISA-PnP-support for a
  396.   couple of sound cards. Unfortunately, as I cannot find documentation
  397.   about this, I cannot tell you how it works. If anyone out there wants
  398.   to try ALSA sound support while deliberately not using the ISA-PnP-
  399.   tools, please drop me a line.
  400.  
  401.   2.4.3.  Loadable modules
  402.  
  403.   The ALSA sound drivers are built as modules. You can find more
  404.   information about modules in the Kernel-HOWTO.  There is also a
  405.   module-HOWTO, but that is unmaintained at the moment; take a look at
  406.   the umaintained section of the Howto-HOWTO. There is a Modules-mini-
  407.   HOWTO though that may be useful.
  408.  
  409.   2.4.4.  Kerneld
  410.  
  411.   Another HOWTO that will be useful for some, is the Kerneld-mini-HOWTO.
  412.   Kerneld is a daemon that installs and removes kernel modules as
  413.   needed. (I have zero experience with it, so additional information on
  414.   the topic is welcome. The ALSA driver documentation contains some
  415.   information about configuration of the kerneld, this has been included
  416.   in this mini-HOWTO.)
  417.  
  418.  
  419.  
  420.   3.  How to install ALSA sound drivers
  421.  
  422.  
  423.  
  424.   3.1.  What you need
  425.  
  426.  
  427.  
  428.   ╖  a functional Linux system (e.g. the Slackware distribution), with
  429.      the "Development" packages installed (i.e. gcc, make etc.)
  430.  
  431.   ╖  a supported sound card
  432.  
  433.   ╖  some knowledge about Linux (meaning you know how to use "ls", "cd",
  434.      "tar" etc.)
  435.  
  436.   ╖  a root-account
  437.  
  438.      If you have a PnP card, you will also need:
  439.  
  440.   ╖  the isapnptools software package.
  441.  
  442.      The INSTALL text in the driver directory suggests that for some
  443.      cards, PnP support is native. I also received a suggestion from
  444.      Jaroslav about this.  When I get further information about this
  445.      topic I will add it to this mini-HOWTO.
  446.  
  447.   Please note that you should not have any sound drivers active when you
  448.   want to use the ALSA drivers. If you have a kernel with sound drivers
  449.   compiled in, you'll need a kernel recompilation. If you have the old
  450.   "sound.o" module active, you need to deactivate it. If you use
  451.   kerneld, this probably means deleting sound.o from the
  452.   /lib/modules/<kernel_version>/misc directory.  Newer RedHat systems
  453.   have a different sound approach, with several sound modules active.
  454.   You need to deactivate them all.
  455.  
  456.   The 2.2 series kernel has a new approach to sound. You should include
  457.   sound support here ! Yep, that's right: you add sound support to the
  458.   kernel, but do not include any sound card. Then compile and install
  459.   the kernel and after that, compile the ALSA-drivers.
  460.  
  461.  
  462.  
  463.   3.2.  Getting the drivers
  464.  
  465.   The ALSA drivers are available from ftp://ftp.alsa-project.org/pub/
  466.   and there is a mirror at ftp://linux.a2000.nl/alsa For a fully
  467.   functional ALSA-installation, you will need the driver, the libs and
  468.   the utilities; e.g if you chose the mirror you would get
  469.   ftp://linux.a2000.nl/alsa/driver/alsa-driver-0.3.0-pre4.tar.gz,
  470.   ftp://linux.a2000.nl/alsa/lib/alsa-lib-0.3.0pre4.tar.gz and
  471.   ftp://linux.a2000.nl/alsa/utils/alsa-utils-0.3.0-pre4.tar.gz (and NO
  472.   these are not full links, you'd better look at the original place if
  473.   there are newer versions available, simply get the last one).
  474.  
  475.   3.3.  Extracting
  476.  
  477.   You extract the drivers by some reasonable command, like the all-time
  478.   tar -zxf <file>. For newbies and for those with amnesia:
  479.  
  480.  
  481.        cd /usr/src
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.        tar -zxf ~/alsa-driver-0.3.0-pre4.tar.gz
  489.  
  490.  
  491.  
  492.  
  493.   (If this worked you are either logged in as root always, which is the
  494.   wrong way, stop here and read the DOS/Win95-to-Linux-HOWTO, or you
  495.   already thought this would be the administrative thing you needed
  496.   superuser/rootprivs for. So: for this you need rootprivs, type a "su"
  497.   and the password).
  498.  
  499.  
  500.        tar -zxf ~/alsa-lib-0.3.0pre4.tar.gz
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.        tar -zxf ~/alsa-utils-0.3.0-pre4.tar.gz
  508.  
  509.  
  510.  
  511.  
  512.   Also working and more fun: find ~ -name alsa* -exec tar -zxf {} \;
  513.   (Don't try this at home kids, it's just an example). Note that when
  514.   downloading the drivers with Netscape, you may accidentally get
  515.   unpacked drivers with a ".tgz" extension. If tar complains about the
  516.   file format, you may get better results by leaving off the "z" in the
  517.   tar options.
  518.  
  519.   3.4.  Compiling
  520.  
  521.   You need the drivers before you can compile and use the libs. You need
  522.   the libs before you can compile or use the utils. So let's begin:
  523.  
  524.  
  525.        cd alsa-driver-0.3.0-pre4
  526.  
  527.  
  528.  
  529.   (and for those not so experienced: try typing a <tab> (the "tab"-key)
  530.   after "alsa-d". That's called command line completion.)
  531.  
  532.  
  533.        ./configure
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.        make
  541.  
  542.  
  543.  
  544.  
  545.   Now you need to be 'root' to install the stuff (you probably were
  546.   "root" already)
  547.  
  548.  
  549.        make install
  550.  
  551.  
  552.  
  553.  
  554.   If this tells you that something like ``version.h'' cannot be found,
  555.   then you probably do not have a proper kernel source tree. You need a
  556.   couple of files of your kernel source to be able to compile the ALSA-
  557.   drivers. Unpack your favorite linux-2.x.y.tar.gz in /usr/src, and
  558.   issue a make menuconfig. (Actually, make symlinks may be enough).  Now
  559.   compile the libraries:
  560.  
  561.  
  562.        cd ../alsa-lib-0.3.0-pre4
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.        ./configure
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.        make
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.        make install
  584.  
  585.  
  586.  
  587.  
  588.   OK, you're getting it, the utilities:
  589.  
  590.  
  591.        cd ../alsa-utils-0.3.0-pre4
  592.  
  593.  
  594.  
  595.        ./configure
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.        make
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.        make install
  610.  
  611.  
  612.  
  613.  
  614.   Note: you can leave out the "make install" for the utilities at first.
  615.   You could even leave out the whole library-making and utility-making,
  616.   just to check if the driver works.
  617.  
  618.   3.5.  Preparing the devices
  619.  
  620.   There is a script in the driver-directory that will install the ALSA-
  621.   sound-devices in your /dev directory. Type
  622.  
  623.  
  624.        ./snddevices
  625.  
  626.  
  627.  
  628.  
  629.   from the driver-directory. There should be a /dev/snd subdirectory now
  630.   (test if it is there. If you are not familiar with even the "ls" com¡
  631.   mand, please consider reading other HOWTO's first. You should have
  632.   some basic Linux knowledge to install these drivers).
  633.  
  634.   Now you're ready to insert the driver, so please turn over to the next
  635.   paragraph.
  636.  
  637.   4.  Loading the driver
  638.  
  639.   There are two ways to use the ALSA-sound-modules. I personally prefer
  640.   using the manual method, meaning that I insert the driver at startup.
  641.   The ALSA-drivers were designed as loadable/unloadable modules - for
  642.   instance they do not reset the mixer after loading - so you can easily
  643.   use the kerneld approach.
  644.  
  645.   Please do read the section ``Backwards Compatibility''.  You need it
  646.   to have sound support ``the old way''.
  647.  
  648.   4.1.  Inserting with modprobe
  649.  
  650.   Note: If you have a PnP audio-card, you first need to set it to the
  651.   right (or at least some known) IO/IRQ/DMA. See the Plug-and-Play-
  652.   HOWTO. Did you configure your Plug-and-Play-soundcard ? Ok, then read
  653.   on please.  The main part is: do a "modprobe snd-<soundcard>". This
  654.   should do the trick. Please note that not all distributions do include
  655.   /sbin in your path.  If you get a "bash: modprobe: command not found",
  656.   this will most likely mean that modprobe is not in your path. Try
  657.   "/sbin/modprobe snd-sb16", or try to find the modprobe utility
  658.   elsewhere.
  659.  
  660.  
  661.   The most important difficulty is with the Crystal chipsets, for these
  662.   the ALSA-drivers are not auto probing. More recent information may be
  663.   acquired from the INSTALL file in the driver-directory. Two examples,
  664.   then a list: Gravis UltraSound (GUS) and compatibles:
  665.  
  666.  
  667.        /sbin/modprobe snd-gusclassic
  668.  
  669.  
  670.  
  671.  
  672.   For all 16-bit Soundblaster-cards (SoundBlaster 16 (PnP), SoundBlaster
  673.   AWE 32 (PnP), SoundBlaster AWE 64 (PnP):
  674.  
  675.  
  676.        /sbin/modprobe snd-sb16
  677.  
  678.  
  679.  
  680.  
  681.  
  682.   4.2.  Which module for which card?
  683.  
  684.  
  685.   4.2.1.  Gravis UltraSound Extreme
  686.  
  687.  
  688.   modprobe snd-gusextreme
  689.  
  690.   4.2.2.  Gravis UltraSound MAX
  691.  
  692.  
  693.   modprobe snd-gusmax
  694.  
  695.  
  696.  
  697.  
  698.   4.2.3.  ESS AudioDrive
  699.  
  700.   ESS AudioDrive ES-1688 and ES-688 soundcards
  701.  
  702.   modprobe snd-audiodrive1688
  703.  
  704.  
  705.   4.2.4.  Gravis UltraSound PnP
  706.  
  707.   Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32 and other
  708.   soundcards based on AMD InterWave (tm) chip.
  709.  
  710.   modprobe snd-interwave
  711.  
  712.   4.2.5.  UltraSound 32-Pro
  713.  
  714.   UltraSound 32-Pro (soundcard from STB used by Compaq) and other
  715.   soundcards based on AMD InterWave (tm) chip with TEA6330T circuit for
  716.   extended control of bass, treble and master volume
  717.  
  718.   modprobe snd-interwave-stb
  719.  
  720.   4.2.6.  Soundblaster
  721.  
  722.   8-bit Soundblaster cards (SoundBlaster 1.0, SoundBlaster 2.0,
  723.   SoundBlaster Pro)
  724.  
  725.   modprobe snd-sb8
  726.  
  727.   4.2.7.  Soundblaster 16
  728.  
  729.   16-bit SoundBlaster cards (SoundBlaster 16 (PnP), SoundBlaster AWE 32
  730.   (PnP), SoundBlaster AWE 64 (PnP). Please note: this module does not
  731.   support the SoundBlaster VibraX16 soundcard.
  732.  
  733.   modprobe snd-sb16
  734.  
  735.   4.2.8.  Yamaha OPL3-SA2/SA3 soundcards
  736.  
  737.   Just "modprobe snd-opl3sa" will not work, this driver does not do
  738.   autoprobing.  See below.
  739.  
  740.   4.2.9.  S3 SonicVibes
  741.  
  742.   S3 SonicVibes PCI soundcards. (PINE Schubert 32 PCI)
  743.  
  744.   modprobe snd-sonicvibes
  745.  
  746.  
  747.   4.2.10.  Ensoniq/Soundblaster PCI64
  748.  
  749.   Ensoniq AudioPCI ES1370/1371 PCI soundcards. (SoundBlaster PCI 64)
  750.  
  751.   modprobe snd-audiopci
  752.  
  753.  
  754.   4.2.11.  CS4232/4232A
  755.  
  756.   All soundcards based on CS4232/CS4232A chips.  Just "modprobe snd-
  757.   card-cs4232" will not work, no auto-probing. See below.
  758.  
  759.  
  760.   4.2.12.  4235 and higher
  761.  
  762.   All soundcards based on CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239
  763.   chips.  Just "modprobe snd-card-cs4236" will not work, no auto-
  764.   probing. See below.
  765.  
  766.  
  767.   4.3.  modprobe for drivers without auto-probing
  768.  
  769.   If you have a non-autoprobing driver, you need to supply additional
  770.   info at startup to have the driver work. More information can be found
  771.   in the file INSTALL in the driver directory.
  772.  
  773.   4.3.1.  OPL3-SA2 and OPL3-SA3
  774.  
  775.   According to the INSTALL file you need to supply all the information
  776.   for this driver. If you initialized the card with the isapnp-tools,
  777.   you can probably get info from the /etc/isapnp.conf file for the
  778.   following values:
  779.  
  780.  
  781.        snd_port - control port # for OPL3-SA chip
  782.        snd_wss_port - WSS port # for OPL3-SA chip (0x530,0xe80,0xf40,0x604)
  783.        snd_midi_port - port # for MPU-401 UART (0x300,0x330), -1 = disable
  784.        snd_fm_port - FM port # for OPL3-SA chip (0x388), -1 = disable
  785.        snd_irq - IRQ # for OPL3-SA chip (5,7,9,10)
  786.        snd_dma1 - first DMA # for Yamaha OPL3-SA chip (0,1,3)
  787.        snd_dma1_size - max first DMA size in kB (4-64kB)
  788.        snd_dma2 - second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable
  789.        snd_dma2_size - max second DMA size in kB (4-64kB)
  790.  
  791.  
  792.  
  793.   You would do a "modprobe snd-opl3sa snd_port=0xNNN snd_wss_port=0x530
  794.   snd_midi_port=-1 snd_fm_port=0x388 snd_irq=5 snd_dma1=0
  795.   snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" to load this driver
  796.   (without midi-support. I am still convinced that midi-support is the
  797.   thing you need when you have synthesizers and stuff and want to con¡
  798.   nect them to your Linux box. Never needed Midi-support even to play
  799.   midi-files.)
  800.  
  801.   Note that the "NN" values need to be supplied, only I do not know what
  802.   would be reasonable values. I do not know if the dma size option is
  803.   really required.
  804.  
  805.   4.3.2.  CS4232/CS4232A chips
  806.  
  807.   According to the INSTALL file you need to supply the main port for
  808.   this card. Note that with the driver for 3235/6/7/8/9 cards, the one
  809.   below, I ended up supplying all information (except DMA-size),
  810.   otherwise the driver did not work.  So you may as well use the whole
  811.   command line to insert the driver. If you initialized the card with
  812.   the isapnp-tools, you can probably get info from the /etc/isapnp.conf
  813.   file for the following values:
  814.  
  815.  
  816.        snd_port - port # for CS4232 chip (PnP setup - 0x534)
  817.        snd_cport - control port # for CS4232 chip (PnP setup - 0x120)
  818.        snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
  819.        snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
  820.        snd_jport - joystick port for CS4232 chip (PnP setup - 0x200), -1 =
  821.        disable
  822.        snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
  823.        snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
  824.        snd_dma1 - first DMA # for CS4232 chip (0,1,3)
  825.        snd_dma1_size - max first DMA size in kB (4-64kB)
  826.        snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
  827.        snd_dma2_size - max second DMA size in kB (4-64kB)
  828.  
  829.  
  830.  
  831.  
  832.   You would do a "modprobe snd-card-cs4232 snd_port=0x534
  833.   snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1
  834.   snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" to
  835.   load the driver for a "standard configured" soundcard. (Without midi-
  836.   support, see the note at Yamaha OPL-3, and no joystick support). If
  837.   you used different values in /etc/isapnp.conf, then you would use the
  838.   values here also (Note: it can be wise to use your brains anyway ;)
  839.  
  840.   Note that the "NN" values need to be supplied, only I do not know what
  841.   would be reasonable values. I do not know if the dma size option is
  842.   really required.
  843.  
  844.   4.3.3.  CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 chips
  845.  
  846.   According to the INSTALL file you need to supply the main port and
  847.   control ports for this card. Note that with a CS4237B card, I ended up
  848.   supplying all information (except DMA-size), otherwise the driver did
  849.   not work. So you may as well use the whole command line to insert the
  850.   driver, and not only supply snd_port and snd_cport. If you initialized
  851.   the card with the isapnp-tools, you can probably get info from the
  852.   /etc/isapnp.conf file for the following values:
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.   snd_port - port # for CS4232 chip (PnP setup - 0x534)
  860.   snd_cport - control port # for CS4232 chip (PnP setup - 0x120)
  861.   snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
  862.   snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
  863.   snd_jport - joystick port for CS4232 chip (PnP setup - 0x200), -1 = disable
  864.   snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
  865.   snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
  866.   snd_dma1 - first DMA # for CS4232 chip (0,1,3)
  867.   snd_dma1_size - max first DMA size in kB (4-64kB)
  868.   snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
  869.   snd_dma2_size - max second DMA size in kB (4-64kB)
  870.  
  871.  
  872.  
  873.  
  874.   You would do a "modprobe snd-card-cs4232 snd_port=0x534
  875.   snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1
  876.   snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" to
  877.   load the driver. (Without midi-support, see the note at Yamaha OPL-3,
  878.   and no joystick support).  Notes:
  879.  
  880.   ╖  the "NN" values need to be supplied, only I do not know what would
  881.      be reasonable values.
  882.  
  883.   ╖  my CS4237B works fine without explicit dma size option.
  884.  
  885.   4.4.  The kerneld approach
  886.  
  887.   kerneld is a daemon that inserts modules on request, and unloads them
  888.   once they are not in use anymore. Since I have no experience with
  889.   kerneld, I do not know if the information below is accurate. The info
  890.   comes from the INSTALL file in the ALSA-drivers package. Excellent
  891.   information about kerneld can be found in the kerneld-mini-HOWTO.
  892.  
  893.   Follow these steps:
  894.  
  895.   ╖  Edit your /etc/conf.modules (see below for examples)
  896.  
  897.   ╖  Run 'modprobe snd-card' where card is name of your card [Which I
  898.      find rather strange, since kerneld is supposed to load them? VS]
  899.  
  900.      Example for /etc/conf.modules for Gravis UltraSound PnP soundcard:
  901.  
  902.  
  903.        alias char-major-14 snd
  904.        alias snd-minor-oss-0 snd-interwave
  905.        alias snd-minor-oss-3 snd-pcm1-oss
  906.        alias snd-minor-oss-4 snd-pcm1-oss
  907.        alias snd-minor-oss-5 snd-pcm1-oss
  908.        alias snd-minor-oss-12 snd-pcm1-oss
  909.        alias snd-card-0 snd-interwave
  910.        options snd snd_major=14 snd_cards_limit=1
  911.        options snd-interwave snd_index=1 snd_id="guspnp" snd_port=0x220 snd_irq=5
  912.        snd_dma1=5 snd_dma2=6
  913.  
  914.  
  915.  
  916.  
  917.   Example if you want use more soundcards in one machine (configuration
  918.   below is for Sound Blaster 16 and Gravis UltraSound Classic):
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.   alias char-major-14 snd
  926.   alias snd-minor-oss-0 snd-mixer
  927.   alias snd-minor-oss-3 snd-pcm1-oss
  928.   alias snd-minor-oss-4 snd-pcm1-oss
  929.   alias snd-minor-oss-5 snd-pcm1-oss
  930.   alias snd-minor-oss-12 snd-pcm1-oss
  931.   alias snd-card-0 snd-sb16
  932.   alias snd-card-1 snd-gusclassic
  933.   options snd snd_major=14 snd_cards_limit=2
  934.   options snd-sb16 snd_index=1 snd_port=0x220 snd_irq=5 snd_dma8=1 snd_dma16=5
  935.   options snd-gusclassic snd_index=2 snd_irq=11 snd_dma1=6 snd_dma2=7
  936.  
  937.  
  938.  
  939.  
  940.   Example if two Gravis UltraSound Classic soundcards are present in
  941.   system:
  942.  
  943.  
  944.        alias char-major-14 snd
  945.        alias snd-minor-oss-0 snd-mixer
  946.        alias snd-minor-oss-3 snd-pcm1-oss
  947.        alias snd-minor-oss-4 snd-pcm1-oss
  948.        alias snd-minor-oss-5 snd-pcm1-oss
  949.        alias snd-minor-oss-12 snd-pcm1-oss
  950.        alias snd-card-0 snd-gusclassic
  951.        alias snd-card-1 snd-gusclassic
  952.        options snd snd_major=14 snd_cards_limit=2
  953.        options snd-gusclassic snd_index=1,2 snd_port=0x220,0x260 snd_irq=5,11
  954.        snd_dma1=5,6 snd_dma2=7,3
  955.  
  956.  
  957.  
  958.  
  959.  
  960.   4.5.  Backwards compatibility
  961.  
  962.   If you want to preserve OSS/Free or OSS/Linux compatibility, you need
  963.   to insert one more driver: the snd-pcm1-oss driver for OSS-
  964.   compatibility.  Issue a
  965.  
  966.  
  967.        modprobe snd-pcm1-oss
  968.  
  969.  
  970.  
  971.  
  972.   This will give you /dev/audio and /dev/dsp-support, just as the
  973.   OSS/Free (kernel) drivers and OSS/Linux (the $25 ones) do. Note that
  974.   this is only an emulation.
  975.  
  976.  
  977.   5.  Testing and using
  978.  
  979.   Now you should test if the sound driver really is available, then try
  980.   to use it.
  981.  
  982.   5.1.  The /proc filesystem
  983.  
  984.   You can find a lot of useful information about your system in the
  985.   /proc subdirectory. /proc is a "virtual" filesystem, meaning that it
  986.   does not exist in real life, but merely is a mapping to various
  987.   processes and tasks in your computer. In order for /proc to work, you
  988.   need to have support for it compiled into your kernel. Most linux
  989.   distributions have this as a default, but if you compiled a kernel and
  990.   left /proc out obviously there won't be anything in /proc.
  991.   /proc/modules gives information about loaded modules. Once the ALSA
  992.   sound drivers are loaded, if you type cat /proc/modules you should see
  993.   something like:
  994.  
  995.  
  996.        snd-pcm1-oss      4            0
  997.        snd-sb16          1            1
  998.        snd-sb-dsp        4    [snd-sb16]      0
  999.        snd-pcm1          4    [snd-pcm1-oss snd-sb-dsp]      0
  1000.        snd-pcm           3    [snd-pcm1-oss snd-sb16 snd-sb-dsp snd-pcm1]    0
  1001.        snd-mixer         3    [snd-pcm1-oss snd-sb16 snd-sb-dsp]      1
  1002.        snd-mpu401-uart   1    [snd-sb16]      0
  1003.        snd-midi          4    [snd-sb16 snd-sb-dsp snd-mpu401-uart]   0
  1004.        snd-opl3          1    [snd-sb16]      0
  1005.        snd-synth         1    [snd-sb16 snd-opl3]     0
  1006.        snd-timer         1    [snd-opl3]      0
  1007.        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
  1008.  
  1009.  
  1010.  
  1011.  
  1012.   If something went wrong during the installation of the driver, you
  1013.   will still see a couple of "snd" devices, but there won't be sound
  1014.   support.
  1015.  
  1016.   For example (Note: you should never issue this command as follows, the
  1017.   cs4236 driver needs options):
  1018.  
  1019.  
  1020.        win3:~# modprobe snd-card-cs4236
  1021.        /lib/modules/2.0.35/misc/snd-card-cs4236.o: init_module: Device or resource busy
  1022.        snd-mixer: Device or resource busy
  1023.        win3:~# cat /proc/modules
  1024.        snd-cs4236        2           0
  1025.        snd-cs4231        3    [snd-cs4236]    0
  1026.        snd-timer         1    [snd-cs4231]    0
  1027.        snd-pcm1          4    [snd-cs4236 snd-cs4231] 0
  1028.        snd-mixer         3    [snd-cs4236 snd-cs4231] 0
  1029.        snd-pcm           3    [snd-cs4236 snd-cs4231 snd-pcm1]       0
  1030.        snd-mpu401-uart   1           0
  1031.        snd-midi          4    [snd-mpu401-uart]       0
  1032.        snd-opl3          1           0
  1033.        snd-synth         1    [snd-opl3]      0
  1034.        snd-timer         1    [snd-cs4231 snd-opl3]   0
  1035.        snd               8    [snd-cs4231 snd-timer snd-pcm1 snd-mixer snd-pcm]     0
  1036.  
  1037.  
  1038.  
  1039.  
  1040.   You can check the existence of a soundcard by looking in
  1041.   /proc/asound/cards.  For example:
  1042.  
  1043.  
  1044.        bash$ cat /proc/asound/cards
  1045.        0 [card1          : SB16 - Sound Blaster 16
  1046.                            Sound Blaster 16 at 0x220, irq 5, dma 1&5
  1047.  
  1048.  
  1049.  
  1050.  
  1051.   In the previous example (where I forgot the options) the output would
  1052.   have been:
  1053.  
  1054.  
  1055.  
  1056.  
  1057.   win3:~# cat /proc/asound/cards
  1058.   --- no soundcards ---
  1059.  
  1060.  
  1061.  
  1062.  
  1063.   A working CS4236 card would produce
  1064.  
  1065.  
  1066.        0 [card1         ]: CS4236 - CS4237B
  1067.                            CS4237B at 0x534, irq 7, dma 1&0
  1068.  
  1069.  
  1070.  
  1071.  
  1072.   If you checked and doublechecked your settings and still see no sound
  1073.   card, take a look at the troubleshooting section.
  1074.  
  1075.   The /proc/asound/ virtual directory shows lots of other information
  1076.   about the driver. Please note that /proc/asound/ will only exist after
  1077.   you inserted the first ALSA module. If there is no /proc/asound, it
  1078.   simply means that the "snd" module was not loaded properly. You can
  1079.   find installed cards in /proc/asound/cards, then find information
  1080.   about card0 in /proc/asound/0, /proc/asound/1 for card1 etcetera.
  1081.  
  1082.   If cat /proc/asound/ shows something like
  1083.  
  1084.  
  1085.              ES1370 DAC2/ADC
  1086.              Playback isn't active.
  1087.              Record isn't active.
  1088.  
  1089.  
  1090.  
  1091.   this means that your driver is ready to go, but is not doing anything
  1092.   right now. (So everything went well).
  1093.  
  1094.   There is a third method to find information about the sound devices,
  1095.   namely if you inserted the OSS compatible driver there is a
  1096.   /dev/sndstat device. The ALSA drivers kindly request that you not to
  1097.   rely on this information as it is only there for compatibility with
  1098.   the OSS drivers and better information can easily be obtained from
  1099.   /proc/asound/.
  1100.  
  1101.   5.2.  The mixer
  1102.  
  1103.   Once the drivers for your sound card have been installed and your
  1104.   /proc filesystem tells you so, you can try to make a real sound. First
  1105.   of all, install the utility package, or at least put the "amixer"
  1106.   command in some reasonable place (like /usr/local/bin). First look at
  1107.   the mixer settings by typing "amixer". The output from amixer can
  1108.   greatly differ from card to card. My Soundblaster 16 shows:
  1109.  
  1110.  
  1111.        Master         0  % (-14.00dB) : 0  % (-14.00dB)
  1112.        Bass           0  % (-14.00dB) : 0  % (-14.00dB)
  1113.        Treble         0  % (-14.00dB) : 0  % (-14.00dB)
  1114.        Synth          0  % (-62.00dB) : 0  % (-62.00dB)
  1115.        PCM            0  % (-62.00dB) : 0  % (-62.00dB)
  1116.        Line-In        0  % (-62.00dB) : 0  % (-62.00dB) Mute
  1117.        MIC            0  % (-62.00dB) : 0  % (-62.00dB) Mute
  1118.        CD             0  % (-62.00dB) : 0  % (-62.00dB) Mute
  1119.        In-Gain        0  % (-18.00dB) : 0  % (-18.00dB)
  1120.        Out-Gain       0  % (-18.00dB) : 0  % (-18.00dB)
  1121.        PC Speaker     0  % (-18.00dB) : 0  % (-18.00dB)
  1122.  
  1123.   My Crystal 4237B based soundcard has a lot of other options:
  1124.  
  1125.  
  1126.        Master D       0  % (-22.00dB) : 0  % (-22.00dB) Mute
  1127.        3D Center      0  % (-22.50dB) : 0  % (-22.50dB)
  1128.        3D Space       0  % (-22.50dB) : 0  % (-22.50dB) Mute
  1129.        Synth          0  % (-94.50dB) : 0  % (-94.50dB) Mute
  1130.        FM             0  % (-94.50dB) : 0  % (-94.50dB) Mute
  1131.        DSP            0  % (-94.50dB) : 0  % (-94.50dB) Mute
  1132.        PCM            0  % (-94.50dB) : 0  % (-94.50dB) Mute
  1133.        Line-In        0  % (-34.50dB) : 0  % (-34.50dB) Mute
  1134.        MIC            0  % (-22.50dB) : 0  % (-22.50dB) Mute
  1135.        CD             0  % (-34.50dB) : 0  % (-34.50dB) Mute
  1136.        Record-Gain    0  % (  0.00dB) : 0  % (  0.00dB)
  1137.        In-Gain        0  % (-18.00dB) : 0  % (-18.00dB)
  1138.        Loopback       0  % (-94.50dB) : 0  % (-94.50dB) Mute
  1139.        Mono           0  % (-45.00dB) : 0  % (-45.00dB) Mute
  1140.        Aux A          0  % (-34.50dB) : 0  % (-34.50dB) Mute
  1141.  
  1142.  
  1143.  
  1144.  
  1145.   You have noticed the "Mute" entry, the CS4237B even mutes the master
  1146.   channel.  For the CS4237B, I would have to type amixer "master d"
  1147.   unmute to even be able to produce any sound at all. The Soundblaster
  1148.   does not have muted output, but amixer master 100 unmute would set the
  1149.   volume to 100% and unmute the master. You can use a number, a word
  1150.   like "mute" or "unmute", or both. Type amixer "master d" 100; amixer
  1151.   pcm 100 unmute to set the CS4237B card to maximum master volume and
  1152.   unmute PCM volume and set it to maximum. For separate L/R settings you
  1153.   use a colon, for example amixer CD 25:50. (No, I don't know which one
  1154.   is the left or right channel, but let me emphasize that this also
  1155.   depends heavily on the position of your speakers)
  1156.  
  1157.   You would set the CD channel to record by typing amixer cd rec and
  1158.   stop the recording setting again by typing amixer cd norec.  If you
  1159.   would like to record something from the microphone, you would probably
  1160.   use amixer record-gain 100; amixer mic 100 rec mute. (Using the
  1161.   microphone input unmuted will produce loud high-pitched sound if your
  1162.   mic picks up its own signal from the speakers again).  Unfortunately I
  1163.   have not been able to change the volume of the "3d center" and "3d
  1164.   space" settings with amixer. If anyone succeeds please let me know.
  1165.   You can use alsamixer for this job.
  1166.  
  1167.   The ALSA FAQ says that it is possible to restore mixer settings with
  1168.   cat <file> > /proc/asound/#/mixerC0D0, where <file> was obtained from
  1169.   /proc/asound/#/mixerC0D0. I have not been able to reproduce this as my
  1170.   system complains about non-existing devices.
  1171.  
  1172.   5.3.  The /dev/snd/ devices
  1173.  
  1174.   The alsa drivers have native sound-devices in the /dev/snd/ directory.
  1175.   If you have  one card you might see the following devices:
  1176.  
  1177.  
  1178.        /dev/snd/pcmC0D0 - the raw audio device for the card
  1179.        /dev/snd/mixerC0D0 - the mixer for card 0
  1180.        /dev/snd/controlC0D0 - the control device for card 0
  1181.  
  1182.  
  1183.  
  1184.  
  1185.   The first number means the number of the soundcard, the second number
  1186.   (if any) is the number of the device. A sound card with two PCM
  1187.   devices would have a pcmC0D0 and pcmC0D1 device.  Please note: the
  1188.   ALSA devices have changed between the previous version. Older ALSA
  1189.   drivers use /dev/snd/pcm00 (first number is the card, second number is
  1190.   the device).  If this HOWTO uses the older notation, please drop me a
  1191.   line so I can correct it.
  1192.  
  1193.   Now you are ready to put any soundfile you want into the PCM device of
  1194.   the first card. So try to cat any textfile (any file) to
  1195.   /dev/snd/pcmC0D0, like this: cat <filename> > /dev/snd/pcmC0D0. The
  1196.   filename can be any file, as long as it has some length. If you have a
  1197.   soundfile lying around somewhere, you could try that. You could also
  1198.   get the file at http://www.ldp.org/sounds/english.au this is Linus
  1199.   Torvalds saying how to pronounce Linux.
  1200.  
  1201.   The default setting of your sound device is 8000 Hz, 8 bit. That means
  1202.   that the "english.au" file mentioned above will produce speech, other
  1203.   test files will probably just produce noise. If you do not hear
  1204.   anything, check your speakers, try to run "amixer" again or consult a
  1205.   doctor.  (Later on you can easily use the full 48 KHz, 16 bit features
  1206.   of your sound card, by using your favourite sound player like sox or
  1207.   mpg123).
  1208.  
  1209.   If you loaded the "snd-pcm1-oss" module, you can also use the OSS-
  1210.   compatibility to access your sound card. The following mappings are
  1211.   made:
  1212.  
  1213.  
  1214.        /dev/snd/pcmC0D0 -> /dev/audio0 (/dev/audio) -> minor 4
  1215.        /dev/snd/pcmC0D0 -> /dev/dsp0 (/dev/dsp) -> minor 3
  1216.        /dev/snd/pcmC0D1 -> /dev/adsp0 (/dev/adsp) -> minor 12
  1217.        /dev/snd/pcmC1D0 -> /dev/audio1 -> minor 4+16 = 20
  1218.        /dev/snd/pcmC1D0 -> /dev/dsp1 -> minor 3+16 = 19
  1219.        /dev/snd/pcmC1D1 -> /dev/adsp1 -> minor 12+16 = 28
  1220.        /dev/snd/pcmC2D0 -> /dev/audio2 -> minor 4+32 = 36
  1221.        /dev/snd/pcmC2D0 -> /dev/dsp2 -> minor 3+32 = 39
  1222.        /dev/snd/pcmC2D1 -> /dev/adsp2 -> minor 12+32 = 44
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.   5.4.  Additional information
  1229.  
  1230.   The INSTALL file in the ALSA driver directory mentions some tricks to
  1231.   tell the driver which settings to use. If you need these commands it
  1232.   will depend on the application you use to play sound. Regular sound
  1233.   playing applications, like mpg123, sox (mostly called with the
  1234.   ``play'' command), or X11 applications like RealPlayer will probably
  1235.   do fine without these. I never used these anyway.
  1236.  
  1237.   5.4.1.  /proc/asound/#/pcm#0
  1238.  
  1239.  
  1240.  
  1241.  
  1242.        "Playback erase" - erase all additional informations about OSS applications
  1243.        "Playback <app_name> <fragments> <fragment_size> [<options>]"
  1244.        "Record erase" - erase all additional informations about OSS applications
  1245.        "Record <app_name> <fragments> <fragment_size> [<options>]"
  1246.  
  1247.  
  1248.  
  1249.  
  1250.   <app_name> - name of application with (highter priority) or without
  1251.   path
  1252.  
  1253.   <fragments> - number of fragments or zero if auto
  1254.  
  1255.   <fragment_size> - size of fragment in bytes or zero if auto
  1256.  
  1257.   <options> - optional parameters
  1258.  
  1259.   WR_ONLY - if application tries open pcm device with O_RDWR driver
  1260.   rewrites this to O_WRONLY (playback) - good for Quake etc...
  1261.  
  1262.   Examples:
  1263.  
  1264.  
  1265.        echo "Playback x11amp 128 16384" > /proc/asound/0/pcm0o
  1266.        echo "Playback squake 0 0 WR_ONLY" > /proc/asound/0/pcm0o
  1267.  
  1268.  
  1269.  
  1270.  
  1271.   5.4.2.  /proc/asound/#card#/sb16
  1272.  
  1273.  
  1274.  
  1275.  
  1276.        "Playback 8" -> driver will use always 8-bit DMA channel for playback.
  1277.        "Playback 16" -> driver will use always 16-bit DMA channel for playback.
  1278.        "Playback auto" (default) -> driver will use auto mode (first opened direction will use 16-bit DMA channel).
  1279.        "Record 8" -> driver will use always 8-bit DMA channel for record.
  1280.        "Record 16" -> driver will use always 16-bit DMA channel for record.
  1281.        "Record auto" (default) -> driver will use auto mode (first opened direction will use 16-bit DMA channel).
  1282.  
  1283.  
  1284.  
  1285.  
  1286.   Example: echo "Record 16" > /proc/asound/0/sb16
  1287.  
  1288.   For further reference, please consult the INSTALL file.
  1289.  
  1290.   6.  Tips and Troubleshooting
  1291.  
  1292.   Please take a look at the FAQ file in the sound driver directory. This
  1293.   section is still under construction.
  1294.  
  1295.   6.1.  Compiling the driver
  1296.  
  1297.  
  1298.   6.1.1.  Linux kernel sourcetree
  1299.  
  1300.   If your ALSA drivers do not compile correctly and tell you things
  1301.   about ``version.h'' or other header-files that cannot be found, this
  1302.   can mean that you do not have the kernel header files.  Take a look at
  1303.   the kernel-HOWTO, unpack a recent kernel in /usr/src and issue a make
  1304.   config.
  1305.  
  1306.  
  1307.   6.2.  Loading the driver
  1308.  
  1309.   Please check the following items.
  1310.  
  1311.  
  1312.   6.2.1.  Sound card compatibility
  1313.  
  1314.   Are you 100% sure that your sound card IS supported ? Do check it
  1315.   again.  Sometimes an X123 is not exactly an X123b and you might be
  1316.   wasting time.  On the other hand, even a supported card can give you
  1317.   troubles - it took me two hours to figure out the installation of a
  1318.   CS4237B which was, after all, just a fine example of RTFM.
  1319.  
  1320.  
  1321.   6.2.2.  ``Device busy'' or ``unresolved symbols''
  1322.  
  1323.   You might have a 2.0.x kernel with sound support compiled in, or the
  1324.   OSS/Lite (kernel) sound driver could be loaded (check with cat
  1325.   /proc/modules). Remove the driver or recompile the kernel (have a look
  1326.   at the Kernel-HOWTO).
  1327.  
  1328.   The sound module in the 2.0 series kernel is called ``sound.o'' and
  1329.   should not be active.  (The ALSA driver ``snd.o'' is OK, though).
  1330.  
  1331.   If you have a 2.2.x series kernel without sound driver compiled in,
  1332.   the ALSA drivers will not work, too.
  1333.  
  1334.   I know it this is confusing, so let me try to explain it one more
  1335.   time. If you have a 2.0.x series kernel (the command ``uname -a''
  1336.   tells you something like ``Linux penguin 2.0.35 #6 Wed Sep 23 10:19:16
  1337.   CEST 1998 i686 unknown'') then you need to leave out sound drivers in
  1338.   the kernel.
  1339.  
  1340.   If you have a 2.2.x series kernel you do need the sound drivers. A 2.2
  1341.   series kernel should be compiled with sound support, but without any
  1342.   sound card driver. So you select sound support but make sure that no
  1343.   specific sound card driver will be compiled.
  1344.  
  1345.  
  1346.   6.2.3.  Unresolved symbols revisited
  1347.  
  1348.   Another source of ``unresolved symbols'' messages could be a new
  1349.   kernel with older drivers. Please recompile the ALSA drivers after you
  1350.   recompile a new kernel. This will make sure that the drivers match
  1351.   your new kernel.
  1352.  
  1353.  
  1354.   6.2.4.  Check the PnP setup
  1355.  
  1356.   Are you sure that your card is active? Take another look at the PnP-
  1357.   HOWTO and check if you activated your sound card correctly.
  1358.  
  1359.  
  1360.   6.2.5.  Are your parameters right ?
  1361.  
  1362.   Check, doublecheck your sound card parameters. Please note: 534 is not
  1363.   543, nor is 0x534 the same as 534.
  1364.  
  1365.   Also, some sound cards must be loaded by a different name than might
  1366.   be expected. Take a break, a beer or whatever, and look again at your
  1367.   ``modprobe'' command. For example the Crystal 4232 driver should be
  1368.   inserted by modprobe snd-card-cs4232, not ``snd-cs4231'', and the
  1369.   SoundBlaster PCI 64 should be loaded with ``snd-audiopci'', not snd-
  1370.   es1370. (It's all in the docs, and even though I wrote the HOWTO, I
  1371.   once spent an evening trying to persuade snd-cs4231 to make sound).
  1372.  
  1373.  
  1374.   6.3.  Driver loaded... but no sound
  1375.  
  1376.  
  1377.  
  1378.   6.3.1.  Unmuting
  1379.  
  1380.   The ALSA drivers can use the ``muting'' facilities that most
  1381.   soundcards have. If you loaded the sound drivers and everything is
  1382.   fine but you get nothing but silence, then you probably forgot to
  1383.   unmute your card. You need ``amixer'' or ``alsamixer'' for this, both
  1384.   from the ALSA-util package.  Just typing
  1385.  
  1386.  
  1387.   amixer -c 1 master 70:70 unmute
  1388.   amixer -c 1 pcm 70:70 unmute
  1389.   amixer -c 1 cd 70:70 unmute
  1390.  
  1391.  
  1392.  
  1393.  
  1394.   should do for most applications.
  1395.  
  1396.  
  1397.   6.3.2.  OSS/Linux compatibility
  1398.  
  1399.   If this is the first time you use the ALSA drivers and you used the
  1400.   built-in sound drivers before, you probably want to have backwards
  1401.   compatible sound (i.e. use the /dev/pcmX devices). You need to load
  1402.   the ``OSS compatibility driver'' for this. Do a modprobe snd-pcm1-oss.
  1403.   (See the end of the section about loading the driver). Please note:
  1404.   snd-pcm1-oss is not equal to snd-pcm1, you need snd-pcm1-oss for old-
  1405.   fashioned sound support.
  1406.  
  1407.  
  1408.   6.4.  General suggestions
  1409.  
  1410.  
  1411.  
  1412.   6.4.1.  Try using ``insmod''
  1413.  
  1414.   It can always be useful to start with "insmod" instead of kerneld.
  1415.   Maybe you actually see the error on screen.
  1416.  
  1417.  
  1418.   6.4.2.  Read the INSTALL file.
  1419.  
  1420.   A lot of information can be found in the INSTALL file in the drivers
  1421.   directory. If your driver won't work check if there is additional
  1422.   information available.
  1423.  
  1424.  
  1425.   6.4.3.  Debug messages
  1426.  
  1427.   As a last resort, you can rebuild the driver and tell it to send debug
  1428.   information to /var/log/messages. Go to the driver-directory with cd
  1429.   /usr/src/alsa-driver-....  and type:
  1430.  
  1431.  
  1432.  
  1433.        ./configure --with-debug=detect; make clean; make
  1434.  
  1435.  
  1436.  
  1437.  
  1438.   Remove the driver (as far as it is active, see below for a general
  1439.   remove statement).  Then use the "modprobe" statement you used before
  1440.   to insert the newly compiled driver.  Look in /var/log/messages if
  1441.   there are any messages.
  1442.  
  1443.  
  1444.   6.4.4.  If all else fails...
  1445.  
  1446.   If these messages doesn't help you, send a message to the ALSA users
  1447.   mailing list, alsa-user@alsa-project.org.
  1448.  
  1449.   Include the following information:
  1450.  
  1451.   ╖  soundcard name + chip names present on your soundcard
  1452.  
  1453.   ╖  relevant sections in your isapnp.conf if you have ISA PnP soundcard
  1454.  
  1455.   ╖  your conf.modules or line which you activate ALSA driver
  1456.  
  1457.   ╖  all messages from /var/log/messages which should be relevant to the
  1458.      ALSA driver
  1459.  
  1460.  
  1461.   6.5.  Bug reports
  1462.  
  1463.   If you found a bug, the ALSA developers would like to know the
  1464.   following things (at minimum)
  1465.  
  1466.   1. driver + kernel version: 'cat /proc/asound/version'
  1467.  
  1468.   2. soundcard info
  1469.  
  1470.   ╖  soundcard name provided by manufacture
  1471.  
  1472.   ╖  list of chips which soundcard have onboard
  1473.  
  1474.   ╖  contents of 'cat /proc/asound/cards'
  1475.  
  1476.   3. all messages from /var/log/messages which should be relevant to
  1477.      ALSA driver
  1478.  
  1479.   4. problem description
  1480.  
  1481.  
  1482.   6.6.  Tip: playing CD's
  1483.  
  1484.   If you use kmod/kerneld and the ALSA drivers to play CD's, then
  1485.   kmod/kerneld probably do not load the drivers as expected. This is due
  1486.   to the fact that a command line CD player only tells the CD player to
  1487.   start playing without using any of the devices that tell kmod/kerneld
  1488.   that there is sound to occur. Using modprobe may be your only solution
  1489.   to this problem.
  1490.  
  1491.  
  1492.   6.7.  Tip: installing the MIDI serial driver
  1493.  
  1494.   Normally, the IO port of the serial device is owned by the standard
  1495.   serial device driver. So before you can do ``modprobe snd-serial'' we
  1496.   have to tell the driver to release the serial device.
  1497.  
  1498.   Here is the procedure.
  1499.  
  1500.  
  1501.  
  1502.        setserial /dev/ttyS0 uart none
  1503.        modprobe snd-serial
  1504.  
  1505.  
  1506.  
  1507.  
  1508.   (Replace /dev/ttyS0 with the appropriate /dev/ttySx device if your
  1509.   MIDI device uses a different serial device).
  1510.  
  1511.  
  1512.   6.8.  Tip: new kernel? New modules!
  1513.  
  1514.   After you upgrade your kernel, you probably need to recompile the ALSA
  1515.   drivers. If they are still in the original /usr/src directory, then
  1516.   please do not forget to issue a make clean before you do the
  1517.   ./configure, make, make install thing.
  1518.  
  1519.   Oh, and then there is this anomaly in kernel numbering: a ``2.2.0ac1''
  1520.   kernel that is ``not a number'' - says the configure script. I think
  1521.   this was resolved in newer scripts, otherwise you should maybe change
  1522.   the kernel version in the source.
  1523.  
  1524.  
  1525.   6.9.  Tip: KDE and ALSA drivers
  1526.  
  1527.   Suppose you have KDE up and running but you cannot get system sounds
  1528.   to work, like for opening windows, changing desktops, etc. Sound works
  1529.   in general.  If your cd player and mp3 player and mixer all do work,
  1530.   then it's probably just "kwmsound" that's lacking.
  1531.  
  1532.   So: make sure "kwmsound" is in your startscript ($KDEDIR/bin/startkde)
  1533.  
  1534.  
  1535.   6.10.  Tip: use the ALSA devices
  1536.  
  1537.   If you had sound support in your Linux before, then your applications
  1538.   will probably all point to /dev/pcm0, /dev/audio and /dev/mixer. This
  1539.   is fine, if you use OSS compatibility with the snd-pcm1-oss module. It
  1540.   might be better, however, to use the real ALSA devices, those found in
  1541.   /dev/snd/.
  1542.  
  1543.  
  1544.   6.11.  Tip: removing all modules
  1545.  
  1546.   Removing 10+ modules one by one is not the way to go. Luckily, all
  1547.   modules start with the "snd-" prefix, so a little command line
  1548.   programming will do.  You can easily remove ALSA sound by issuing a
  1549.   command like:
  1550.  
  1551.  
  1552.  
  1553.        cat /proc/modules|gawk '/^snd-/{print $1}|xargs -i rmmod {}
  1554.  
  1555.  
  1556.  
  1557.  
  1558.   Juergen Kahrs wrote: ``I have a script that also removes soundcore and
  1559.   soundlow and sound if present and if they are not in use. This script
  1560.   processes /proc/modules three times so there should not be too many
  1561.   modules left after processing''. His solution is
  1562.  
  1563.  
  1564.  
  1565.        awk '/^snd/||/^sound/&&($3==0){system("rmmod " $1)}' /proc/modules /proc/modules /proc/modules
  1566.  
  1567.  
  1568.  
  1569.  
  1570.   Please note: if some module is dependent on another module you cannot
  1571.   just remove the "higher" one.  This means that you might need to issue
  1572.   a second removal statement. (I never encountered this situation
  1573.   though, it seems that you can remove the ALSA modules in the order
  1574.   they appear in /proc/modules).
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.