
                             Alsa-sound-mini-HOWTO
                                       
Valentijn Sessink valentyn@alsa-project.org
:  yorkwu@ms4.hinet.net

   İv0.2, 2000615 (ԭv0.2, 18 May 1999)
     _________________________________________________________________
   
    Linux  AKSA Чʽİװ. . Ч
   ʽȡƽõЧʽ.
     _________________________________________________________________
   
1. Introduction

     * 1.1 л
     * 1.2 汾ظ
     * 1.3 ļ°汾?
     * 1.4 
     * 1.5 ɢʱע
       
2. ڿ֮ǰ

     * 2.1 
     * 2.2  ALSA ʽһѶ
     * 2.3 ֧ԮӲ
     * 2.4  HOWTO
       
3. ΰװ ALSA Чʽ

     * 3.1 Ҫʲ
     * 3.2 ȡʽ
     * 3.3 ⿪ʽ
     * 3.4 
     * 3.5 ׼豸
       
4. ʽ

     * 4.1  modprobe ʽ
     * 4.2 ſӦĸʽ?
     * 4.3 Զʱʽ
     * 4.4 ʹ kerneld 
     * 4.5 ǰ
       
5. Լʹ

     * 5.1 /proc ϵͳ
     * 5.2 
     * 5.3 /dev/snd/ µ豸
     * 5.4 Ѷ
       
6. Сɼų

     * 6.1 ʽ
     * 6.2 ʽ
     * 6.3 ʽ... û
     * 6.4 һԽ
     * 6.5 ر
     * 6.6 С:  CD ʱ...
     * 6.7 С: װ MIDI ʽ
     * 6.8 С: º? ģ!
     * 6.9 С: KDE  ALSA ʽ
     * 6.10 С: ʹ ALSA 豸
     * 6.11 С: Ƴģ
     _________________________________________________________________
   
1. Introduction

    ALSA Чʽ mini HOWTO. ṩ춰װʹ ALSA Ч
   ʽѶ. ALSA ʽȫģ黯, ֧Ԯ kerneld  kmod. 
   OSS API , Խ. һ仰: , .
   
