📄 alsa-sound-4.html
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>4</title>
</head>
<body>
<table>
<tr>
<td bgColor="#FFFFFF" vAlign="top"><a href="Alsa-sound-5.html"><img alt="Next" src="next.gif" width="16" height="16"></a>
<a href="Alsa-sound-3.html"><img alt="Previous" src="prev.gif" width="16" height="16"></a> <a href="Alsa-sound.html#toc4"><img alt="Contents" src="toc.gif" width="16" height="16"></a>
<hr>
<h2><a name="s4">4. 载入驱动程式</a></h2>
<p>有两种使用 ALSA 音效模组的方法.
笔者个人比较喜欢使用手动的方法,
也就是在开机时安插驱动程式. ALSA 驱动程式是以可载入/卸除模组为目标来设计
-- 例如说它们不会在载入後重设音量 --
所以您可以简单地使用 kerneld 的方法.
<p>(译注: 原文直译为 ALSA 驱动程式设计成可载入/卸除模组,
但译者认为 OSS 也可以这麽做(只差它会重设音量,
对模组使用者来说较不方便, 虽然解决办法是有(见 Sound
HOWTO)), 这麽翻无法凸显 ALSA 的优点, 故翻成上面的意思.
希望没误解...)
<p>请一定要阅读 <a href="#backw-compat">向前相容</a>这节,
如果您想要和以前的程式相容的话.
<p>
<h2><a name="ss4.1">4.1 用 modprobe 安插驱动程式</a></h2>
<p>请注意: 如果您有 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 公用程式在哪.
<p>对 Crystal 晶片组的卡来说可能最困难. ALSA
驱动程式不对这些卡进行自动侦测.
更进一步的资讯记载在驱动程式目录下的 INSTALL 档中.
接下来笔者举两个例子, 然後接著是个列表:
<p>Gravis UltraSound (GUS) 及相容卡:
<blockquote>
<code>
<pre>/sbin/modprobe snd-gusclassic
</pre>
</code>
</blockquote>
对完全 16 位元的 SoundBlaster 卡 (SoundBlaster 16 (PnP),
SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP):
<blockquote>
<code>
<pre>/sbin/modprobe snd-sb16
</pre>
</code>
</blockquote>
<p>
<h2><a name="ss4.2">4.2 那张卡应该用哪个驱动程式?</a></h2>
<p>
<h3>Gravis UltraSound Extreme</h3>
<p>
<p><code>modprobe snd-gusextreme</code>
<h3>Gravis UltraSound MAX</h3>
<p>
<p><code>modprobe snd-gusmax</code>
<p>
<p>
<p>
<h3>ESS AudioDrive</h3>
<p>ESS AudioDrive ES-1688 及 ES-688 音效卡
<p><code>modprobe snd-audiodrive1688</code>
<p>
<h3>Gravis UltraSound PnP</h3>
<p>Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32
以及其它用 AMD InterWave (tm) 晶片的音效卡.
<p><code>modprobe snd-interwave</code>
<h3>UltraSound 32-Pro</h3>
<p>UltraSound 32-Pro (STB 制 Compaq 使用) 及其它使用 AMD InterWave
(tm) 晶片以及用 TEA6330T 电路来做 bass, treble
及主音量控制的卡.
<p><code>modprobe snd-interwave-stb</code>
<h3>Soundblaster</h3>
<p>8-bit Soundblaster 卡 (SoundBlaster 1.0, SoundBlaster 2.0,
SoundBlaster Pro)
<p><code>modprobe snd-sb8</code>
<h3>Soundblaster 16</h3>
<p>16-bit SoundBlaster 卡 (SoundBlaster 16 (PnP), SoundBlaster AWE 32
(PnP), SoundBlaster AWE 64 (PnP). 请注意本模组不支援 SoundBlaster
VibraX16 音效卡.
<p><code>modprobe snd-sb16</code>
<h3>Yamaha OPL3-SA2/SA3 音效卡</h3>
<p>光是 "modprobe snd-opl3sa" 是无效的,
驱动程式不会自动侦测. 请看後面.
<p>
<h3>S3 SonicVibes</h3>
<p>S3 SonicVibes PCI 音效卡. (PINE Schubert 32 PCI)
<p><code>modprobe snd-sonicvibes</code>
<p>
<h3>Ensoniq/Soundblaster PCI64</h3>
<p>Ensoniq AudioPCI ES1370/1371 PCI 音效卡. (SoundBlaster PCI 64)
<p><code>modprobe snd-audiopci</code>
<p>
<h3>CS4232/4232A</h3>
<p>所有使用 CS4232/CS4232A 晶片的音效卡. 光是 "modprobe
snd-card-cs4232" 没用, 不自动侦测, 看後面.
<p>
<h3>4235 以及其後的</h3>
<p>所有使用 CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 晶片的.
光是 "modprobe snd-card-cs4236" 没用, 不自动侦测,
看後面.
<p>
<h2><a name="ss4.3">4.3 不自动侦测时怎麽载入驱动程式</a></h2>
<p>如果您要用的驱动程式不自动侦测,
您必须在让驱动程式运作前先提供额外资讯.
更多资讯可在驱动程式目录下的 INSTALL 档中找到.
<h3>OPL3-SA2 及 OPL3-SA3</h3>
<p>根据 INSTALL 档, 您需要提供驱动程式一切资讯.
如果您用 isapnp-tools 来初始化您的卡, 也许可以在 /etc/isapnp.conf
档中看到像下面的值:
<blockquote>
<code>
<pre>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)
</pre>
</code>
</blockquote>
<p>您要用 "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 档就不必了.)
<p>上例的 "NN" 值您要给真正的值,
我不晓得合理值是多少, 所以才这麽写. 我不晓得 dma
大小的参数是不是非要不可.
<h3>CS4232/CS4232A 晶片</h3>
<p>根据 INSTALL 档所言, 对这些卡您要提供 midi port 的资讯.
注意对下面例中的卡, 它使用给 3235/6/7/8/9 的驱动程式,
我给了所有资讯(除了 DMA 大小), 不然它不会动.
所以您也许就用这整段命令列来载入驱动程式吧!
如果您用了 isapnp-tools, 您可能在 /etc/isapnp.conf
中看到这些值:
<p>
<blockquote>
<code>
<pre>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)
</pre>
</code>
</blockquote>
<p>对标准设定值的卡, 您要用 "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
中的值不同, 那麽这里的值也该变一下. (用用您的头脑想想比较好
;)
<p>上例的 "NN" 值您要给真正的值,
我不晓得合理值是多少, 所以才这麽写. 我不晓得 dma
大小的参数是不是非要不可.
<h3>CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 chips</h3>
<p>根据 INSTALL 档所言, 对这些卡您要提供 midi port 以及
control port 的资讯. 注意对 CS4237B 的卡, 我给了所有资讯(除了
DMA 大小), 不然它不会动.
所以您也许就用这整段命令列来载入驱动程式, 不只是有
snd_port 及 snd_cport 而已. 如果您用了 isapnp-tools, 您可能在
/etc/isapnp.conf 中看到这些值:
<p>
<blockquote>
<code>
<pre>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)
</pre>
</code>
</blockquote>
<p>您要用 "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
的注意事项, 又, 没有支援摇□).
<p>注意事项:
<ul>
<li>"NN" 值要给真正的,
我不知道合理值是多少才这麽写.
<li>我的 CS4237B 卡没有明白指定 DMA 大小也用得很好.</li>
</ul>
<h2><a name="ss4.4">4.4 使用 kerneld 来载入</a></h2>
<p><code>kerneld</code> 是个在需要时插入模组,
并在不再使用时卸除它们的服务程式(daemon).
由於笔者没用过 kerneld, 不晓得下面的资讯准不准确.
以下资讯来自 ALSA 驱动程式套件的 INSTALL 档. 关於 kerneld
的详尽资讯可在 kerneld-mini-HOWTO 中找到.
<p>照以下步骤做:
<ul>
<li>编辑 /etc/conf.modules(後有□例)
<li>执行 'modprobe snd-card', 其中 snd-card 是您的音效卡名称
[ 我觉得奇怪, kerneld 应该负责载入它不是吗? VS]</li>
</ul>
这是 Gravis UltraSound PnP 音效卡的 /etc/conf.modules □例:
<blockquote>
<code>
<pre>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
</pre>
</code>
</blockquote>
<p>如果您想插更多卡, 这儿有□例(是同时有 Gravis
UltraSound Classic 及 Sound Blaster 16 的情形)
<blockquote>
<code>
<pre>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
</pre>
</code>
</blockquote>
<p>如果有两片 Gravis UltraSound Classic 音效卡, 就像下例:
<blockquote>
<code>
<pre>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
</pre>
</code>
</blockquote>
<p>
<h2><a name="backw-compat"></a><a name="ss4.5">4.5 向前相容</a></h2>
<p>如果您想保留 OSS/Free 或 OSS/Linux 的相容性,
您还要再加一个驱动程式: snd-pcm1-oss 驱动程式, 提供 OSS
相容性. 下
<blockquote>
<code>
<pre>modprobe snd-pcm1-oss
</pre>
</code>
</blockquote>
命令. 这将提供 /dev/audio 及 /dev/dsp 的支援, 就像 OSS/Free (核心)驱动程式及
OSS/Linux (要 25 美金的)所做的一样. 注意这只是模拟而已.
<p>
<hr>
<a href="Alsa-sound-5.html"><img alt="Next" src="next.gif" width="16" height="16"></a> <a href="Alsa-sound-3.html"><img alt="Previous" src="prev.gif" width="16" height="16"></a>
<a href="Alsa-sound.html#toc4"><img alt="Contents" src="toc.gif" width="16" height="16"></a><script>EndPage();</script>
</td>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -