サウンドカードの設定

− DELL DIMENSION XPS D300内臓のSoundBlaster AWE64 (PnP機能付)の場合 −

 

 現時点でLinuxでAWE64をAWE64として使うことはできないみたい。ただ,AWE32互換カードとして使うことはできる(音は充分美しい)。現時点で最新のカーネル(2.0.33)でもAWE32はサポートされてへんのやけど,東大の岩井さんが作らはったドライバをインストールすればAWE32が使えるようにカーネルの再構築を行うことができる。

 もう一つの問題はこのサウンドカードがPlug&Play(以下PnP)機能を持っていること。現時点でLinuxではPnP機能のついたISAデバイスをそのままで使うのは無理らしい。そこでISAデバイスのPnP機能をオフにしてしまうisapnptoolsというアメリカのLaDieuさん作のソフトをインストールし,それがブート時に実行されるように設定せんといかん。またこの関係でカーネルの再構築のときサウンドカードはmoduleとして組み込まないといけない(「y」ではなく「m」を選択するわけ)。ということで段取りは以下のようになる。

 

(0)Windows95でサウンドカードのデバイス情報を調べておく

 本体を苦労して2人がかりで(笑)開けると2つあるISAバスのソケットにはサウンドカードと内臓モデムカードがささっていたが,モデムを外してLANカードを入れた。Windows95の「システム」の「デバイスマネージャー」の「サウンド」でサウンドカードの情報を調べておく。調べた結果

●「Creative AWE64 16ビットオーディオ(SB16互換)」の「プロパティ」の「リソース」

IRQ:05

DMA:01

DMA:05

I/Oポートアドレス:0220-022F

I/Oポートアドレス:0330-0331

I/Oポートアドレス:0388-038B

●「Creative AWE64 Wave Table MIDI(AWE32互換)」の「プロパティ」の「リソース」

I/Oポートアドレス:0620-0623

I/Oポートアドレス:0A20-0A23

I/Oポートアドレス:0E20-0E23

●「Creativeゲームポートジョイスティック)」の「プロパティ」の「リソース」

I/Oポートアドレス:0200-0207

であることが分かった。後述するpnpdumpで作った/etc/isapnp.confには(←こりゃLinuxの話)正にこれらの(Windows95で調べた)値が載っていて安心できた。

 ここで肝心なのは,モデムカードを外した後Windows95の「デバイスマネージャー」でモデムのドライバをきちんと削除してから「デバイスマネージャー」で情報を調べること。実際ドライバ削除前と後でIRQの値が変わったし。存在しないデバイスに対するドライバは削除しておかないと正しい(?)IRQが分からないわけね。

 さて次からはLinuxでの作業。

(1)isapnptoolのインストール

 後につけた「LinuxとSoundBlaster AWE64 PnP (mini HOWTO)」をよく読んでね。これは「Linux JFホームページ」にあった文書。ありがたいのォ。で,具体的にはftpサイト(例えばftp.jaist.ac.jp/pub/.1/liux/redhat/pnp/utils/isapnptools-1.11.tgz)からとってきたisapnptools-1.11.tgzを例えば/tmpに置いて

  % cd /tmp

  % gzip -cd isapnptools-1.11.tgz | tar xvf -

として展開して

  % cd isapnptools-1.11

とできたディレクトリに移る。ここにあるINSTALLという文書をよく読む(後ろに添付)。書いてあるとおりに一度makeしてみると,書いてあるとおりのerrorがでてmakeできないとなるので,書いてあるとおりにMakefileを1行だけ修正する。具体的にはPNPFLAGSが登場する行から-DNEEDSNANOSLEEPというオプション(やろなあ)を削除する。修正したら

  % make

でコンパイル。続いて

  % su

とrootになって

  # make install

でインストール。これで勝手に/sbinの下にisapnpやpnpdumpというプログラム(?)がインストールされる(root権限で使うわけね)。マニュアルは/usr/man/man5と/usr/man/man8にインストールされる。

 

(2)マシンにあったisapnptoolsの設定ファイル/etc/isapnp.confの作成

 rootになっておいて,インストールしたばかりのpnpdumpプログラムを

  # /sbin/pnpdump > /etc/isapnp.conf

と使って/etc/isapnp.confの雛型を作る。/etc/isapnp.confはisapnpプログラムが実行される(とISAデバイスのPnP機能がオフになるんやけど)ときに参照する設定ファイル。思うにpnpdumpはマシンを診断してマシンにあったisapnp.confをちゃんと作ってくれるプログラムのようだ。ただしさすがにそのままは使えず,必要な行のコメントアウトを外すくらいのことはしないといけない。あと2行だけは新たに付け加えた。後ろに実際の/etc/isapnp.confをつけておいたのでそれを参照のこと。蛍光ペンで色をつけてあるのがコメントアウトを外したり,新たに追加した行。これにはWindows95で調べたリソース,後ろに添付の「LinuxとSoundBlaster AWE64 PnP (mini HOWTO)」や岩井さんの「AWEDRV FAQ 日本語版」のQ2.3にある例が非常に参考になった。特に前者の例とは値まで同じやったで。

 

