当前位置:Linux教程 - Linux - Alsa-sound-mini-HOWTO(三)

Alsa-sound-mini-HOWTO(三)

Alsa-sound-mini-HOWTO(三)

4. 载入驱动程式
有两种使用 ALSA 音效模组的方法. 笔者个人比较喜欢使用手动的方法, 也就是在开机时安插驱动程式. ALSA 驱动程式是以可载入/卸除模组为目标来设计 -- 例如说它们不会在载入後重设音量 -- 所以您可以简单地使用 kerneld 的方法.

(译注: 原文直译为 ALSA 驱动程式设计成可载入/卸除模组, 但译者认为 OSS 也可以这麽做(只差它会重设音量, 对模组使用者来说较不方便, 虽然解决办法是有(见 Sound HOWTO)), 这麽翻无法凸显 ALSA 的优点, 故翻成上面的意思. 希望没误解...)

请一定要阅读 向前相容这节, 如果您想要和以前的程式相容的话.


4.1 用 modprobe 安插驱动程式
请注意: 如果您有 PnP 音效卡, 您首先要设定正确的(或至少是已知的) IO/IRQ/DMA. 请读 Plug-and-Play-HOWTO. 您已经设定过您的 随插即用 音效卡了吗? 好, 那麽请继续读下去. 主要部份是 ""modprobe snd-"", 这样应该就可以. 不过并非所有安装套件都把 /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 大小也用得很好.