1.1 л

   ļҴ ALSA ʽվõѶ. ṹ SB-mini-HOWTO
   , ҪĽṹеĺܽӽ. л [1]SGMLTools , ʹ
   ñ HOWTO ֻһõԭʼ, Բָʽ. лл Erik Warmelink
   У(proof reading),  Alfred Munnikes ṩܶĽ,
   Yamahata Isaku , Լ Miodrag Vallat ɷ. , Steve
   Crowd ܺõУȫ, Լ Marc-Aur`ele Darche, Piotr Ingling,
   Juergen Kahrs  Tim Pearce ṩõС(tip).
   
1.2 汾ظ

   1.4  - 1999  5  18 . ˷İ URL, ˸ URL.
   
   1.3  - 1999  5  16 . лл Jaroslav,  ALSA ƻվ˱
   HOWTO ¼. , ʼվλַЩı.
   
   1.2  - 1999  5  11 . .
   
   1.1  - 1999  3  11 . µ 0.3 ʽмһЩЧ
   ʽ. дһ 2.2 ĵĲ.
   
   1.0  - 1999  2  8 . ǽڼӽЩ, .
   
   0.3 beta  - 1999  1  20 .  ALSA վ. ! 
   ʽ!
   
   0.2 alpha . 1999  1 . һ sgml .
   
   0.1 alpha . 1999  1 . һ,  HTML.
   
   Still: please submit any patches in plain English, you native
   speakers! : ʹӢĸλ, ĴӢĵ patch!
   
1.3 ļ°汾?

   °汾 [2]http://www.alsa-project.org./~valentynҵ.
   
   ʽ(ȫ html, sgml, txt) [3]other-formats Ŀ¼.
   
   Yamahata Isaku İ, ձ ALSA վ,
   [4]http://plaza21.mbn.or.jp/~momokuri/alsa/index.html
   
   Miodrag Vallat ˷İ, 
   [5]http://www.freenix.fr/unix/linux/HOWTO/mini/Alsa.htmlҵ.
   
   ļ, ֪, ҽ.
   
1.4 

    HOWTO ļ, ҪλЭ, ԽԽ. κν, 
   , ,  ( [6]alsa-howto@alsa-project.org) ҽһ
   Щ.
   
   ע: һûյܶ ALSA ʽż, κӶܻӭ. ʹ
    "лл..." . Ҳм "ʹ"  "һǿ̫
   " ЩǺѰ! (?) (ԭ 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. )
   
   ΨϻӲʽдļ, һ. ͵ҵ
   ʵַ. Ҳ뿼һ¶ Linux ļƻ, ֧ Linux 
   .  Linux HOWTO Э Tim Bynum ( [7]linux-howto@metalab.unc.edu
   ) ԵõѶ.
   
1.5 ɢʱע

   Copyright 1998/1999 Valentijn Sessink
   
   İ֮ȨΪ Valentijn Sessink    (1999)
   
   (Ȩԭյ)
   
   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.
   
    HOWTO ļ; ںϺ GNU һ㹫ִ
   صɢ/޸. ѡøִ֮ڶ(ѡ)
   İ汾.
   
   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.
   
   ļ֮ɢ, ϣ, ṩκα֤; ʹ ҵ  ض
   ; ֤. 뿴 GNU һ㹫ִ.
   
   You can obtain a copy of the GNU General Public License by writing to
   the [8]Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
   02139, USA.
   
   дŵ [9], ַ 675 Mass Ave, Cambridge, MA
   02139, USA. ȡ GNU һ㹫ִ.
   
2. ڿ֮ǰ

2.1 

   ļ԰ Linux °װʹ ALSA Чʽ. οϵͳʹ
   AMD/K6 (x86 )Ļ, װ Slackware 3.5 ׼. Ӧװκ
    Linux ׼. ļ ALSA ʽǷƽ̨ʹ
   ö֪. Alpha Ѿ֤. ֻ x86 PC, Ҫκζ
   ϶ܻӭ.
   
    Linux Sound HOWTO(뿴 HOWTO һ)ܸа, Ǹ HOWTO
   ҪۺڽЧʽ.
   
2.2  ALSA ʽһѶ

   ALSA Чʽԭдȡ Gravis UltraSound  Linux 
   ʽ. ʵ֤ȡúܳɹ, ߱㿪ʼ ALSA ƻ, ȫģ, д
   һЧƬһʽ.
   
    OSS/Free  OSS/Linux Чʽ(ĵʽ), б
   OSS ʽõı. һЩŵ
   [10]http://www.alsa-project.org/intro.html.
   
   ALSA ƻҳ [11]http://www.alsa-project.org/
   
2.3 ֧ԮӲ

   ALSA ʽ֧ԮݵЧ. ڱдʱ, µĿб֧Ԯ:
     * ʹ Trident 4D Wave DX/NX ƬĿ, л Trident Microsystem ṩ
        ALSA "һ" GPL ʽ( MIXER  PCM 豸), Լǵ 4D
       Wave PCI ЧƬļ. 뿴
       http://www.tridentmicro.com/HTML/products%20folder/audio.htm õ
       Ѷ. ʽ CVS,  ALSA 0.3.0-pre5 м.
     * Gravis Ultrasound (GUS): "PnP",  Extreme, Classic/ACE, MAX
     * ʹ GUS ƬĿ: Dynasonic 3-D, STB Sound Rage 32, UltraSound
       32-Pro (STB)
     * Կ: 1.0, 2.0, Pro, 16, AWE32/64, PCI64
     * ESS AudioDrive ESx688
     * ESS ES18xx (chipsets). עҸ ESS1888 Ͼܶ鷳. 
       ʽĿѾ, but to no avail.
     * ESS Solo-1 ES1938
     * Yamaha: OPL3-SA2, OPL3-SA3 (Ƭ)
     * OAK Mozart
     * Schubert 32 PCI (PINE, S3 SonicVibes PCI Ƭ)
     * Ensoniq AudioPCI ES1370/1371 PCI Ч (Soundblaster PCI64)
     * SonicVibes PCI Ч (PINE Schubert 32 PCI)
       
   һƱ Crystal Semiconductors Ŀ֧Ԯ. ЩƬںܶӲ
   , Чϵ( Philips PCA ϵ), Ҳڽ( IBM
   Aptiva, Dell computers) µľƬ֧Ԯ.
     * 4232
     * 4232A
     * 4235
     * 4236B
     * 4237B
     * 4238B
     * 4239
       
   µбʽ׼е doc/SOUNDCARDS пҵ.
   
2.4  HOWTO

   ALSA-sound-mini-HOWTO ֻ. Щƪе, 
   HOWTO ܶа. һ԰װ ALSA ʽʱܻϵһ
   Щ״. һ˵, HOWTO  metalab(ǰ sunsite)ľվ (mirror
   site)ҵ.  [12]http://metalab.unc.edu/LDP/mirrors.html, ȥ
   ľվĶ.  LDP/HOWTO Ŀ¼ҵ HOWTO ļ. ע
   : ļ /LDP/HOWTO/mini . Ӿúһµվ̨
   , ҵЩ HOWTO.
   
    2.2.x 㲹.  2.2.x ϵк, Ч֧Ԯ֧ͬԮ
   һ, , ϰߵ÷ͬ.  HOWTO ( HOWTO һ) 
   2.0 ϵкΪ, һָ֮ͬ. ҽܸ˼κʹ
   HOWTO ܸ 2.2 ϵеĶ.
   
  Ч
  
   ҲѾƬЧ, ѾװĵԺü. 
   ! ȿ [13]Sound-HOWTO, ǲֵð. (Ҳ
   ʲ Mega-Rumble-Blaster Ŀ,  ALSA ʽ.
   
  弴õĿ
  
    Intel ƽ̨Ч ISA PnP ,  "Plug and Play" д. 
   ָſ뾭ҵϵͳ趨. ڿʱһ. Ҳ
   Ҫ PnP-utils ׼趨. ÿ Linux ׼
   Щ. ÷ [14]Plug-and-Play-HOWTO
   
   ALSA ʽƺһЩһЩԼ ISA 弴֧Ԯ. Ȼҵ,
   Ϊ ޷ҵļ, ޷˵.  ALSA Ч֧
   Ԯ ISA-PnP-tools, һ˵.
   
  ģ
  
   ALSA ЧʽǽΪģ.  [15]Kernel-HOWTO еõģ
   ĸѶ. Ҳи module-HOWTO, Ŀǰ ά;  Howto-HOWTO 
   ￴άļС. и [16]Modules-mini-HOWTO . (?)
   
  Kerneld
  
   һĳЩõ HOWTO  [17]Kerneld-mini-HOWTO. Kerneld Ǹ
   ҪʱŰװƳģ פʽ(daemon). (߶Դûо, 
   ԻӭṩκѶ. ALSA ʽļ һЩ趨 kerneld 
   Ѷ, Ѱ춱 mini-HOWTO.)
   
3. ΰװ ALSA Чʽ

3.1 Ҫʲ

     * һܶ Linux ϵͳ( Slackware ׼), аװ
       ( gcc, make ).)
     * ֧ԮЧ
     * һЩ Linux ֪ʶ(Ҫ "ls", "cd", "tar" . )
     * root ʺ
       
    PnP , ҲҪ:
     * isapnptools ׼
       
   ʽĿ¼е INSTALL ᵽЩʽѾܴ PnP 
   ֧Ԯ. Ҳ Jaroslav Ƕõһ۵. ҽõѶ, һ
   Ǽӽ mini-HOWTO. (ԭ 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. }
   
   עʹ ALSA ʽ, ӦκЧ
   ʽ. ĺںЧʽ, бҪر. ʹ
   þɵ sound.o ģ, . ʹ kerneld, ܾҪɾ
   ȥ /lib/modules/<İ汾>/misc Ŀ¼µ sound.o. µ RedHat ϵͳ
   Чʽ֯ʽ̫һ, Ҫüģ, Ҫȫ 
   ģ.
   
   2.2 ĶЧµķʽ. ӦҪЧ֧Ԯ! ǵ, û˵
   , ںм˶Ч֧Ԯ, ûаκЧĲ. Ȼر
   뼰װ,  ALSA ʽ.
   
3.2 ȡʽ

   ALSA ʽ [18]ftp://ftp.alsa-project.org/pub ҵ, 
   [19]ftp://linux.a2000.nl/alsa һݾ(mirror). Ҫװ ALSA 
   , Ҫʽ, ʽ⼰һЩóʽ; Ҳ˵ɾվץӦ
    [20]ftp://linux.a2000.nl/alsa/driver/alsa-driver-0.3.0-pre4.tar.gz,
   [21]ftp://linux.a2000.nl/alsa/lib/alsa-lib-0.3.0pre4.tar.gz, 
   [22]ftp://linux.a2000.nl/alsa/utils/alsa-utils-0.3.0-pre4.tar.gz. (,
   Ĳ, õԭص㿴û°, ץµ.)
   
3.3 ⿪ʽ

   ú tar -zxf <file> ⿪ʽ. µдֻǵ
   : (You extract the drivers by some reasonable command, like the
   all-time tar -zxf <file>. For newbies and for those with amnesia:)
   
cd /usr/src

tar -zxf ~/alsa-driver-0.3.0-pre4.tar.gz

   (ɹ, һֱʹ root ݽϵͳ, ǲԵ, ͣһ
   DOS/Win95-to-Linux-HOWTO. Ļ, Ѿ֪ǹϵͳ
   (administrative), Ҫ superuser/root Ȩ. , Ҫ root
   Ȩ,  su Լ.
   
tar -zxf ~/alsa-lib-0.3.0pre4.tar.gz

tar -zxf ~/alsa-utils-0.3.0-pre4.tar.gz

   Ҳ, ҸȤ: find ~ -name alsa* -exec tar -zxf {} \;
   (, Ҫڼ, ֻǸ. )עʹ Netscape 
   ʽ, ץµǽ⿪, 쵵 .tgz.  tar Թ
   ʽ,  tar е "z" ѡȥ, ԵõϺõĽ.
   
3.4 

   Ա뼰ʹúʽǰ, Ҫʽ. ˺ʽſ
   ʹùóʽ. ǿʼ:
   
cd alsa-driver-0.3.0-pre4

   (Щ̫о:  "alsa-d"  <tab> ("tab" ). ͻ
    Զ(command line completion).)
   
   (ע: иõķ?)
   
./configure

make

   Ҫ root ݰװ(Ѿ root )
   
make install

   Ӧ "version.h" Ҳ֮, ûưװԭʼ.
   Ҫ ALSA ʽҪԭʼеһЩ, õ
   linux-2.x.y.tar.gz  /usr/src ½⿪,  make menuconfig . (ʵ
   , make symlinks ܾ͹). ڱ뺯ʽ:
   
cd ../alsa-lib-0.3.0-pre4

./configure

make

make install

   OK, Ѿɹ, ǹóʽ:
   
cd ../alsa-utils-0.3.0-pre4

./configure

make

make install

   ע: ڵһα빫óʽʱȲ "make install". ȲҪ
   ʽ⼰óʽ, ֻһȷʽܲ.
   
3.5 ׼豸

   ʽĿ¼и(script)԰ ALSA Ч豸װ /dev
   Ŀ¼. ʽĿ¼´
   
./snddevices

   Ӧ /dev/snd Ŀ¼(ȿû.  "ls" 
   , 뿼ȶ HOWTO. ڰװʽǰӦЩ Linux ֪ʶ
   Ŷ.)
   
   ԰ʽ. һΰ.
   
4. ʽ

   ʹ ALSA Чģķ. ߸˱Ƚϲʹֶķ, Ҳ
   ڿ ʱʽ. ALSA ʽԿ/жģΪĿ --
   ˵ǲ -- Լ򵥵ʹ kerneld ķ.
   
   (ע: ԭֱΪ ALSA ʽƳɿ/жģ, Ϊ OSS Ҳ
    (ֻ, ģʹ˵ϲ, Ȼ취
   ( Sound HOWTO)), ᷭ޷͹ ALSA ŵ, ʷ˼. ϣ
   û...)
   
   һҪĶ [23]ǰ, ҪǰĳʽݵĻ.
   
4.1  modprobe ʽ

   ע:  PnP Ч, Ҫ趨ȷ(֪)
   IO/IRQ/DMA.  Plug-and-Play-HOWTO. Ѿ趨 弴 Ч
   ? , ȥ. Ҫ "modprobe snd-<soundcard>", 
   ӦþͿ. аװ׼ /sbin  PATH .
   õ "bash: modprobe: command not found" ĻӦ, 
   modprobe û path .  "/sbin/modprobe snd-sb16", 취ҳ
   modprobe óʽ.
   
    Crystal ƬĿ˵. ALSA ʽЩԶ
   . һѶʽĿ¼µ INSTALL . ߾
   , ȻǸб:
   
   Gravis UltraSound (GUS) ݿ:
   
/sbin/modprobe snd-gusclassic

   ȫ 16 λԪ SoundBlaster  (SoundBlaster 16 (PnP), SoundBlaster
   AWE 32 (PnP), SoundBlaster AWE 64 (PnP):
   
/sbin/modprobe snd-sb16

4.2 ſӦĸʽ?

  Gravis UltraSound Extreme
  
   modprobe snd-gusextreme
   
  Gravis UltraSound MAX
  
   modprobe snd-gusmax
   
  ESS AudioDrive
  
   ESS AudioDrive ES-1688  ES-688 Ч
   
   modprobe snd-audiodrive1688
   
  Gravis UltraSound PnP
  
   Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32 Լ
   AMD InterWave (tm) ƬЧ.
   
   modprobe snd-interwave
   
  UltraSound 32-Pro
  
   UltraSound 32-Pro (STB  Compaq ʹ) ʹ AMD InterWave (tm) 
   ƬԼ TEA6330T · bass, treble ƵĿ.
   
   modprobe snd-interwave-stb
   
  Soundblaster
  
   8-bit Soundblaster  (SoundBlaster 1.0, SoundBlaster 2.0,
   SoundBlaster Pro)
   
   modprobe snd-sb8
   
  Soundblaster 16
  
   16-bit SoundBlaster  (SoundBlaster 16 (PnP), SoundBlaster AWE 32
   (PnP), SoundBlaster AWE 64 (PnP). עⱾģ鲻֧Ԯ SoundBlaster
   VibraX16 Ч.
   
   modprobe snd-sb16
   
  Yamaha OPL3-SA2/SA3 Ч
  
    "modprobe snd-opl3sa" Ч, ʽԶ. 뿴.
   
  S3 SonicVibes
  
   S3 SonicVibes PCI Ч. (PINE Schubert 32 PCI)
   
   modprobe snd-sonicvibes
   
  Ensoniq/Soundblaster PCI64
  
   Ensoniq AudioPCI ES1370/1371 PCI Ч. (SoundBlaster PCI 64)
   
   modprobe snd-audiopci
   
  CS4232/4232A
  
   ʹ CS4232/CS4232A ƬЧ.  "modprobe snd-card-cs4232"
   û, Զ, .
   
  4235 Լ
  
   ʹ CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 Ƭ. 
   "modprobe snd-card-cs4236" û, Զ, .
   
4.3 Զʱʽ

   ҪõʽԶ, ʽǰṩ
   Ѷ. ѶʽĿ¼µ INSTALL ҵ.
   
  OPL3-SA2  OPL3-SA3
  
    INSTALL , ҪṩʽһѶ.  isapnp-tools 
   ʼĿ, Ҳ /etc/isapnp.conf пֵ:
   
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)

   Ҫ "modprobe snd-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" ʽ(û
   midi ֧Ԯ, Ȼкϳ֮ Linux , Ҫ. 
   ֻ MIDI Ͳ.)
   
    "NN" ֵҪֵ, ҲúֵǶ, Բд. Ҳ
    dma СĲǲǷҪ.
   
  CS4232/CS4232A Ƭ
  
    INSTALL , ЩҪṩ midi port Ѷ. ע
   Ŀ, ʹø 3235/6/7/8/9 ʽ, ҸѶ( DMA С),
   Ȼᶯ. Ҳ ʽ! 
   isapnp-tools,  /etc/isapnp.conf пЩֵ:
   
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)

   Ա׼趨ֵĿ, Ҫ "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" 
   ʽ(û midi ֧Ԯ, 뿴 Yamaha OPL-3 ע, , û֧
   Ԯҡ).  /etc/isapnp.conf еֵͬ, ֵҲñһ.
   (ͷȽϺ ;)
   
    "NN" ֵҪֵ, ҲúֵǶ, Բд. Ҳ
    dma СĲǲǷҪ.
   
  CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 chips
  
    INSTALL , ЩҪṩ midi port Լ control port 
   Ѷ. ע CS4237B Ŀ, ҸѶ( DMA С), Ȼᶯ.
   Ҳ ʽ, ֻ snd_port 
   snd_cport .  isapnp-tools,  /etc/isapnp.conf п
   Щֵ:
   
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)

   Ҫ "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" ʽ(û
   midi ֧Ԯ, 뿴 Yamaha OPL-3 ע, , û֧Ԯҡ).
   
   ע:
     * "NN" ֵҪ, Ҳֵ֪Ƕٲд.
     * ҵ CS4237B ûָ DMA СҲõúܺ.
       
4.4 ʹ kerneld 

   kerneld ǸҪʱģ, ڲʹʱжǵķ
   ʽ(daemon). 춱ûù kerneld,  Ѷ׼׼ȷ. Ѷ
    ALSA ʽ׼ INSTALL .  kerneld 꾡Ѷ
   kerneld-mini-HOWTO ҵ.
   
   ²:
     * ༭ /etc/conf.modules(С)
     * ִ 'modprobe snd-card',  snd-card Ч [ Ҿ
       , kerneld Ӧø? VS]
       
    Gravis UltraSound PnP Ч /etc/conf.modules :
   
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

   ࿨, С(ͬʱ Gravis UltraSound Classic 
   Sound Blaster 16 )
   
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

   Ƭ 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-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

4.5 ǰ

   뱣 OSS/Free  OSS/Linux , Ҫټһʽ:
   snd-pcm1-oss ʽ, ṩ OSS . 
   
modprobe snd-pcm1-oss

   . ⽫ṩ /dev/audio  /dev/dsp ֧Ԯ,  OSS/Free ()
   ʽ OSS/Linux (Ҫ 25 )һ. עֻģ.
   
5. Լʹ

   Ӧʽǲõʱ. ߾ʹ.
   
5.1 /proc ϵͳ

    /proc Ŀ¼ҵܶϵͳѶ. /proc һ"
   "ϵͳ, ⼴, Ǻִеĸ. Ҫ
   /proc , Ҫ.  Linux װ׼ѽΪԤֵ,
   ر벢Ҳûн /proc ,  /proc ½ʲҲû.
   
   /proc/modules ˹ģѶ.  ALSA Чʽ,
     cat /proc/modules, ӦÿĶ:
   
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-m
ixer snd-mpu401-uart snd-midi snd-opl3 snd-synth snd-timer]    0

   ڰװʽʱĲ, ܿһ "snd" 豸, ûЧ
   ֧Ԯ.
   
   ˵(ǧҪ, cs4236 ʽҪ):
   
win3:~# modprobe snd-card-cs4236
/lib/modules/2.0.35/misc/snd-card-cs4236.o: init_module: Device or resource bus
y
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

   ɽɿ /proc/asound/cards ЧǷ. :
   
bash$ cat /proc/asound/cards
0 [card1          : SB16 - Sound Blaster 16
                    Sound Blaster 16 at 0x220, irq 5, dma 1&5

   ڸոյ(˼Ӳ), :
   
win3:~# cat /proc/asound/cards
--- no soundcards ---

    CS4236 , 
   
0 [card1         ]: CS4236 - CS4237B
                    CS4237B at 0x534, irq 7, dma 1&0

   趨ȷ, ȻҲЧ, ȥ
   .
   
   /proc/asound/ Ŀ¼ʾ˹춴ʽѶ. ע
   /proc/asound һ ALSA ģŻ. û
   /proc/asound,  "snd" ģûȷװ. 
   /proc/asound/cards ҵװõĿ, Ȼ /proc/asound/0 ҵ
   0 ſ, /proc/asound/1 й 1 ſѶ.
   
    cat /proc/asound/ ʾ
   
      ES1370 DAC2/ADC
      Playback isn't active.
      Record isn't active.

   ˵ʽһжܺ, Ŀǰû(һ).
   
   еЧ豸ķ,  OSS ʽ, 
   /dev/sndstat 豸. ALSA ʽҪЩѶ, ֻ
   Ϊ OSS ݶ.  /proc/asound Լ򵥵ĵõõѶ.
   
5.2 

   һЧװ,  /proc ϵͳҲʾ, 
   . , װóʽ׼, ٰ "amixer" ŵһЩĵ
   ( /usr/local/bin).  "amixer" 趨. amixer 
   Ĳͬкܴ仯, ҵ SoundBlaster16 ʾ:
   
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)

   ҵ Crystal 4237B Чкܶѡ:
   
Master D       0  % (-22.00dB) : 0  % (-22.00dB) Mute
3D Center      0  % (-22.50dB) : 0  % (-22.50dB)
3D Space       0  % (-22.50dB) : 0  % (-22.50dB) Mute
Synth          0  % (-94.50dB) : 0  % (-94.50dB) Mute
FM             0  % (-94.50dB) : 0  % (-94.50dB) Mute
DSP            0  % (-94.50dB) : 0  % (-94.50dB) Mute
PCM            0  % (-94.50dB) : 0  % (-94.50dB) Mute
Line-In        0  % (-34.50dB) : 0  % (-34.50dB) Mute
MIC            0  % (-22.50dB) : 0  % (-22.50dB) Mute
CD             0  % (-34.50dB) : 0  % (-34.50dB) Mute
Record-Gain    0  % (  0.00dB) : 0  % (  0.00dB)
In-Gain        0  % (-18.00dB) : 0  % (-18.00dB)
Loopback       0  % (-94.50dB) : 0  % (-94.50dB) Mute
Mono           0  % (-45.00dB) : 0  % (-45.00dB) Mute
Aux A          0  % (-34.50dB) : 0  % (-34.50dB) Mute

   עһ "Mute" һ, CS4237B Ҳ.  CS4237B, 
   Ҫȴ amixer "master d" unmute ܷ. SoundBlaster 
   ûо,  amixer master 100 unmute Ὣ, Ϊ
   100%. ,  "mute"  "unmute" , 򶼴, . 
   amixer "master d" 100; amixer pcm 100 unmute Խ CS4237B 
   ,  PCM Ϊ. Ҫһ, ð,
    amixer CD 25:50.(, Ҳһָ, ǿһҲ
   Ȱڷλйϵ.)
   
   Ӧ amixer cd rec Խ CD ¼Դ. Ȼ amixer cd
   norec趨. Ҫ˷¼Щ, Ҳ
   amixer record-gain 100; amixer mic 100 rec mute(˷ ķ
   ΪĻ, ˷յź, ɸ.)
   Ȼҵûܹ amixer ı 3D center  3D space 趨.
    ˳ɹ, ֪. ⹤ alsamixer .
   
   ALSA FAQ ʾ cat <file> > /proc/asound/#/mixerC0D0 
   趨,  <file>  /proc/asound/#/mixerC0D0 ȡ. 
   ޷ͬĽ, ҵĵԱԹ豸Ҳ.
   
5.3 /dev/snd/ µ豸

   ALSA ʽ /dev/snd/ Ŀ¼Լʽ. һƬЧ,
   ܿ豸:
   
/dev/snd/pcmC0D0 - ЧԭЧ豸.
/dev/snd/mixerC0D0 - ""ſĻ豸.
/dev/snd/controlC0D0 - ""ſĿ豸.

   һָڼЧ. ڶǴϵ豸. һ
    PCM 豸ЧӦ pcmC0D0  pcmc0D1 豸.
   
   N: ALSA 豸;ɰѾһ. ɵ ALSA ʽ
   /dev/snd/pcm00 (һǿ, ڶ豸).  HOWTO л
   ɵĵ, д Email Ա.
   
   ԽκЧһƬ PCM 豸. 
   cat κֵ(κε)ͽ /dev/snd/pcmC0D0, : cat
   <filename> > /dev/snd/pcmC0D0.  filename ⵵, ֻҪ
   . ֳɵЧ, Ҳ. Ҳץ
   [24]http://www.ldp.org/sounds/english.au.  Linux Torvalds  Linux
   ηĻ.
   
   Ч豸Ԥȱ趨Ϊ 8000Hz, 8 λԪ. ζᵽ "english.au" ᷢ
   , ֻᷢ. , , 
   ִ amixer һȥҽʦ(ò... Ķ!?) . (
   ϲĲųʽ sox  mpg123 , 򵥵ȫ 48KHz, 16 λԪ
   .)
   
    "snd-pcm1-oss" ģ, Ҳ OSS ȡЧ
   . ߼µĶӦϵ:
   
/dev/snd/pcmC0D0 -> /dev/audio0 (/dev/audio) -> α 4
/dev/snd/pcmC0D0 -> /dev/dsp0 (/dev/dsp) -> α 3
/dev/snd/pcmC0D1 -> /dev/adsp0 (/dev/adsp) -> α 12
/dev/snd/pcmC1D0 -> /dev/audio1 -> α 4+16 = 20
/dev/snd/pcmC1D0 -> /dev/dsp1 -> α 3+16 = 19
/dev/snd/pcmC1D1 -> /dev/adsp1 -> α 12+16 = 28
/dev/snd/pcmC2D0 -> /dev/audio2 -> α 4+32 = 36
/dev/snd/pcmC2D0 -> /dev/dsp2 -> α 3+32 = 39
/dev/snd/pcmC2D1 -> /dev/adsp2 -> α 12+32 = 44

5.4 Ѷ

    ALSA ʽĿ¼е INSTALL ҲᵽһЩС, ʽҪ
   ε趨. ղ;, ҪЩ. һĲųʽ,
    mpg123, sox( ``play'' ִ),  X11 Ӧóʽ RealPlayer
   õЩ. ұҲûù.
   
  /proc/asound/#/pcm#0
  
"Playback erase" - й OSS ӦóʽĶѶ.
"Playback <app_name> <fragments> <fragment_size> [<options>]"
"Record erase" - й OSS ӦóʽĶѶ.
"Record <app_name> <fragments> <fragment_size> [<options>]"

   <app_name> - Ӧóʽ, (ȼٶ)򲻰·.
   
   <fragments> - Ƭ(fragment),  0 Զѡ.
   
   <fragment_size> - һƬϵ byte ,  0 ѡԶ.
   
   <options> - ѡԵĲ
   
   WR_ONLY - иӦóʽ迪ģʽΪO_RDWR, ʵʵȨ޽Ϊ
   O_WRONLY(),  Quake Ⱥ...
   
   :
   
echo "Playback x11amp 128 16384" > /proc/asound/0/pcm0o
echo "Playback squake 0 0 WR_ONLY" > /proc/asound/0/pcm0o

  /proc/asound/#card#/sb16
  
"Playback 8" -> ʽʱֻʹ 8-bit DMA ͨ.
"Playback 16" -> ʽʱֻʹ 16-bit DMA ͨ.
"Playback auto" (default) -> ʽԶѡ(ȳʹ 16-bit DMA ͨ)
"Record 8" -> ʽ¼ʱֻʹ 8-bit DMA ͨ.
"Record 16" -> ʽ¼ʱֻʹ 16-bit DMA ͨ.
"Record auto" (default) -> ʽԶѡ(ȳʹ 16-bit DMA ͨ)

   : echo "Record 16" > /proc/asound/0/sb16
   
   һѶο INSTALL .
   
6. Сɼų

   ȿЧʽĿ¼ FAQ . һȻ.
   
6.1 ʽ

  Linux ԭʼĿ¼
  
    ALSA ʽ޷ɹ, Ҳ ``version.h'' 
   (header files)֮Ĵ, ָûаװĵ뵵. Ȼʱ俴
    Kernel-HOWTO, ½ĺĽ⿪ /usr/src  make config.
   
6.2 ʽ

   ¸:
   
  Ч
  
   Ƿٷ֮ٵȷЧ֧Ԯ? ǧҪǵü. ʱһƬ
   X123 Чȫ춽 X123b , ܻ˷ʱ.
   
   һ, ʹ֧ԮĿҲܻ鷳 - Ϊ˰װһƬ CS4237B 
   , Сʱ, ˵ļ. (ԭ 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. )
   
  ``Device busy''  ``unresolved symbols''
  
    2.0.x нЧ֧Ԯ,  OSS/Lite(
   )ʽ(cat /proc/modules). Ƴʽ±
   (뿴 Kernel-HOWTO ᶯ).
   
    2.0 еЧģ "sound.o", Ӧñ. (Ȼ ALSA 
   ʽ "snd.o" .)
   
   ĺ 2.2.x , ûнЧ֧Ԯȥ, ALSA ʽҲ
   .
   
   Ҳֲ֪ͬ״, ڴһν. õ
   2.0.x ("uname -a" "Linux penguin 2.0.35 #6 Wed Sep 23
   10:19:16 CEST 1998 i686 unknown") 뽫Чʽ޳.
   
   ĺ 2.2.x, ҪЧʽ. 2.2.x Ӧý
   Чʽ, κЧ֧Ԯ. ҪѡЧ֧Ԯ,
   ҲȷҪκЧʽ.
   
  ּ Unresolved symbols
  
   һ "unresolved symbols" ѶϢԭ°Ͼɰ
   ʽ. ±֮Ҳ± ALSA ʽ. ˲ſȷ
   ʽº.
   
   PnP 趨
  
   ȷЧ(active)? ⻨ʱ PnP-HOWTO, ȷȷ
   ¶(activate)Ч.
   
  ?
  
   , Ч趨. С: 534  543, 0x534 Ҳ
    534.
   
   ͬʱ, ЩЧҪģ鲻ԤڵǸ. Ϣһ, ȱơƻʲ
   , Ȼٿ modprobe Ľ.  Crystal 4232 Ӧòʽ
    snd-card-cs4232,  "snd-cs4231".  SoundBlaster PCI64 Ӧ
    "snd-audiopci",  snd-es1370. (Щļжд, дƪ
   HOWTO ʱ, һ snd-cs4231 .)
   
6.3 ʽ... û

  
  
   ALSA ʽöЧе "" . Ч
   ʽ, һпȷ, ûĻ, ưѾȡ
   . ҪҪ "amixer"  "alsamixer", ߶ʽ. ֻҪ
   :
   
amixer -c 1 master 70:70 unmute
amixer -c 1 pcm 70:70 unmute
amixer -c 1 cd 70:70 unmute

   ԶӦóʽӦöЧ.
   
  OSS/Linux 
  
   ״ʹ ALSA ʽ, ǰʹùڽǸĻ, 
   Ҫܺ͹ȥݵ.(ʹ /dev/pcmX 豸֮). ʱҪ
    "OSS ʽ". ִ modprobe snd-pcm1-oss (뱾
   ʽһ. ). N: snd-pcm1-oss  snd-pcm1. Ծʽ֧Ԯ
   Ҫ snd-pcm1-oss.
   
6.4 һԽ

   "insmod"
  
    "insmod" ȡ kerneld õ. ҲͿөĻϿѶ
   Ϣ.
   
   INSTALL .
  
   ʽĿ¼е INSTALL ԷֺܶѶ. ʽ
   , ˿, ҲжѶ.
   
  ѶϢ
  
   ϵķû, ±ʽ, ҪѶϢͽ
   /var/log/messages , Ϊֶ. cd /usr/src/alsa-driver-...
   ʽĿ¼, Ȼ:
   
./configure --with-debug=detect; make clean; make

   Ƴʽ(ѾĻ, 뿴ᵽƳģС) Ȼ
   ոõ "modprobe" ָ±ʽ.  /var/log/messages
   ûκѶϢ.
   
  û...
  
   ޷ѶϢȡ, д Email  ALSA ʹ̳ͨ,
   [25]alsa-user@alsa-project.org.
   
   ˼Ѷ:
     * ЧԼʹõľƬ.
     * Ч ISA PnP ,  isapnp.conf йصĲ.
     *  conf.modules  ALSA ʽ.
     *  /var/log/messages Ӧú ALSA ʽйصѶϢ.
       
6.5 ر

   һֻ, ALSA ʽϣܹ֪()Ѷ:
    1. ʽĵİ汾: 'cat /proc/asound/version'
    2. ЧѶ
          + ʾЧ
          + ÿĸƬʾ
          + 'cat /proc/asound/cards' ִн
    3.  /var/log/messages еѶϢ
    4. 
       
6.6 С:  CD ʱ...

   ʹkmod/kerneld Լ ALSA ʽ CD,  kmod/kerneld 
   ܲԤһʽ. е CD ʽֻ CDROM
   ʼ, ʹõκ豸,  kmod/kerneld ʽ. 
   Ľֻܾʹ modprobe .
   
6.7 С: װ MIDI ʽ

   ͨ, 豸 IO ɱ׼豸ʽռ. Խ
   "modprobe snd-serial" ǰ, ʽͷŵ豸.
   
   .
   
setserial /dev/ttyS0 uart none
modprobe snd-serial

   ( MIDI 豸ʹòһ豸, /dev/ttyS0 Ӧ
   /dev/ttySx)
   
6.8 С: º? ģ!

   º, Ҫ± ALSA ʽ. ǻԭ
   /usr/src Ŀ¼,  ./configure, make, make install ֮ǰ
    make clean .
   
   ! и̫һĺİ汾 "2.2.0ac1", ᱻ configure Թ
   . °л, Ȼܵøıԭʼеĺ
   İ汾.
   
6.9 С: KDE  ALSA ʽ

   ʹ KDE, ȴ޷翪ӴıʹõϵͳЧ,
   Ч. Ҳ CD , MP3 Լ,
   ֻΪǷȱ "kwmsound" .
   
   : ȷ($KDEDIR/bin/startkde) "kwmsound".
   
6.10 С: ʹ ALSA 豸

   ǰù Linux Ч֧Ԯ, ӦóʽҪõ
   /dev/pcm0, /dev/audio  /dev/mixer. ʹ OSS ģ snd-pcm1-oss 
   Ľ, ʹ ALSA 豸( /dev/snd/)ĻǸ.
   
6.11 С: Ƴģ

   ҪһһƳʮģʵڲǸð취. ˵, еģ
    snd- ʼ, һССй滮, ׵µƳ
   ALSA Чʽ:
   
cat /proc/modules|gawk '/^snd-/{print $1}|xargs -i rmmod {}

   Juergen Kahrs д: "һ soundcore, soundlow Լ
   sound һȥ, ûʹеĻ. 
   /proc/modules , Ӧò̫ģ." Ľⷨ:
   
awk '/^snd/||/^sound/&&($3==0){system("rmmod " $1)}' /proc/modules /proc/module
s /proc/modules

   ע: һģһģĻ, ֻƳϲǸ.
   ζбҪµڶ. (Ҵû; 
    /proc/modules е˳Ƴ ALSA ģ.)

References

   1. http://www.sgmltools.org/
   2. http://www.alsa-project.org/~valentyn
   3. http://www.alsa-project.org/~valentyn/other-formats
   4. http://plaza21.mbn.or.jp/~momokuri/alsa/index.html
   5. http://www.freenix.fr/unix/linux/HOWTO/mini/Alsa.html
   6. mailto:alsa-howto@alsa-project.org
   7. mailto:linux-howto@metalab.unc.edu
   8. http://www.fsf.org/
   9. http://www.fsf.org/
  10. http://www.alsa-project.org/intro.html
  11. http://www.alsa-project.org/
  12. http://metalab.unc.edu/LDP/mirrors.html
  13. file://localhost/tmp/Sound-HOWTO.html
  14. file://localhost/tmp/Plug-and-Play-HOWTO.html
  15. file://localhost/tmp/Kernel-HOWTO.html
  16. file://localhost/tmp/zh-sgmltools.17683/Modules.html
  17. file://localhost/tmp/zh-sgmltools.17683/Kerneld.html
  18. ftp://ftp.alsa-project.org/pub/
  19. ftp://linux.a2000.nl/alsa
  20. ftp://linux.a2000.nl/alsa/driver/
  21. ftp://linux.a2000.nl/alsa/lib/
  22. ftp://linux.a2000.nl/alsa/utils/
  23. file://localhost/tmp/zh-sgmltools.17683/Alsa-sound.txt.html#backw-compat
  24. http://www.ldp.org/sounds/english.au
  25. mailto:alsa-user@alsa-project.org
