一些Linux用户经常询问这样的问题:Linux能兼容XXX卡么?其实,Linux是一个开放性的系统,只要通过Linux爱好者们的努力,Linux可以兼容任何硬件。
先来说说声卡。首先要知道声卡的类型,或者是某种声卡兼容的。如果内核不能把这种声卡检测出来,那么就需要安装这种声卡的驱动模块,来安装声卡。
例如,市面上常见的声卡Creative Vibra 128使用的驱动模块是es1371,Creative PCI 128使用的模块是es1370等等。
redhatlinux中用sndconfig来设置声卡,如果没有某个模块,就需要重新编译内核(编译最新发布的linux内核),如果还不行,只好用ALSA 音效驱动程式。
ALSA 音效驱动程式原本是写来取代 Gravis UltraSound 卡的Linux核心驱动程式的。当实证这取代得很成功,它和OSS/Free 及OSS/Linux音效驱动程式相容(核心的驱动程式),但它有比OSS驱动程式更好的本身介面。
ALSA音效驱动程式可在http://www.alsa-project.org/找到。到发稿时最新版本为0.5.9d ALSA 音效驱动程式是建为模组的。下面是ALSA支持的声卡类型。
ALSA Supported SoundCards
Advanced Linux Sound Architecture - Supported SoundCards
==========================================================
ID: SoundCard chipset/type
SC: SoundCard name
IF: Supported interfaces (MIXER,PCM,SYNTH,SYNTH_MIDI,SEQ,OPL,MIDI,EMUL,HWDEP)
MA: Maintainer
CO: Coder
This file is maintained by Jaroslav Kysela .
Note: OPL -> Raw (native) OPL
Note: MIDI -> external MIDI port
Note: EMUL -> MIDI emulation
Note: SYNTH -> yeah, well ?
Note: SYNTH_MIDI -> internal synth that handles MIDI data
Note: SEQ -> kernel client for ALSA sequencer
Note: HWDEP -> various hardware-dependent interfaces/devices
=====
ID: AMD InterWave
SC: Gravis UltraSound Plug & Play
SC: Dynasonic 3-D
SC: STB Sound Rage 32
SC: UltraSound 32-Pro (STB)
SC: MED3210
IF: MIXER,PCM,MIDI,SYNTH
MA: Jaroslav Kysela
ID: Gravis UltraSound MAX
IF: MIXER,PCM,MIDI,SYNTH
MA: Jaroslav Kysela
ID: Gravis UltraSound Extreme
IF: MIXER,PCM,MIDI,SYNTH
MA: Jaroslav Kysela
ID: Gravis UltraSound Classic/ACE
IF: MIXER,PCM,SYNTH
MA: Jaroslav Kysela
ID: ESS AudioDrive ESx688
IF: MIXER,PCM,MIDI(1688)
MA: Jaroslav Kysela
ID: SoundBlaster 1.0/2.0/Pro
IF: MIXER (Pro only),PCM,MIDI
CO: Jaroslav Kysela
MA: Chris Butler
ID: SoundBlaster 16/AWE
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
ID: Yamaha OPL3-SA2/SA3
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
ID: OAK Mozart
IF: MIXER,PCM
CO: Jaroslav Kysela
MA: ???
ID: S3 SonicVibes PCI
SC: Schubert 32 PCI (PINE)
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
ID: Ensoniq AudioPCI (ES1370,ES1371)
SC: SoundBlaster PCI 64
SC: SoundBlaster PCI 128
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
ID: Cirrus Logic / Crystal Semiconductors CS4232/CS4232A
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
ID: Cirrus Logic / Crystal Semiconductors CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239
SC: Turtle Beach Malibu
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
ID: Cirrus Logic / Crystal Semiconductors CS4610/CS4612/CS4615/CS4280
IF: MIXER,PCM
MA: Jaroslav Kysela
ID: ESS Solo-1 ES1938
IF: MIXER,PCM
MA: Jaromir Koutek
ID: ESS ES18XX
IF: MIXER,PCM,MIDI
MA: Abramo Bagnara
ID: OPTi 82C9xx
SC: Audio 16 Pro EPC-SOUN9301 (82C930 based)
SC: ExpertColor MED-3931 v2.0 (82C931 based)
SC: ExpertMedia Sound 16 MED-1600 (82C928 based - AD1848)
SC: Mozart S601206-G (OTI601 based - CS4231)
SC: Sound Player S-928 (82C928 based - AD1848)
IF: MIXER,PCM,OPL,MIDI
MA: Massimo Piccioni
ID: Trident 4DWave DX/NX
SC: Best Union Miss Melody 4DWave PCI
SC: HIS 4DWave PCI
SC: Warpspeed ONSpeed 4DWave PCI
SC: AzTech PCI 64-Q3D
SC: Addonics SV 750
SC: CHIC True Sound 4Dwave
SC: Shark Predator4D-PCI
SC: Jaton SonicWave 4D
SC: Hoontech SoundTrack Digital 4DWave NX
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
ID: ForteMedia FM801
SC: DT-0398
IF: MIXER,PCM,MIDI
MA: perex@suse.cz
ID: SGI Indy (HAL2)
IF: PCM
MA: Ulf Carlsson
ID: Turtle Beach WaveFront
SC: Tropez Plus (Tropez+)
SC: Tropez
SC: Maui (models with CS4232; others use OPTi 16 which is not handled)
IF: MIXER,PCM,MIDI,OPL,SYNTH_MIDI,HWDEP
CO: pbd@op.net
MA: pbd@op.net
ID: C-Media CMI8330
IF: MIXER,PCM
MA: George Talusan
ID: C-Media CMI8338/8738
IF: MIXER,PCM,MIDI
MA: Takashi Iwai
ID: Avance Logic ALS100/ALS120
IF: MIXER,PCM,MIDI
MA: Massimo Piccioni
ID: Diamond Technologies DT-0197H
IF: MIXER,PCM,MIDI
MA: Massimo Piccioni
ID: Aztech Sound Galaxy
IF: MIXER,PCM,MIDI
MA: Christopher Butler
ID: MOTU MidiTimePiece AV multiport MIDI interface
IF: MIDI
MA: Michael T。Mayers
ID: EMU10K1
SC: Sound Blaster Live!
SC: Sound Blaster PCI 512
SC: E-mu APS
IF: MIXER,PCM,MIDI,SYNTH_MIDI
MA: Jaroslav Kysela
ID: RME Digi9652 (Hammerfall, Hammerfall light)
IF: PCM
MA: Paul Barton-Davis
ID: Intel i810/i820/i830/i840/MX440
IF: MIXER,PCM
MA: Jaroslav Kysela
ID: ESS Maestro 1/2/2E
IF: MIXER,PCM
MA: Matze Braun
ID: VIA 82C686A (South Bridge)
IF: MIXER,PCM,MIDI
MA: Jaroslav Kysela
请注意如果您想使用 ALSA 驱动程式, 那么您不应该先载入任何其它音效驱动程式。如果您的核心中内含音效驱动程式, 那么有必要重编译核心。如果您正在使用旧的 sound.o 模组, 您必须解除它。如果您使用 kerneld, 这可能就是要您删去 /lib/modules/<核心版本>/misc 目录下的 sound.o。新的 RedHat 系统的音效驱动程式组织方式不太一样, 要载入好几个模组, 这种情况您需要解除全部的模组。
2.2 版核心对音效则采用了新的方式。您应该要包含音效的支援! 是的, 没有说错, 您在核心中加入了对音效的支援, 但没有包含任何音效卡的部份。然後重编译及安装核心, 接著编译 ALSA驱动程式。
编译 ALSA驱动程式的步骤:
tar zxvf alsa-driver-0.3.5.9d.tar.gz
tar zxvf alsa-lib-0.3.5.9d.tar.gz
tar zxvf alsa-utils-0.3.5.9d.tar.gz
cd alsa-driver-0.3.5.9d
./configure
make
make install
cd ../alas-lib-0.3.5.9d
./configure
make
make install
cd ../alas-utils-0.3.5.9d
./configure
make
make install
驱动程式目录下有个命令稿(script)可以把 ALSA 的音效设备档安装进 /dev 目录。
在驱动程式目录下打入./snddevices
有两种使用 ALSA 音效模组的方法:
A.用 modprobe 安插驱动程式
如果您有 PnP 音效卡, 您首先要设定正确的(或至少是已知的) IO/IRQ/DMA.
举两个例子:
Gravis UltraSound (GUS) 及相容卡:
/sbin/modprobe snd-gusclassic
对完全 16 位元的 SoundBlaster 卡 (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), Sound BlasterAWE 64 (PnP):
/sbin/modprobe snd-sb16
B.使用 kerneld 来载入
kerneld 是个在需要时插入模组, 并在不再使用时卸除它们的服务程式(daemon).
编辑 /etc/conf.modules
执行 modprobe snd-card, 其中 snd-card 是您的音效卡名称。
这是 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