📄 113.htm
字号:
<br>
正常状况下你会答'y', 这样一来, 今後你重编译核心的话,
可以直接用上次的音效驱动程式设定. <br>
<br>
如果你由旧版的音效驱动程式升级, 确定/usr/include/sys/soundcard.h及
/usr/include/sys/ultrasound.h以符号连结连到/usr/include/linux 下的同名档案,
或是它们分别包含#include <linux/soundcard.h>及#include
<linux/ultrasound.h> <br>
<br>
你现在已准备好, 可以编译及安装新核心了. <br>
<br>
4.3. 建立设备档 <br>
为了正常的操作, 必须为各音效设备建立设备档. 通常在你装Linux时就已经建好了,
可以用下列的命令快速检查一下. 如果输出结果和下面很像(日期不一样没关系),
那麽设备档差不多是设定正确了. <br>
<br>
<br>
% ls -l /dev/sdnstat <br>
crw-rw-rw- 1 root root 14, 6 Apr 25 1995 /dev/sndstat <br>
<br>
<br>
译注: 作者打错了, 是ls -l /dev/sndstat才对 <br>
<br>
注意有了正确的设备档并不保证一切完美了. 在设备能用以前,
还是要先载入或加进核心驱动程式(稍後再详述). <br>
<br>
如果您觉得设备档设错了, 您可以以root身份执行在/usr/src/linux/drivers/sound目录里的Readme.linux档尾部,
那个很短的shell script来重建它们. 另外, 多数Linux套件也提供/dev/MAKEDEV
script, 可以作这种用途. <br>
<br>
如果您用PC喇叭驱动程式, 请读内附文件, 以决定是否需要建立设备档.
<br>
<br>
4.4. 起动Linux及测试 <br>
您至此应该可以准备起动新核心, 测试驱动程式了.
照著您平时安装及重启动新核心的步骤去做(当然,
保留一份旧核心以防万一). <br>
<br>
在起动中, 检查一下有没有类似以下的讯息:(如果讯息卷动太快,
您可以用dmesg 命令回过来查看.) <br>
<br>
<br>
Sound initialization started <br>
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5 <br>
<Sound Blaster 16> at 0x330 irq 5 dma 0 <br>
<Yamaha OPL3 FM> at 0x388 <br>
Sound initialization complete <br>
<br>
<br>
这应该和您的音效卡及跳线设定(如果有的话)一致. <br>
<br>
如果您用可载入模组, 以上讯息就不会显示出来(除非您载入它时, 用``insmod
sound trace_init=1 '') <br>
<br>
当音效驱动程式载入核心中时, 应该会显示``Sound initialization started ''及``Sound
initialization complete''讯息. 如果没有, 表示音效驱动程式没有载入,
这时您应该检查一下目前起动的核心有没有加入音效驱动程式支援. <br>
<br>
如果在``Sound initialization started''及``Sound initialization complete ''间没有印出什麽东西,
那表示没有侦测到音效设备.
这最可能的原因是您没有使用正确的驱动程式, 卡没被支援, I/O位址不对或您用了还没有设定过的PnP卡.
<br>
<br>
驱动程式起动中亦可能印出错误及警告讯息. 在设定完驱动程式後,
重启动时, 注意这些讯息. <br>
<br>
再来是检查/dev/sndstat设备档. 读取这个状态档可以得知额外的资讯,
或是音效卡驱动程式是不是正确启动了. 输出□例如下: <br>
<br>
<br>
% cat /dev/sndstat <br>
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root, <br>
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586) <br>
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586 <br>
Config options: 0 <br>
<br>
Installed drivers: <br>
Type 1: OPL-2/OPL-3 FM <br>
Type 2: Sound Blaster <br>
Type 7: SB MPU-401 <br>
<br>
Card config: <br>
Sound Blaster at 0x220 irq 5 drq 1,5 <br>
SB MPU-401 at 0x330 irq 5 drq 0 <br>
OPL-2/OPL-3 FM at 0x388 drq 0 <br>
<br>
Audio devices: <br>
0: Sound Blaster 16 (4.13) <br>
<br>
Synth devices: <br>
0: Yamaha OPL-3 <br>
<br>
Midi devices: <br>
0: Sound Blaster 16 <br>
<br>
Timers: <br>
0: System clock <br>
<br>
Mixers: <br>
0: Sound Blaster <br>
<br>
<br>
以上的命令也可能回报错误讯息. ``No such file or directory''
表示您还没建设备档(参考4.3节). ``No such device''
表示音效程式没有载入, 或没有连结进核心里. 请回到4.2节以修正之. <br>
<br>
如果/dev/sndstat档中, 在``Card config:''段的几行写在括号里 (就像``
(SoundBlaster at 0x220 irq 5 drq 1,5)''), 它表示设备已经设定了,
但是没有侦测到. <br>
<br>
现在您应该可以试试放简单的音效档了. 抓□例音效档,
把它丢到设备档来检查. <br>
<br>
<br>
% cat endoftheworld >/dev/dsp <br>
% cat crash.au >/dev/audio <br>
<br>
<br>
(确定您没有省略掉大於符号) <br>
<br>
注意, 在平时用cat不是放音效档的贴切方法, 这只是为了检查罢了.
去抓合适的放音程式可以做得更好. <br>
<br>
只有在/dev/sndstat内的audio devices这段至少列出一个设备的情形下,
以上命令才会有效. 如果这段没列出什麽,
您应该检查一下为何设备没侦测到. <br>
<br>
如果以上命令回报``I/O error'', 您可以用``dmesg''命令检查核心讯息的尾部,
在那很可能会有印出错误讯息, 而且经常是 ``Sound: DMA (output) timed out -
IRQ/DRQ config error?''
这个讯息是指驱动程式没有从音效卡得到应该发生的中断.
最有可能的原因是, IRQ和DMA的设定没有作用.
解决这问题的最好方法就是土法炼钢, 把所有这张卡能设到的DMA和IRQ搭配都试试看.
<br>
<br>
另一种可能原因是驱动程式和卡不相容. 这几乎一定是所谓``声霸卡(Pro/16)相容卡
''和声霸卡驱动程式搭不起来.
这种状况下您要找出和您的卡能搭配的驱动程式才行.(例如,
可以投书到comp.os.linux.hardware讨论区问问) <br>
<br>
一些音效□例档可在
ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z 抓到. <br>
<br>
现在您可以试试录音了. 如果您的卡有录音能力,
您可以用以下命令来快速测试一下: <br>
<br>
<br>
# 从麦克风录进 4 秒声音 <br>
EDT% dd bs=8k count=4 < /dev/audio >sample.au <br>
4+0 records in <br>
4+0 records out <br>
# 把刚刚录的放出来 <br>
% cat sample.au > /dev/audio <br>
<br>
<br>
显然您必需要有连接音效卡的麦克风, 还要对著它讲话,
才能试出有没有效. 您也许也需要弄到一个混音程式,
设定麦克风为输入装置, 并设定其录音的增益. <br>
<br>
如果以上测试都通过了, 您就有理由相信音效D/A及A/D硬体和软体都很正常.
如果您碰到问题, 参考下一小节. <br>
<br>
4.5. 问题与解决 <br>
如果您进行了以上部骤, 仍然有问题, 那麽可以检查几个地方.
这些检查由简单到复杂依序排列, 如果检查出问题, 先解决,
再进行下一道检查. <br>
<br>
4.5.1. 第一步: 确定您用您自己编译的核心起动. <br>
您可以用核心的日期戳记来识别是不是您编译的那个有支援音效的核心.
您可以用 uname命令来作: <br>
<br>
<br>
% uname -a <br>
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386 <br>
<br>
<br>
或显示/proc/version档内容: <br>
<br>
% cat /proc/version <br>
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996 <br>
<br>
<br>
如果日期戳记不是您编译核心的时间, 那您用了旧的核心.
您真的重开机了吗? 如果您用 LILO, 是不是有重装呢(平常用/etc/lilo/install)?
如果是软碟起动, 您真的做了新开机片, 并用它开机吗? <br>
<br>
4.5.2. 第二步: 确定核心音效驱动程式有编进去. <br>
最简单的方法就是前面提过的, 检查``/dev/sndstat''的输出.
如果有地方不对, 那麽核心设定或建立一定有问题.
再重新设定及建立, 安装新核心的程序. <br>
<br>
4.5.3. 第三步: 核心起动时有侦测到您的音效卡吗? <br>
确定核心启动时您的卡有被侦测到. 您应该看过开机讯息了,
如果它卷得过快, 您通常可用dmesg命令叫回来: <br>
<br>
<br>
% dmesg <br>
<br>
或 <br>
% tail /var/adm/messages <br>
<br>
<br>
如果您的卡没侦测到, 就是某一处出问题. 确定那张卡真的装了.
如果那张卡在DOS下工作得很好, 那你就有理由相信硬体是正常的.
不是您把音效卡设错型式, 下错参数,
就是您的音效卡和核心音效驱动程式不相容. <br>
<br>
一种可能就是需要特殊DOS驱动程式来驱动的``相容''卡. 试著起动DOS,
载入厂商给的驱动程式, 然後按Control-Alt-Delete暖开机进Linux. 确定卡的I/O位址,
DMA及IRQ设定都和DOS一样. 读在音效驱动程式原始码中的Readme.cards档以得到关於设定您的这型卡的提示讯息.
<br>
<br>
如果您的卡并没有在本文件中列出, 可能是Linux驱动程式没支援的关系.
您可以参考本文末的参考资料来求助. <br>
<br>
4.5.4. 第四步: 您能从dsp设备读出资料吗? <br>
试试用前面提过的``dd''命令读取/dev/audio.
这个命令应该不会有错误才对. <br>
<br>
如果不行, 那可能是IRQ/DMA冲到, 或某种硬体不相容(设备不为Linux支援,
或用错驱动程式). <br>
<br>
还有一个少见的可能是不良的硬体. 可能的话, 在DOS下测试一下,
消去这种可能性. <br>
<br>
4.5.5. 要是这些都没用呢? <br>
如果您还是有问题, 这里提供最後几招试试: <br>
<br>
<br>
小心重读这份HOWTO文件 <br>
读本文件後列的参考资料, 特别是Hannu Savolainen的网站,
及相关的核心原始码 Readme档. <br>
到comp.os.linux或其它Usenet讨论区(comp.os.linux.hardware 是个好地方;
因为这儿水量多, 最好在标题栏注明 "sound",
这样适合的专家才会找到它.) <br>
用Web/Usenet搜寻引擎, 智慧型搜寻, 很快就能找到很好的结果.
一个好选择是 http://www.altavista.com. <br>
用最新的Linux核心.(但是只在最後关头才用,
最新的发展用核心可能很不稳) <br>
发封信给音效驱动程式作者 <br>
发封信给Sound HOWTO的作者 <br>
叫出emacs, 输入Esc-x doctor :-) </p>
<BR>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" bgcolor="#e0e0e0"><strong><A HREF="114.htm">后一页</A><BR>
<A HREF="112.htm">前一页</A><BR>
<A HREF="index.html">回目录</A><BR>
<A HREF="../../../../index.htm">回首页</A><BR>
</strong>
</TD>
</TR>
</table>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -