原始文件:Linux Soundblaster 16 PnP Mini-Howto
檔案敘述:如何在 Linux 設定 Soundblaster 16 PnP 音效卡
翻譯日期:1997/11/20
翻譯維護:cwhuang@phys.ntu.edu.tw
----------------------------------------------------------------------------------------------
Linux Soundblaster 16 PnP Mini-Howto
by Eric Z. Ayers <Eric.Ayers@compgen.com>
v1.0, 14 January 1997

很高興地,我的太太給我一塊嶄新的音效卡作為生日禮物.但不幸地,這塊
Soundblaster 16 PnP 音效卡拒絕在 Linux 下工作.事實上,我的 3com 
3c509 網路卡也不能在 Linux 下運作.

最後,在隨附核心而來的 Linux 音效卡驅動程式及由 
ftp://ftp.redhat.com/pub/utils/isapnptools-1.8.tgz 取得的
isapnp 套件的協助下我終於讓我的硬體能運作了.

結果是我必須面對兩項主要的困難以便讓音效卡能工作.第一個困難是我不
知道用來和音效卡溝通的 IRQ 及輸出入埠(IO ports)位址.這點由 isapnp
工具套件所解決.第二個問題是 3c509 乙太網路卡.似乎不論我怎麼去改變
卡上的設定,Linux 的核心都沒辦法認出這塊乙太網路卡.結果是因為有一
個音效卡上的裝置和 3c509 的偵測程式碼相衝.


1) 安裝 isapnp 套件.編輯 /etc/isapnp.conf 使得音效卡的 IRQ 及輸出
   入埠位址不會和你的任何其它裝置相衝.

2) 重建 Linux 核心.將音效支援變成一可載入模組,其中 IRQ, 輸出入及
   DMA 位址就如 isapnp.conf 所配置的.同時也將你的 3c509 做成一模組
   (在編譯及安裝完你的核心之後不要忘了執行 make modules 及 make 
   modules_install).

3) 修改你系統的啟動程序稿.

我在跑的是 Slackware 套件而核心版本是 2.0.23.在網路被設定之前,我
執行 isapnp 程式 (在 /etc/rc.d/rc.M 裡就在 hostname 被設定之後):


# EZA
# 設定即插即用裝置
/sbin/isapnp /etc/isapnp.conf


然後,我在 /etc/rc.d/rc.inet1 所做的第一件事是載入網路卡驅動程式


# EZA
# 載入網路卡模組
/sbin/insmod 3c509

我忽略了啟動時動態偵測乙太網路卡無法運作的警告訊息,因為它對我沒
有影響.最後,在 /etc/rc.d/rc.local 裡我插入了音效卡驅動程式模組:


/sbin/insmod sound


更多關於 Linux 即插即用裝置的資訊可在 
http://www.redhat.com/linux-info/pnp/ 找到.我現在快樂地以
Real-Audio player 享用網路並且聆聽由我的光碟機所撥放的 CD 音樂.

Eric Ayers
eric.ayers@compgen.com

---------------------------------------------------------------------------
這兒有份我的 isapnp.conf 的拷貝,大部份的註解都已去掉.

# Trying port address 0203
# Board 1 has serial identifier 67 00 00 40 17 2b 00 8c 0e

# (DEBUG)
(READPORT 0x0203)
(ISOLATE)
(IDENTIFY *)

# Card 1: (serial identifier 67 00 00 40 17 2b 00 8c 0e)
# CTL002b Serial No 16407 [checksum 67]
# Version 1.0, Vendor version 2.0
# ANSI string -->Creative SB16 PnP<--
#
# Logical device id CTL0031
#
# Edit the entries below to uncomment out the configuration required.
# Note that only the first value of any range is given, this may be changed if required
# Don't forget to uncomment the activate (ACT Y) when happy

(CONFIGURE CTL002b/16407 (LD 0
#     ANSI string -->Audio<--

# Multiple choice time, choose one only !

#     Start dependent functions: priority preferred
#       IRQ 5.
#             High true, edge sensitive interrupt (by default)
(INT 0 (IRQ 5 (MODE +E)))
(DMA 0 (CHANNEL 1))
(DMA 1 (CHANNEL 5))
(IO 0 (BASE 0x0220))
(IO 1 (BASE 0x0330))
(IO 2 (BASE 0x0388))
(ACT Y)
))

(CONFIGURE CTL002b/16407 (LD 1
(INT 0 (IRQ 11 (MODE +E)))
(IO 0 (BASE 0x01e8))
(IO 1 (BASE 0x03ee))
 (ACT Y)
))


(CONFIGURE CTL002b/16407 (LD 2
#     ANSI string -->StereoEnhance<--
#     Logical device decodes 16 bit IO address lines
#         Minimum IO base address 0x0100
#         Maximum IO base address 0x0138
#         IO base alignment 8 bytes
#         Number of IO addresses required: 1
#(IO 0 (BASE 0x0100))
#(ACT Y)
))


(CONFIGURE CTL002b/16407 (LD 3
(IO 0 (BASE 0x0200))
(ACT Y)))