下一页 上一页 目录

5. 加载驱动程序

使用 ALSA-sound-modules 有两种方法。我个人更喜欢手动方法,这意味着我在启动时插入驱动程序。ALSA 驱动程序被设计为可加载/卸载的模块 - 例如,它们在加载后不会重置混音器 - 因此您可以轻松使用 kerneld 方法。

请务必阅读 向后兼容性 部分。您需要它才能以“旧方式”获得声音支持。

5.1 使用 modprobe 插入

注意:如果您有 PnP 声卡,您首先需要将其设置为正确的(或至少是已知的)IO/IRQ/DMA。请参阅 Plug-and-Play-HOWTO。您是否配置了您的即插即用声卡?好的,请继续阅读。主要部分是:执行“modprobe snd-card-<soundcard>”。这应该可以解决问题。请注意,并非所有发行版都在您的路径中包含 /sbin。如果您收到“bash: modprobe: command not found”,这很可能意味着 modprobe 不在您的路径中。尝试 ``/sbin/modprobe snd-card-sb16'',或尝试在其他地方找到 modprobe 实用程序。

最重要的困难是 Crystal 芯片组,对于这些芯片组,ALSA 驱动程序不是自动探测的。更多最新信息可以从驱动程序目录中的 INSTALL 文件中获取。以下是两个示例,然后是一个列表:Gravis UltraSound (GUS) 和兼容产品

/sbin/modprobe snd-card-gusclassic
对于所有 16 位 Soundblaster 声卡 (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP))
/sbin/modprobe snd-card-sb16
但是,如果您有 0.3.0-pre4 软件包,GUS Classic 驱动程序称为 ``snd-gusclassic'',SoundBlaster 16 模块称为 ``snd-sb16''(因此,没有 ``card'' 部分)。

5.2 哪张卡使用哪个模块?

请注意,0.4.x 之前的 ALSA 版本有时具有不同的名称。对于这些驱动程序,您需要省略 ``card'' 部分。这用星号 (*) 表示。

Gravis UltraSound Extreme (*)

modprobe snd-card-gusextreme

Gravis UltraSound MAX (*)

modprobe snd-card-gusmax

ESS AudioDrive (*)

ESS AudioDrive ES-1688 和 ES-688 声卡

modprobe snd-card-audiodrive1688

ESS AudioDrive 18xx (*)

基于 ESS AudioDrive ES-18xx 的声卡

modprobe snd-card-audiodrive18xx

Gravis UltraSound PnP (*)

Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32, ExpertColor MED3201 和其他基于 AMD InterWave™ 芯片的声卡。

modprobe snd-card-interwave

UltraSound 32-Pro (*)

UltraSound 32-Pro (来自 STB 的声卡,Compaq 使用) 和其他基于 AMD InterWave (tm) 芯片的声卡,带有 TEA6330T 电路,用于扩展控制低音、高音和主音量

modprobe snd-card-interwave-stb

Soundblaster (*)

8 位 Soundblaster 声卡 (SoundBlaster 1.0, SoundBlaster 2.0, SoundBlaster Pro)

modprobe snd-card-sb8

Soundblaster 16 (*)

16 位 SoundBlaster 声卡 (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP)。请注意:此模块不支持 SoundBlaster VibraX16 声卡。

modprobe snd-card-sb16

OAK Mozart (*)

modprobe snd-mozart

OPTi 82C9xx (*)

使用 OPTi 82C9xx 芯片组的各种声卡,例如 Audio 16 Pro EPC-SOUN9301 (基于 82C930), ExpertColor MED-3931 v2.0 (基于 82C931), ExpertMedia Sound 16 MED-1600 (基于 82C928 - AD1848), Mozart S601206-G (基于 OPTI601 - CS4231) 和 Sound Player S-928

modprobe snd-card-opti9xx

AD1847/48 和 CS4248

modprobe snd-card-ad1848

Yamaha OPL3-SA2/SA3 声卡 (*)

仅 “modprobe snd-opl3sa” 将不起作用,此驱动程序不进行自动探测。请参阅下文。

S3 SonicVibes (*)

S3 SonicVibes PCI 声卡。 (PINE Schubert 32 PCI)

modprobe snd-card-sonicvibes

Ensoniq/Soundblaster PCI64 (*)

Ensoniq AudioPCI ES1370/1371 PCI 声卡。 (SoundBlaster PCI 64)

modprobe snd-card-audiopci

CS4231

仅 ``modprobe snd-card-cs4231'' 将不起作用,不进行自动探测。请参阅下文。

CS4232/4232A

所有基于 CS4232/CS4232A 芯片的声卡。仅 “modprobe snd-card-cs4232” 将不起作用,不进行自动探测。请参阅下文。

4235 及更高版本

所有基于 CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 芯片的声卡。仅 “modprobe snd-card-cs4236” 将不起作用,不进行自动探测。请参阅下文。

4610/4612/4615 和 4680

modprobe snd-card-cs461x

ESS Solo 1 (*)

ESS Solo-1, 128iPCI 卡 (es1938, ESS-SOLO-1)。Jonas Lofwander 发给我一个文档链接,可以帮助您安装此卡 - 基本上,它只是 modprobe snd-card-esssolo1 ... 但是 http://dice.shopcenter.nu/alsa/ 可能会有所帮助。如果您有 IBM Thinkpad 1412,您也可以参考 http://www.geocities.com/SiliconValley/Peaks/3649/1412.html,感谢 Kumar Sankaran。

Trident 4DWave DX/NX (**)

Best Union Miss Melody 4DWave PCI, HIS 4DWave PCI, Warpspeed ONSpeed 4DWave PCI, AzTech PCI 64-Q3D, Addonics SV 750, CHIC True Sound 4Dwave, Shark Predator4D-PCI, Jaton SonicWave 4D。

modprobe snd-card-trident

ForteMedia FM801

这些是基于 FM801 芯片的 PCI 卡。

modprobe snd-card-fm801

(*) 对于 ALSA 0.3.0-pre4 版本,您需要在大多数(并非全部!)驱动程序名称中省略 ``card-'' 部分。因此 ``snd-card-sb16'' 变为 ``snd-sb16'',但是,``snd-card-cs4232'' 仍然是 ``snd-card-cs4232'' (modprobe snd-cs4232 会做一些事情,但不会产生任何声音!)

(**) 在较旧的 ALSA 版本中,此驱动程序称为 ``snd-card-trid4wave'' 和 ``snd-trid4wave''。

5.3 用于没有自动探测的驱动程序的 modprobe

如果您有非自动探测驱动程序,您需要在启动时提供其他信息才能使驱动程序工作。更多信息可以在驱动程序目录中的 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-card-opl3sa snd_port=0xNNN snd_wss_port=0x530 snd_midi_port=-1 snd_fm_port=0x388 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN” 以加载此驱动程序(不带 midi 支持。我仍然认为,当您有合成器等设备并想将它们连接到您的 Linux 计算机时,midi 支持是您需要的。即使播放 midi 文件也从不需要 Midi 支持。)

请注意,“NN” 值需要提供,但我不知道什么是合理的值。我不知道 dma 大小选项是否真的需要。

如果您碰巧有一台使用此芯片组的 IBM Thinkpad,那么 http://www.cirs.org/patrick/index.html 可能会有所帮助。

如果您使用 0.3.0-pre4 的驱动程序,则在名称中省略 ``card-'' 部分。

CS4231 芯片

根据 INSTALL 文件,您需要为此卡提供主端口。请注意,对于 3235/6/7/8/9 卡的驱动程序(如下所示),我最终提供了所有信息(DMA 大小除外),否则驱动程序将无法工作。因此,您不妨使用整个命令行来插入驱动程序。如果您使用 isapnp-tools 初始化了该卡,您可能会从 /etc/isapnp.conf 文件中获取以下值的信息

snd_port - port # for CS4232 chip (PnP setup - 0x534)
snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
snd_irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
snd_dma1 - first DMA # for CS4232 chip (0,1,3)
snd_dma1_size - max first DMA size in kB (4-64kB)
snd_dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
snd_dma2_size - max second DMA size in kB (4-64kB)
您将执行 “modprobe snd-card-cs4231 snd_port=0x534 snd_mpu_port=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN” 以加载“标准配置”声卡的驱动程序。(不带 midi 支持,请参阅 Yamaha OPL-3 的注释)。如果您在 /etc/isapnp.conf 中使用了不同的值,那么您也应该在此处使用这些值(注意:无论如何,动动脑筋可能是明智的;)

请注意,“NN” 值需要提供,但我不知道什么是合理的值。我不知道 dma 大小选项是否真的需要。

CS4232/CS4232A 芯片

根据 INSTALL 文件,您需要为此卡提供主端口。请注意,对于 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 芯片

根据 INSTALL 文件,您需要为此卡提供主端口和控制端口。请注意,对于 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-cs4236 snd_port=0x534 snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN” 以加载驱动程序。(不带 midi 支持,请参阅 Yamaha OPL-3 的注释,并且没有操纵杆支持)。注释

5.4 kerneld 方法

kerneld 是一个守护程序,它根据请求插入模块,并在不再使用时卸载它们。由于我没有使用 kerneld 的经验,我不知道以下信息是否准确。该信息来自 ALSA 驱动程序包中的 INSTALL 文件。有关 kerneld 的优秀信息可以在 kerneld-mini-HOWTO 中找到。

按照以下步骤操作

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
如果您想在一台机器中使用更多声卡的示例(以下配置适用于 Sound Blaster 16 和 Gravis UltraSound Classic)
alias char-major-14 snd
alias snd-minor-oss-0 snd-mixer
alias snd-minor-oss-3 snd-pcm1-oss
alias snd-minor-oss-4 snd-pcm1-oss
alias snd-minor-oss-5 snd-pcm1-oss
alias snd-minor-oss-12 snd-pcm1-oss
alias snd-card-0 snd-sb16
alias snd-card-1 snd-gusclassic
options snd snd_major=14 snd_cards_limit=2
options snd-sb16 snd_index=1 snd_port=0x220 snd_irq=5 snd_dma8=1 snd_dma16=5
options snd-gusclassic snd_index=2 snd_irq=11 snd_dma1=6 snd_dma2=7
如果系统中存在两个 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

5.5 向后兼容性

如果您想保留 OSS/Free 或 OSS/Linux 兼容性,您需要插入另一个驱动程序:用于 OSS 兼容性的 snd-pcm1-oss 驱动程序。执行

modprobe snd-pcm1-oss
这将为您提供 /dev/audio 和 /dev/dsp 支持,就像 OSS/Free(内核)驱动程序和 OSS/Linux(25 美元的那些)一样。请注意,这只是一个模拟。


下一页 上一页 目录