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. 要是這些都沒用呢?

如果您還是有問題, 這裡提供最後幾招試試:


The Linux Sound HOWTO -- Linux 音效指引 : 安裝
Previous: 支援的硬體
Next: 支援音效的應用軟體