Linux 版 (精华区)
发信人: clx (楚留香), 信区: Unix
标 题: The Linux Sound HOWTO -- Linux 音效指引(05)
发信站: 紫 丁 香 (Sat Jun 27 17:31:46 1998), 转信
The Linux Sound HOWTO -- Linux 音效指引 : 安装
Previous: 支援的硬体
Next: 支援音效的应用软体
4. 安装
要在Linux下享用音效, 必须先进行以下步骤:
1.安装音效卡
2.建造核心, 使之支援音效
3.建造设备档
4.启动Linux核心, 并测试
底下我们将对每一步作详细解说.
4.1. 安装音效卡
按照说明书的指示, 安装硬体, 或是请厂商来装.
旧的音效卡通常有开关或跳线, 以设定IRQ, DMA通道等, 请把这些
设定记下来. 如果你不 确定要怎麽调, 就照出厂值. 可能的话, 避
免和其它设备(如网路卡, SCSI卡, 平行及串列 埠)相冲.
若你在DOS下有使用音效卡, 通常应该设成和DOS下一样. 不过有些
情况下(特别是PnP的 卡)也可能要设成和DOS不一样的值. 这时可能
要实验一下.
4.2. 设定核心
安装时您用的是预先编译过的核心, 它们通常是不支援音效的. 所
以最好自己编译适合自 己用的核心. 而且, 您也可能想要藉此来升
级到更新版的核心, 或是缩小核心体积, 增加 可用的记忆体.
在如何建造核心方面, 您应该参考 Linux Kernel HOWTO. 我在这里
只提和音效卡相关的部份.
如果您还没有编译核心, 加入音效支援的经验, 先读一下核心驱动
程式里的Readme 档(特别是关於您的音效卡的部份)是个不错的主
意. 以下档案可以在核心音效驱动程式 的目录中找到, 通常放在
/usr/src/linux/drivers/sound:
CHANGELOG - 简介每一版中的变更
COPYING - 拷贝及版权限制
Readme - 最新, 最重要的消息
Readme.aedsp16 - 关於 Audio Excel DSP 16 音效卡的资讯
Readme.cards - 设定音效卡的说明
Readme.linux - 安装核心以外散布的驱动程式之注意事项
Readme.modules - 如何作成可载入模组
Readme.v30 - 3.0 版的新功能介绍
experimental.txt - 讲一些实验中的功能
照一般造核心的程序来就好. 目前设定核心有三种介面可选择. 用
``make xconfig '' 可叫出在X11下的图形设定介面; 用 ``make
menuconfig'' 则是文字 模式的选单介面; 最原始的方法, 则是用
``make config'', 提供了简单的文 字问答介面.
当用``make xconfig''或``make menuconfig''时, 所有Yes/No问题
都要特别小心确认. 这些命令给的预设答案都是No, 这并不见得就
是正确的选择. 特别是 ``/dev/dsp and /dev/audio support''
(CONFIG_AUDIO) 选项通常是要打开 的.
在这篇文件中, 我假设你用传统的命令行式 ``make config''来做.
虽然说其实别的方式也差不多.
设定音效的方法也有二则. 其一, ``老''方法(在2.0.0板以前的核
心只能 用这方法), 使用一个内附的设定程式. 这种方法对多数音
效卡有用, 除了少数需要 额外``低阶''驱动程式的(如miroSOUND,
AWE32, 及AEDSP16)以外.
第二种是``新''方法, 它和设定核心的其它部份用的选单介面有较
佳的整合性. 这方法对要韧体下载档的音效卡无效. 这些卡包括
PSS, SM Wave, AudioTrix Pro 及 TurtleBeach Tropez/Maui卡,
对付它们你只好用老方法了.
``make xconfig''一定用``新''方法. 在``make menuconfig'' 中,
你可以在音效子画面中选择用``老''方法或``新''方法. "make
config"的情况, 预设是用``老''方法, 不过如果你已经用过 一次
``新''方法了, 那麽它也会改成用新方法. 之後你仍可以在"make
menuconfig"中切换回老方法.
我们建议用``make menuconfig''加``老''方法. 很多设定问题都
(至少一部份是)由於误用了新方法所致.
也可以把音效驱动程式做成核心可载入模组. 我建议一开始先不要
做成模组, 等测试过可 用後, 再试试把它做程模组.
执行``make config''时, 以``y''回答下列问题, 以起动音效支援.
Sound card support (CONFIG_SOUND) [M/n/y/?]
这问题答完後, 音效设定程式会被编译, 执行. 它会问你要那些装
置及选项. 回答这些问 题时要小心, 前面回答错误可能後面的问题
就不会问了. 例如说, 如果你没有PAS16音效 卡, 第一个问题
(PAS16)就不要答``yes''. 不要加入比你会用上的卡还多的驱 动程
式, 这只会浪费记忆体. 有些驱动程式(像MPU-401)可能会和你的
SCSI卡相冲, 结果 开不了机.
作者在此简短的叙述各个设定选项的意义. 对每一个问题请以
``y''(yes)或 ``n''(no)作答. 里面会显示预定答案,
如``[Y/n/?]''表示 预定``y'' 而``[N/y/?]''表示预定是``n''.
你可以 直接按Enter选预定的答案, 但记住预定答案不一定是对的.
输入问号(``?'')会给你对此选项的简短的描述.
也注意一下不见得每个问题都会问, 设定程式可能会依据前面的选
择而自动取消或设定某 些选项.
Old configuration exists in /etc/soundconf. Use it [Y/n/?]
如果你以前有设定过音效驱动程式, 您的设定会被存起来. 如
果您想直接用上次的设定, 回答``y''. 如果您想作些改变或换
了新版核心, 您应该回答 ``n'' 并继续下面的设定程序.
ProAudioSpectrum 16 support [Y/n/?]
只有当您有ProAudio Spectrum 16, ProAudio Studio 16或罗
技 SoundMan 16 时, 答'y'. 如果您有其它Media Vision或罗
技的卡, 还是请回答'n', 因为它们并不和 PAS16相容.
SoundBlaster support [Y/n/?]
如果您有真正由Creative Labs制的声霸卡或100%硬体相容(如
Thunderboard 或 SM Games )卡, 回答'y'. 如果您的卡在支援
之列, 请先看Readme.cards中和卡相关的指示 再回答. 对完全不
知道的卡, 如果它坚称是和声霸卡相容, 你可以回答'y'.
Gravis Ultrasound support [Y/n/?]
如果您有GUS或GUS Max,回答'y'. 不然就回答'n', 这个驱动程
式吃记忆体吃得凶.
MPU-401 support (NOT for SB16) [Y/n/?]
这问题要小心. 几乎所有的卡都支援MPU-401 MIDI介面, 然而,
有些卡需要专属的驱动程 式. 在这种卡上开启这个驱动程式会
造成冲突. 在没有MPU-401的电脑上使用这个驱动程式 也会造
成麻烦. 如果你的卡在支援之列, 看Readme.cards档中的指示. 如
果你有 真正的MPU-401 MIDI介面卡, 那就可以放心回答'y'.
6850 UART Midi support [Y/n/?]
最好回答'n'. 6850 UART 介面甚少被用到.
PSS (ECHO-ADI2111) support [Y/n/?]
如果你有Orchid SW32, Cardinal DSP16或其它用PSS晶片组
(AD1848 编解码器 + ADSP-2115 DSP晶片 + Echo ESC614 ASIC
晶片)的卡, 答'y', 不然答'n'.
16 bit sampling option of GUS (not GUS MAX) [Y/n/?]
如果您的GUS上有装16 bit取样子卡, 回答'y'. 如果您有GUS
MAX, 回答 'n'. 启动这个就 会关闭GUS MAX.
GUS MAX support [Y/n/?]
除非你有GUS Max, 不然回答'n'吧!
Microsoft Sound System support [Y/n/?]
一样请先三思再答. 如果你有微软制的原版Windows Sound
System卡或Aztech SG 16 Pro (或NX16 Pro)的话, 可放心回答
'y'. 如果你的音效卡不在上面所列, 也可以答'y'试试.
对VoxWare支援的卡请先看Readme.cards. 有些驱动程式有自己的
一套驱动MSS的 方法, 起动这个会造成冲突.
Ensoniq Soundscape support[Y/n/?]
如果你的卡用的是Ensonic Soundscape晶片, 回答'y'. 这种卡
至少有Ensoniq, Spea 及 Reveal(也做别种卡)在制造.
MediaTriX AudioTriX Pro support [Y/n/?]
如果你有AudioTrix Pro的话, 答'y'.
Support for MAD16 and/or Mozart based cards?
如果你是用莫扎特音效卡(OAK OTI-601)或MAD16(Opti 82c928
或82c929)音效介面晶片. 这 种晶片非常普遍, 所以一些无牌
卡也许就用它. 除此之外, MAD16也被一些知名厂商像
TurtleBeach(Tropez), Reveal(几种型式), 及 Diamond(最新
的)用来放在他们的卡上.
Support for Crystal CS4232 based (PnP) cards [Y/n/?]
如果你的卡用Crystal CS4232晶片, 答'y'.
Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers [Y/n/?]
如果你有上面列出的卡才选'y'.
SoundBlaster Pro support [Y/n/?]
如果你的卡是声霸卡Pro或声霸卡16, 答'y'. 对声霸卡Pro相容
的也可以用它. 回答'n'省 一点记忆体, 但'y'也是安全的选
择.
SoundBlaster 16 support [Y/n/?]
如果你的卡是声霸卡16(包括AWE32), 答'y'.
Audio Excel DSP 16 initialization support [Y/n/?]
如果你用Audio Excel DSP16的话, 答'y'. 请看Readme.aedsp16以
获得更多资 讯.
然後设定程式会问你关於高阶服务方面的问题. 建议对每一项都答
'y', 除非你很 明白你不会用到这功能才答'n'.
/dev/dsp and /dev/audio support (usually required) [Y/n/?]
回答'n'的话, /dev/dsp及/dev/audio(及A/D及D/A转换装置)就不能
用了. 回答'y'吧!
MIDI interface support [Y/n/?]
回答'n'则会让/dev/midixx及使用/dev/sequencer和/dev/music的MIDI
连接埠失效. 这选项也会影响MPU-401及General MIDI相容设
备.
FM synthesizer (YM3812/OPL-3) support [Y/n/?]
在这请回答'y'.
/dev/sequencer support [Y/n/?]
回答'n'就会让/dev/sequencer及/dev/music失效.
Do you want support for the mixer of SG NX Pro ?
如果你有SoundGalaxy NX音效卡, 想支援它的延伸混音功能的
话, 答'y'.
Do you want support for the MV Jazz16 (ProSonic etc.) ?
如果你有MV Jazz16(ProSonic等), 答'y'.
Do you have a Logitech SoundMan Games [Y/n/?]
如果你有罗技SoundMan Games音效卡, 答'y'.
以上问题问完後, 设定程式提示你回答和卡相关的设定问题. 通常
只问I/O位址, IRQ及DMA 号码. 对某些卡会要你用一些启始时需要
的档案. 这是用在一些必须载入程式(微码)以起 动的DSP晶片或微
处理器. 有时这写在.h档里, 在编译时加入驱动程式里. 同样,
读Readme.cards中关於你的卡的部份以便了解更多.
最後它会说:
The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]
(音效驱动程式已经设定完毕.
要不要将设定存到/etc/soundconf [Y/n/?])
正常状况下你会答'y', 这样一来, 今後你重编译核心的话, 可以直
接用上次的音效驱动 程式设定.
如果你由旧版的音效驱动程式升级, 确定/usr/include/sys/soundcard.h
及 /usr/include/sys/ultrasound.h以符号连结连到/usr/include/linux 下的
同名档案, 或是它们分别包含#include <linux/soundcard.h>及#include
<linux/ultrasound.h>
你现在已准备好, 可以编译及安装新核心了.
4.3. 建立设备档
为了正常的操作, 必须为各音效设备建立设备档. 通常在你装Linux
时就已经 建好了, 可以用下列的命令快速检查一下. 如果输出结果
和下面很像(日期不一样 没关系), 那麽设备档差不多是设定正确
了.
% ls -l /dev/sdnstat
crw-rw-rw- 1 root root 14, 6 Apr 25 1995 /dev/sndstat
译注: 作者打错了, 是ls -l /dev/sndstat才对
注意有了正确的设备档并不保证一切完美了. 在设备能用以前, 还
是要先载入或加进 核心驱动程式(稍後再详述).
如果您觉得设备档设错了, 您可以以root身份执行在
/usr/src/linux/drivers/sound目录里的Readme.linux档尾部, 那个很短 的
shell script来重建它们. 另外, 多数Linux套件也提供
/dev/MAKEDEV script, 可以作 这种用途.
如果您用PC喇叭驱动程式, 请读内附文件, 以决定是否需要建立设
备档.
4.4. 起动Linux及测试
您至此应该可以准备起动新核心, 测试驱动程式了. 照著您平时安
装及重启动新核心的步 骤去做(当然, 保留一份旧核心以防万一).
在起动中, 检查一下有没有类似以下的讯息:(如果讯息卷动太快,
您可以用dmesg 命令回过来查看.)
Sound initialization started
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
这应该和您的音效卡及跳线设定(如果有的话)一致.
如果您用可载入模组, 以上讯息就不会显示出来(除非您载入它时,
用``insmod sound trace_init=1 '')
当音效驱动程式载入核心中时, 应该会显示``Sound
initialization started ''及``Sound initialization
complete''讯息. 如果没有, 表示音效驱 动程式没有载入, 这时您
应该检查一下目前起动的核心有没有加入音效驱动程式支援.
如果在``Sound initialization started''及``Sound
initialization complete ''间没有印出什麽东西, 那表示没有侦
测到音效设备. 这最可能的原因是您没有使用 正确的驱动程式, 卡
没被支援, I/O位址不对或您用了还没有设定过的PnP卡.
驱动程式起动中亦可能印出错误及警告讯息. 在设定完驱动程式後,
重启动时, 注意这 些讯息.
再来是检查/dev/sndstat设备档. 读取这个状态档可以得知额外的资
讯, 或是音 效卡驱动程式是不是正确启动了. 输出□例如下:
% cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root,
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586)
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586
Config options: 0
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401
Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0
Audio devices:
0: Sound Blaster 16 (4.13)
Synth devices:
0: Yamaha OPL-3
Midi devices:
0: Sound Blaster 16
Timers:
0: System clock
Mixers:
0: Sound Blaster
以上的命令也可能回报错误讯息. ``No such file or directory''
表示您还 没建设备档(参考4.3节). ``No such device'' 表示音效
程式没有载入, 或没 有连结进核心里. 请回到4.2节以修正之.
如果/dev/sndstat档中, 在``Card config:''段的几行写在括号里
(就像`` (SoundBlaster at 0x220 irq 5 drq 1,5)''), 它表示设
备已经设定了, 但是没有侦 测到.
现在您应该可以试试放简单的音效档了. 抓□例音效档, 把它丢到
设备档来检查.
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(确定您没有省略掉大於符号)
注意, 在平时用cat不是放音效档的贴切方法, 这只是为了检查罢了.
去抓合适的放音程式可以做得更好.
只有在/dev/sndstat内的audio devices这段至少列出一个设备的情
形下, 以上命令才会 有效. 如果这段没列出什麽, 您应该检查一下
为何设备没侦测到.
如果以上命令回报``I/O error'', 您可以用``dmesg''命令检查 核
心讯息的尾部, 在那很可能会有印出错误讯息, 而且经常是
``Sound: DMA (output) timed out - IRQ/DRQ config error?''
这个讯息是指驱动程式没有从音效卡得到应 该发生的中断. 最有可
能的原因是, IRQ和DMA的设定没有作用. 解决这问题的最好方法就
是土法炼钢, 把所有这张卡能设到的DMA和IRQ搭配都试试看.
另一种可能原因是驱动程式和卡不相容. 这几乎一定是所谓``声霸
卡(Pro/16)相容卡 ''和声霸卡驱动程式搭不起来. 这种状况下您要
找出和您的卡能搭配的驱动程式才 行.(例如, 可以投书到
comp.os.linux.hardware讨论区问问)
一些音效□例档可在
ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z
抓到.
现在您可以试试录音了. 如果您的卡有录音能力, 您可以用以下命
令来快速测试一下:
# 从麦克风录进 4 秒声音
EDT% dd bs=8k count=4 < /dev/audio >sample.au
4+0 records in
4+0 records out
# 把刚刚录的放出来
% cat sample.au > /dev/audio
显然您必需要有连接音效卡的麦克风, 还要对著它讲话, 才能试出
有没有效. 您也许也需 要弄到一个混音程式, 设定麦克风为输入装
置, 并设定其录音的增益.
如果以上测试都通过了, 您就有理由相信音效D/A及A/D硬体和软体
都很正常. 如果您碰到 问题, 参考下一小节.
4.5. 问题与解决
如果您进行了以上部骤, 仍然有问题, 那麽可以检查几个地方. 这
些检查由简单到复杂 依序排列, 如果检查出问题, 先解决, 再进行
下一道检查.
4.5.1. 第一步: 确定您用您自己编译的核心起动.
您可以用核心的日期戳记来识别是不是您编译的那个有支援音效的
核心. 您可以用 uname命令来作:
% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
或显示/proc/version档内容:
% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996
如果日期戳记不是您编译核心的时间, 那您用了旧的核心. 您真的
重开机了吗? 如果您用 LILO, 是不是有重装呢(平常用
/etc/lilo/install)? 如果是软碟起动, 您真的 做了新开机片, 并用它
开机吗?
4.5.2. 第二步: 确定核心音效驱动程式有编进去.
最简单的方法就是前面提过的, 检查``/dev/sndstat''的输出. 如
果有地方不对, 那麽核心设定或建立一定有问题. 再重新设定及建
立, 安装新核心的程序.
4.5.3. 第三步: 核心起动时有侦测到您的音效卡吗?
确定核心启动时您的卡有被侦测到. 您应该看过开机讯息了, 如果
它卷得过快, 您通常可 用dmesg命令叫回来:
% dmesg
或
% tail /var/adm/messages
如果您的卡没侦测到, 就是某一处出问题. 确定那张卡真的装了.
如果那张卡在DOS下工 作得很好, 那你就有理由相信硬体是正常的.
不是您把音效卡设错型式, 下错参数, 就是 您的音效卡和核心音效
驱动程式不相容.
一种可能就是需要特殊DOS驱动程式来驱动的``相容''卡. 试著起动
DOS, 载入 厂商给的驱动程式, 然後按Control-Alt-Delete暖开机进
Linux. 确定卡的I/O位 址, DMA及IRQ设定都和DOS一样. 读在音效
驱动程式原始码中的Readme.cards档 以得到关於设定您的这型卡的提
示讯息.
如果您的卡并没有在本文件中列出, 可能是Linux驱动程式没支援的
关系. 您可以参考本文 末的参考资料来求助.
4.5.4. 第四步: 您能从dsp设备读出资料吗?
试试用前面提过的``dd''命令读取/dev/audio. 这个命令应该不会有
错误才对.
如果不行, 那可能是IRQ/DMA冲到, 或某种硬体不相容(设备不为
Linux支援, 或用错驱 动程式).
还有一个少见的可能是不良的硬体. 可能的话, 在DOS下测试一下,
消去这种可能性.
4.5.5. 要是这些都没用呢?
如果您还是有问题, 这里提供最後几招试试:
小心重读这份HOWTO文件
读本文件後列的参考资料, 特别是Hannu Savolainen的网站,
及相关的核心原始码 Readme档.
到comp.os.linux或其它Usenet讨论区(comp.os.linux.hardware
是个好地方; 因为这儿水量多, 最好在标题栏注明 "sound",
这样适合的专家才会找到它.)
用Web/Usenet搜寻引擎, 智慧型搜寻, 很快就能找到很好的结
果. 一个好选择是 http://www.altavista.com.
用最新的Linux核心.(但是只在最後关头才用, 最新的发展用核
心可能很不稳)
发封信给音效驱动程式作者
发封信给Sound HOWTO的作者
叫出emacs, 输入Esc-x doctor :-)
The Linux Sound HOWTO -- Linux 音效指引 : 安装
Previous: 支援的硬体
Next: 支援音效的应用软体
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.244.16]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:203.804毫秒