モジュール化したサウンドドライバとサウンドについてのメモ 著者:Wade Hampton 11/20/1998 この文書の目的 ================ この文書はsound.o、 soundlow.o そして soundcore.o を伴って動作するモジュー ルのサウンドドライバとその設定についての一般的な注意について書かれたも のです。 この文書の一部はSound-HOWTO に追加されるでしょう。 著作権 ======= ありません。 履歴 ===== 0.1.0 11/20/1998 初版 モジュールサウンドドライバ ========================== Alan Cox (alan@lxorguk.ukuu.org.uk)による重要な仕事に感謝します。 (そして、Oleg Drokin、Thomas Sailer、Andrew Veliath とその他多くの方々 に感謝。部分的に十分に対処できるように設計されている Hannu のオリジナ ルコードへの感謝は言うまでもありません。)(Alan) 標準の Linux カーネルはモジュールサウンドドライバをサポートしています。 Alan のコメントは、linux/drivers/sound/README.FIRST にあります。 モジュールサウンドドライバパッチは Red Hat Software(www.redhat.com)に 協力を得ています。したがって Hannu のコードの改変版のサウンドドライバ はここにあります。バグレポートについて適切な場を考慮される場合は、この 点を心にとめておいてください。 モジュールサウンドドライバは insmod あるいは modprobe を使ってロードさ れます。すべてのさまざまなサウンドモジュールをサポートするため、最初にロー ドしなくてはいけない3種類の一般的なサポートモジュールがあります。 soundcore.o:サウンドシステムに対するトップレベルのハンドラーで、形式    によってデバイスの登録についての動きを設定します。 soundlow.o :OSS/Lite(オープンソースシステム)の部分ではないローレベル のサウンドドライバ。SB32/AWE synthesizer などを含みます。 sound.o: すべてのモジュールに必要な共通のサウンド機能。 個別のサウンドモジュール(たとえばサウンドブラスターの sb.o など)につい て、たとえば IRQ やアドレスについて、モジュールが利用できるオプション を決めるためには文書を読んでください。 同じものあるいは類似の仕様(dma1= に対して dma16= )について、違った名称を 使っている異なったカードについてのオプションに注意してください。最後の 手段としては、コード(MODULE_PARM ) を点検してください INSMOD ====== insmod を使ってロードするなら、その他のサウンドモジュールをロードする より先に、通常のモジュールは次の手順でロードしなければいけません。 SB_BASE=0x240 SB_IRQ=9 SB_DMA=3 SB_DMA2=5 SB_MPU=0x300 echo Starting sound /sbin/insmod soundcore /sbin/insmod soundlow /sbin/insmod sound echo Starting sound blaster.... /sbin/insmod uart401 /sbin/insmod sb io=$SB_BASE irq=$SB_IRQ dma=$SB_DMA dma16=$SB_DMA2 mpu_io=$SB_MP MODPROBE ======== modprobe を使ってロードするなら、modprobe によって要求された時に これらの通常のファイルは自動的にロードされます。 たとえば私は /etc/conf.modules に次のように書いています。 alias sound sb options sb io=0x240 irq=9 dma=3 dma16=5 mpu_io=0x300 モジュールをロードするために必要なコマンドはこれだけです。 /sbin/modprobe sb Sound の状態 ============ サウンドの状態については次のようなコマンドでチェックします。 cat /proc/sound cat /dev/sndstat cat (anyfile).au >/dev/audio モジュールと他のモジュールとの依存関係は次のようにしてチェックします。 /sbin/lsmod /sbin/lsmod は次のようなものを表示します。 sb 26280 0 uart401 5640 0 [sb] sound 57112 0 [sb uart401] soundlow 208 0 [sound] soundcore 1968 8 [sb sound] % in the reverse order in which I loaded the modules): サウンドの除去 =============== サウンドは /sbin/rmmod を使うことで除くことができて、モジュールをロー ドする前の状態に戻ります。プログラムがサウンドデバイス(たとえば xmixer など)をオープンしているなら、モジュール(およびその依存関係にあるモジュー ル)はロードされません。 % in the reverse order in which I loaded the modules): たとえば、私は Soundblaster を除去する(rmmod は、モジュールをロードできる 状態に戻す)ためには次のようにしています。 /sbin/rmmod sb /sbin/rmmod uart401 /sbin/rmmod sound /sbin/rmmod soundlow /sbin/rmmod soundcore Multiple Sound Cards ====================== サウンドドライバ類はマルチサウンドカードをサポートしており、それらをサ ポートするマルチトラックのようなすぐれたアプリケーションがいくつかあり ます。一般的には、異なったタイプの2種類のサウンドカードが必要です。 注意:この場合は、ただでさえ貴重な割り込みと DMA チャンネルをさらに使 いますから、時には悪夢のような設定になることがあります。私は3〜4枚の サウンドカードの設定についての報告を聞いたことがあります(一般的には、 通1枚か2枚だけの使用ですが)。 私のマシンでは2枚のサウンドカード(cs4232 と Soundblaster Vibra 16 )を 使っています。最初のサウンドデバイス(/dev/dsp, /dev/audio, /dev/mixer) と2番目をコントロールすることができます。一般的に、 cs4232(マザーボー ドにオンボードの Dell サウンドカード)は第一のサウンドデバイスになりま すが、私は Soundblaster のほうを好んで使っています。やらなくてはいけな いことは最初に(私の場合は sb ですが) /dev/dsp にしたいものをロードする ことです。それから他のもの(私の場合は cs4232 になります)をロードします。 ご注意:同時にロードするために同じタイプの2枚の PnP サウンドカードを持っ てはいけません。私は Soundblaster Vibra 16 で何回も試してみました。OSS が、これは PnP の問題であることを表示しました。このようなことでうまくい かない方があれば、どうぞ私に e-mail を送ってください。PCI サウンドカー ドにはこういう問題はありません。 Sound に関する問題点 第1の RTFM( Sound-HOWTO のトラブルシューティングを含む) 1) モジュールのロードに問題があるなら(たとえば、デバイスの競合エラーが あるならば)以下のことを調べてください。 A) 同じコンピュータで Win95 や NT をお使いなら、同じハードウェアで使わ れているアドレスや IRQ そして DMA チャンネルをメモしてください。たぶん これらのアドレスや IRQ や DMA チャンネルを使うことができます。 B)たとえば cat /proc/interrupts のようにしてチェックしましょう。 cat /proc/interrupts /proc/ioports, /proc/dma 他のデバイスが、アドレス、IRQ 、DMA ポートを使っているかを調べましたか。 C) cat /proc/sys/pnp を調べましょう。 これが存在するなら、 このデバイスを使うためにカーネルパッチが必要かもしれません。 D) /var/log/messages を点検しましょう。 IRQ や IO ポートが取得できていないという表示があるかもしれません。 E) 別のポートや IRQ を試してみましょう。これは、サウンドカードを別の場 所に動かす PnP ツール類を使っているということに関係するかもしれません。 2) もとに戻れない(同一のサウンドがなる、あるいはサウンドクリップの一部 が繰り返す)なら、IRQ あるいは DMA の競合があるのでしょう。カードを別の アドレスに移動させましょう。私が IRQ を競合させて長いファイルを演奏さ せた時このようなことがありました。 3) サウンドリストについて質問があればたずねてください。あるいはサウン ドドライバの作者か維持者に e-mail を送ってください。 4) drivers/sound/sound_config.h (DEB, DDB, MDB) についてデバッグを送っ てください。 サウンドの設定 お使いのサウンドを設定するにはいくつかの方法があります。 1) コンパイル時にカーネルに組み込む(サウンドモジュールを使う時に 組み込むのではありません)。 2) insmod を使う時はコマンドライン上からです。 3) modprobe を使う時に /etc/conf.modules で行ないます。 4) RedHat の /usr/sbin/sndconfig program (テキストベース)を 使って設定することもできます。 5) OSS ドライバの OSS soundconf program (商用版)を使って設定する こともできます。 その他いくつかの方法があります。 どなたか サウンドを設定するために linuxconf モジュールを書きませんか。 その他の関連情報(RTFM) 1) カーネルモジュールについての情報は linux/Documentation/ 以下にある modules.txt を見てください。そして insmod と modprobe についてはマニュ アルページを見てください。 2) PnP についてのもっと詳しい情報は isapnp のマニュアルページを見てください。 3) Sound-HOWTO と Sound-Playing-HOWTO があります。 4) http://www.opensound.com に OSS の WWW サイトがあります。 5) linux/Documentation/sound にすべてのファイルがあります。 6) linux/drivers/sound にコメントとコードがあります。 7) RedHat から sndconfig と rhsound の文書が出ています。 8) Linux-sound mailing list は sound-list@redhat.com です。 この文書については Wade Hampton: (whampton@staffnet.com)へ。 日本語訳は 中谷千絵:jeanne@mbox.kyoto-inet.or.jp 22 Feb.1999