?? 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 + -