(3)ブート時にisapnptoolが実行されるようにシェルスクリプト/etc/rc.d/rc.sysinitを修正

 これは「LinuxとSoundBlaster AWE64 PnP (mini HOWTO)」の訳中に,「RedHat系の場合は(isapnptoolsを),rc.serialの前にrc.sysinitの中で動かすのが普通です」と書いてあるので,/etc/rc.d/rc.sysinitに

    ( ・・・・・・・・ ここまで略 ・・・・・・・・ )

# Right, now turn on swap in case we swap to files.

echo "Enabling swap space."

swapon -a 2>&1 | grep -v "busy"

 

# The following three lines were added by Y. Kakehi on 98/04/10          ← 付け加えた行

# to invalidate Plug & Play of ISA devices.                       ← 付け加えた行

echo "Invalidating PnP of ISA devices using isapnptools (added by Y. Kakehi)" ← 付け加えた行

echo "(isapnptools run in rc.sysinit)"                          ← 付け加えた行

/sbin/isapnp /etc/isapnp.conf                               ← 付け加えた行

 

# Initialize the serial ports.

if [ -f /etc/rc.d/rc.serial ]; then

. /etc/rc.d/rc.serial

fi

     ( ・・・・・・・・ 以下略 ・・・・・・・・ )

 

という風に行を付け加えた。これでブート時にISAデバイスのPnP機能をオフにする設定が終了。次はサウンドカードのドライバのインストールだ。

(4)AWE32のドライバをインストール

 ドライバはドライバ作者岩井さんのホームページ

  http://behamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/index.html

からとってきた。

  後につけた岩井さんの「AWEDRV FAQ 日本語版」をよく読んでね。インストール方法はQ2.1に書いてあるけど,まずftpでとってきた圧縮ファイルをどこに置いて作業すればいいのかが書いてない。しかし「LinuxとSoundBlaster AWE64 PnP (mini HOWTO)」には「僕は/usr/srcに置いてそこで展開しました」と書いてあるのでその通りにした。でも例えば/tmpでやってもええと思うで。実際/usr/srcでやったけど後でawedrv-0.4.2dというディレクトリとその下のファイルを全部消したけど全く問題なかったし。で/tmpに圧縮ファイルを置くとして

  % cd /tmp

  % gzip -cd awedrv-0.4.2d.tgz | tar xvf -

として展開して

  % cd awedrv-0.4.2d

とできたディレクトリに移る。ここにあるREADME.aweやINSTALL.aweという文書をよく読む。

  % su

とrootになって

  # sh ./install.sh

とインストールシェルスクリプトを実行してインストールする。どうも/usr/src/linux/drivers/sound/lowlevelに色々インストールされるようで,そこには

ChangeLog.awe README awe_hw.h init.c

Config.tmpl README.awe awe_version.h init.c.orig

Config.tmpl.orig aci.c awe_voice.h init.o

Makefile awe_compat.h awe_wave.c lowlevel.o

Makefile.orig awe_config.h awe_wave.o

といったファイルが置かれる。

(5)カーネルの再構築

 次にサウンドカードを使えるようにカーネルの再構築を行う。もちろん作業はrootで行う。カーネルの再構築については別項「カーネルの再構築の方法」や「RedHat入門キット」p.128〜131を読むこと。make xconfigのメニューの中で「Sound」の項目を色々いじるのだが選択は以下の通りである。これは/usr/src/linux/.configの抜粋だが,xconfigのGUIの選択項目のどれとどれが対応するかは一目で分かると思う。ここで最後のCONFIG_LOWLEVEL_SOUND(GUIでは「lowlevelsound driver support」)を含む3行はAWE32のドライバをインストールすることによって新たに登場した選択肢。肝心なのは最初のCONFIG_SOUND=mでサウンドカードを使うので「y」としてしまいそうだがisapnptoolsとの兼ね合いの都合上moduleとして組み込まないとダメなので「m」を選ぶのだ(いっぺん俺はこれでつまづいた)。これは岩井さんの「AWEDRV FAQ 日本語版」Q2.3にもちゃんと書いたる。

#

# Sound

#

CONFIG_SOUND=m

# CONFIG_PAS is not set

CONFIG_SB=y

CONFIG_ADLIB=y

# CONFIG_GUS is not set

# CONFIG_MPU401 is not set

# CONFIG_UART6850 is not set

# CONFIG_PSS is not set

# CONFIG_GUS16 is not set

# CONFIG_GUSMAX is not set

# CONFIG_MSS is not set

# CONFIG_SSCAPE is not set

# CONFIG_TRIX is not set

# CONFIG_MAD16 is not set

# CONFIG_CS4232 is not set

# CONFIG_MAUI is not set

CONFIG_AUDIO=y

CONFIG_MIDI=y

CONFIG_YM3812=y

SBC_BASE=220

SBC_IRQ=5

SBC_DMA=1

SB_DMA2=5

SB_MPU_BASE=330

SB_MPU_IRQ=-1

DSP_BUFFSIZE=65536

CONFIG_LOWLEVEL_SOUND=y

# CONFIG_ACI_MIXER is not set

CONFIG_AWE32_SYNTH=y

再構築が終わって,ほんで(カーネルのバックアップをとって/etc/lilo.confを修正して,/sbin/liloを実行して)マシンを再起動すればCDも聴けるようになるよ。


Linuxのページへ戻る