原始文件:
Linux Soundblaster 16 PnP Mini-Howto
, ~3 @* J& \6 x) \0 g
档案叙述:如何在 Linux 设定 Soundblaster 16 PnP 音效卡
t# N! }9 A7 U) a
翻译日期:1997/11/20
6 B8 {0 z) k+ l& ?' t
翻译维护:cwhuang@phys.ntu.edu.tw
/ r4 l2 h/ c' D) v/ E
----------------------------------------------------------------------------------------------
& n, f8 [; i& G4 ILinux Soundblaster 16 PnP Mini-Howto
' R2 I- w" w" A) ~: D+ o4 A/ f0 ]+ ^+ kby Eric Z. Ayers
+ @7 w4 K, _! Lv1.0, 14 January 1997
$ i8 j+ e2 a( c: g$ l$ h% k
/ P+ u0 l# [+ w# t
很高兴地,我的太太给我一块崭新的音效卡作为生日礼物.但不幸地,这块
3 f" }8 T' y) _
Soundblaster 16 PnP 音效卡拒绝在 Linux 下工作.事实上,我的 3com
5 }' a: ]* a9 ` F! f; @+ n% t
3c509 网路卡也不能在 Linux 下运作.
# K- L' T& M6 l3 ?6 ^
5 u& d0 L7 |) o7 a最後,在随附核心而来的 Linux 音效卡
驱动程式及由
+ |6 g ~7 M3 M+ uftp://ftp.redhat.com/pub/utils/isapnptools-1.8.tgz 取得的
( f' l$ K( w& {) O
isapnp 套件的协助下我终於让我的硬体能运作了.
3 u7 ?7 t! D5 L1 s0 ]( d! C9 |) }* o; c8 t& w% p
结果是我必须面对两项主要的困难以便让音效卡能工作.第一个困难是我不
* d# X, h( t+ p8 J
知道用来和音效卡沟通的 IRQ 及输出入埠(IO ports)位址.这点由 isapnp
7 U- p; Y1 j9 H, Y
工具套件所解决.第二个问题是 3c509 乙太网路卡.似乎不论我怎麽去改变
7 S$ J I% w5 m1 B6 B卡上的设定,Linux 的核心都没办法认出这块乙太网路卡.结果是因为有一
$ b6 I3 P7 x, `) V5 x3 a个音效卡上的装置和 3c509 的侦测程式码相冲.
* [- i, i+ c" [) x `$ K& D9 n# A, I. S
$ C5 C; B! j# S
1) 安装 isapnp 套件.
编辑 /etc/isapnp.conf 使得音效卡的 IRQ 及输出
& P- F# \ a4 H8 W6 N: B; ~
入埠位址不会和你的任何其它装置相冲.
8 p; t2 A: W& k* N( V; y$ o
O8 _9 }9 u4 l- {7 C) n0 a$ t$ \
2) 重建 Linux 核心.将音效支援变成一可载入模组,其中 IRQ, 输出入及
0 _3 V2 d D. I8 m* U2 Z. q
DMA 位址就如 isapnp.conf 所配置的.同时也将你的 3c509 做成一模组
9 X# V$ r- ~ D/ n% A& o$ I6 E$ \* d (在编译及安装完你的核心之後不要忘了执行 make modules 及 make
3 R; @0 p* o+ H
modules_install).
/ k6 h: l* r: E5 {- H6 e
/ e7 q+ w, O* n2 v3) 修改你
系统的启动
程序稿.
/ o* Q/ Q( G! B7 k7 S2 @7 J: i
; e7 C4 e4 q( v |" |9 I5 {- m我在跑的是 Slackware 套件而核心版本是 2.0.23.在网路被设定之前,我
! Y. S8 R6 _8 q* ~, a$ P执行 isapnp 程式 (在 /etc/rc.d/rc.M 里就在 hostname 被设定之後):
, g& X5 _/ Y4 v/ c: K3 [/ B
2 ?9 ~$ w' \4 b7 i* t% b9 @! W' O( d* y0 q" V; M$ l8 h" s
# EZA
& ?) s& K2 r8 f+ y H
# 设定即插即用装置
. D) n9 ^. T. \
/sbin/isapnp /etc/isapnp.conf
3 E5 V+ ~4 c; G( C, a* T$ f: V: @! [$ U3 O
1 M$ ^( z# z+ S3 G, _: K, x
然後,我在 /etc/rc.d/rc.inet1 所做的第一件事是载入网路卡驱动程式
- N! W' d& x7 I$ b0 [8 [2 R# P0 q# k3 v, H1 h
0 w8 Z- O. m; X3 y8 r0 |9 V! |& ^
# EZA
, ? B' g5 L+ J! b4 }
# 载入网路卡模组
0 ? D7 ?) H; O" d% v, j" D' j/sbin/insmod 3c509
5 }* r, k$ C$ Q& z4 O) w
2 C% U$ p+ C" [0 [我忽略了启动时动态侦测乙太网路卡无法运作的警告讯息,因为它对我没
2 k- V6 F5 ]8 ~0 L, N
有影响.最後,在 /etc/rc.d/rc.local 里我插入了音效卡驱动程式模组:
3 [4 N! B( Z: T9 E9 f[color=#FFFFFF']
+ V- O5 Q( M& ~, _ ?8 s" x: c% H8 _! C) J* ?; Y+ n9 j
: p% p; Y3 U3 X6 R6 Q+ ?# ^* Y) N% D1 T9 ~
/sbin/insmod sound
7 O9 L$ A% ]) k$ n8 {6 C* y& n- O/ J' Z5 s6 I$ K
. M- h+ U$ @/ ^+ X6 X
更多关於 Linux 即插即用装置的资讯可在
+ I3 x. S4 X! N& a7 ahttp://www.redhat.com/linux-info/pnp/ 找到.我现在快乐地以
; c& T: J0 H& U! C6 M# m8 L9 J& Z
Real-Audio player 享用网路并且聆听由我的光碟机所拨放的 CD 音乐.
, u( L9 `: }+ ]* f: J! K5 f
, i' z$ u, |9 Z& s; t* j7 Z: zEric Ayers
% _8 }- P0 ^" ~" @
eric.ayers@compgen.com
: z/ K. H- b5 }$ x% C! j1 b' o
! p+ P( w1 P- v* P7 B
---------------------------------------------------------------------------
* p; R: m6 O+ w+ f
这儿有份我的 isapnp.conf 的拷贝,大部份的注解都已去掉.
* p1 P: X( U p) z: y! V
7 g% P+ r* q# ^. R
# Trying port address 0203
' T" _9 e5 u, k
# Board 1 has serial identifier 67 00 00 40 17 2b 00 8c 0e
( m5 k6 y0 m; K+ H' j- r. L
/ O' g9 U; i7 w7 G* r: t+ k# (DEBUG)
/ x& l$ j! ]8 R! V& Y7 }7 `! `
(READPORT 0x0203)
$ c' ]4 S" ]- H+ n1 S. D" z(ISOLATE)
/ }. @( o% c5 L; [6 D# N& C
(IDENTIFY *)
" c) y5 T( B M1 m/ b1 o7 p8 ^1 {* K) [) C
# Card 1: (serial identifier 67 00 00 40 17 2b 00 8c 0e)
. G* [! W, ]$ Z6 n. y+ y; _) g
# CTL002b Serial No 16407 [checksum 67]
9 @0 H+ l3 U9 v" B. @ Z+ X
# Version 1.0, Vendor version 2.0
$ l0 o, G9 N/ k9 u9 D3 y% [# ANSI string --%26gt;Creative SB16 PnP%26lt;--
$ j- u1 J# O) B' |' g#
& V# [6 a0 R8 F3 f2 j3 t
# Logical device id CTL0031
& t' f$ y% a/ s* r
#
4 l, n/ t$ A' C* n! Z% G
# Edit the entries below to uncomment out the configuration required.
( t; P2 r5 @. h6 v) e8 _
# Note that only the first value of any range is given, this may be changed if required
* Q# ?, s2 _8 M! g2 L( o) g# Don't forget to uncomment the activate (ACT Y) when happy
; i. B! A" [ N4 E) G2 d
3 d: m$ F4 b7 D8 c' g1 G7 @' g! h" b
(CONFIGURE CTL002b/16407 (LD 0
9 O7 A2 g6 X3 ~* Q' D
# ANSI string --%26gt;Audio%26lt;--
; J0 Y2 C4 C5 |, {4 Z% U( f
" Z- |3 e9 j9 P. u1 N
# Multiple choice time, choose one only !
- S% C5 d" N+ \; ~2 A, Y3 P
4 I/ N% Q+ ^' I& u0 n% I% X! M2 Z# Start dependent functions: priority preferred
3 p% n) k& X. p$ h; Y. Q f, b
# IRQ 5.
! M. v! u' l* t8 B, N4 `: ^/ H# High true, edge sensitive interrupt (by default)
" k* e& c$ e0 q+ {1 w0 r0 p
(INT 0 (IRQ 5 (MODE E)))
2 h/ @" K% F& H# {9 W(DMA 0 (CHANNEL 1))
: h9 @8 L/ l$ z(DMA 1 (CHANNEL 5))
^' `( s' _7 W4 c. @(IO 0 (BASE 0x0220))
0 D/ o$ a; C. {2 p [, S% B
(IO 1 (BASE 0x0330))
, q+ b% U, q2 _3 c l(IO 2 (BASE 0x0388))
4 H/ k. w) j- u* I- w8 P" ](ACT Y)
+ O( g- k; E5 ~1 q( s8 G- @2 v
))
" P+ w5 K, J4 s. @5 U. ?* ]( @: Q# n
(CONFIGURE CTL002b/16407 (LD 1
8 @. ~7 d) U! A' [$ F(INT 0 (IRQ 11 (MODE E)))
/ I. t V, Q: r5 K/ [% j7 V0 N(IO 0 (BASE 0x01e8))
5 i: @( `: ^' p: ]% V& ](IO 1 (BASE 0x03ee))
, Q2 T, Y8 `1 A6 @9 ]
(ACT Y)
5 a& ~$ a$ ]. Q. B- L5 X' }
))
4 g& e+ G# {5 D% M# i3 z6 b
* B1 K7 h1 S9 x* n% I2 u* v
0 E9 k6 H" R- I% U. g# W1 S(CONFIGURE CTL002b/16407 (LD 2
" j( m1 K9 s9 {) U5 P+ c2 L6 d# ANSI string --%26gt;StereoEnhance%26lt;--
: Q8 o2 a8 h( v) Z
# Logical device decodes 16 bit IO address lines
) ~* B& @' h) R! W. }5 ~3 A
# Minimum IO base address 0x0100
; z( H0 E3 g0 G* O
# Maximum IO base address 0x0138
3 i E" v/ A* j# IO base alignment 8 bytes
; V0 y7 U( P( w' F" F
# Number of IO addresses required: 1
2 ~; y8 Q: T& N8 f. M#(IO 0 (BASE 0x0100))
' a- v' m2 C5 _) h# P( @0 m#(ACT Y)
9 N; \6 X4 ?4 g9 D, l B))
: r/ W) u$ [* h1 M
& J9 j: Y, F! Q
% ?% i# Z% m" H
(CONFIGURE CTL002b/16407 (LD 3
0 j. O% b* {1 V* J(IO 0 (BASE 0x0200))
; p$ Z- ^ ^4 a0 k
(ACT Y)))