The BTTV Mini-HOWTO

By Eric Sandeen, eric_sandeen@bigfoot.com

v0.3, February 2000

早川 仁, cz8cb01@linux.or.jp

v0.3j, Apr 10, 2000
このドキュメントでは bt8x8 チップセットベースのフレーム取り込みカードや TV チューナーカードを Linux から使用するために必要なハードウェア、 ソフトウェア、使用方法について説明しています。

1. イントロダクション

2. 必要なハードウェア

3. 必要なソフトウェア

4. システムの設定

5. アプリケーション

6. Appendix - 全モジュールの引数


1. イントロダクション

ビデオ映像のキャプチャーや表示は、Linux におけるマルチメディア機能の中でも興味深い物の一つです。 video4linux API ( http://roadrunner.swansea.uk.linux.org/v4l.shtml) を利用すれば、色々なビデオデバイスを使うことができます。例えば Conexant 社 ( http://www.conexant.com/) の bt848 および bt878 チップセットを使用した TV チューナーカードなどが使えます。 このドキュメントでは Linux でそれらのカードをどのようにして利用するかについて説明しています。

1.1 ドキュメントの著作権

(訳注:ライセンス関係については原文をそのまま示します)

This HOWTO is copyrighted 1999 Eric Sandeen.

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO co-ordinator at the address given below.

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.

If you have questions, please contact Tim Bynum, the Linux HOWTO co-ordinator, at linux-howto@metalab.unc.edu via email.

1.2 最新版のドキュメントの入手先

ドキュメントの公式な最新版は Linux Documentation Project http://www.linuxdoc.org/ より入手できます。

1.3 謝辞

最初の bttv ドライバを書いた Ralph Metzler と Marcus Metzler、 Video4Linux API を作成した Alan Cox、ラジオカード・bttv の後継・xawtv に 関する作業を行った Gerd Knorr に感謝します。またこれらのカードを Linux でサポートするために貢献された、その他全ての方に感謝します。同じく BTTV Howto を書いた William Burrow にも感謝します(このドキュメントを書き終っ た後に知りました) 。彼のドキュメントのおかげで、このドキュメン トをより良いものにできました。この HOWTO を書くにあたっては、bttv や xawtv のドキュメントが非常に参考になりました。

1.4 Disclaimer

このドキュメントに書かれている情報の利用はご自分の責任の下で(at your own risk) 行なってください。ドキュメントの内容に従うことによるどのような責任 や負担も拒否します。ドキュメントに登場する概念や例、その他の内容はご自分 のリスクで利用してください。

全ての著作権は特に記述していない限り、それぞれの著者が保持しています。ド キュメント内に記載されているトレードマークや商標などは各社の商標または商 標登録です。プロダクトやブランド名の記述は、必ずしもそれぞれを推奨してい るものではありません。

インストールの前や定期的に、システムのバックアップを取ることを強く お勧めしておきます。


2. 必要なハードウェア

bttv README によると:

bttv はフレーム取り込みを行うカードのデバイスドライバです。対象とするカードは Conexant 社( http://www.conexant.com)の Bt848 シリーズのビデ オデコーダーチップセットを利用しているものです。このシリーズのチップセットには Bt848, Bt848A, Bt849, Bt878, Bt879 があります。異なったメーカーによる、 カード間の唯一の違いは、チューナーのタイプとボード上の拡張機能です。例え ば Hauppauge 社のカードには字幕やサウンドのデコーダーチップが追加されて います。bttv でのこういった追加機能のサポートは一部に限られています。 またタイプ(合成や S-Video)や入力数も異なっています。

次のカードは動作するはずです:

ドキュメントの次のバージョンに追加しますので、動作する他のカードを ご存じの方は、著者まで E-mail してください。


3. 必要なソフトウェア

TV チューナーカードを Linux で使用するには、 対応するカーネルドライバが必要となります。 bttv ドライバは 2.2.0 以降のカーネルに同梱されています。

あるいは、最新版のドライバパッケージを入手して 2.0.35 以降のカーネルで 使用することもできます。ですが 2.0.x シリーズのカーネルで動作するとは限 りません。アップデートされた bttv パッケージは http://www.thp.uni-koeln.de/~rjkm/linux/bttv.htmlから、さらに新しいもの は Gerd Knorr の http://www.in-berlin.de/User/kraxel/xawtv.html から入手できます。 これらのパッケージには TEA6300, TDA8425, DPL3518 といったオーディオチッ プのサポートが追加されています。

bttv ドライバを使ったことがなければ、最新のカーネルに同梱されてい るバージョンを使用することをお勧めしておきます。何か問題があった場合や、 ご使用のカードに対応していない時にはアップデートされた 0.6 シリーズのド ライバを上記の場所から入手してみましょう。危険を恐れないのであれば、2.4 カーネルに同梱される予定の Gerd Knorr の 0.7 シリーズのドライバを試すこ ともできます。0.7 シリーズのドライバは http://www.in-berlin.de/User/kraxel/xawtv.html からも入手できます。

このドキュメントは基本的には、カーネル 2.2.14 のドライバをもとに書かれて いますが、0.6 シリーズのドライバパッケージで利用できる機能についても、い くつか触れています。現在絶賛開発中のため、今の所 0.7 シリーズに関しては 述べていません。


4. システムの設定

4.1 ハードウェアの準備

(この章の記述に際しては William Burrow に感謝します)

コンピュータのケースを開けるのが恐ければ、この HOWTO 文書全体を始めに一 度良く読み、チューナーのタイプ、回路番号、クリスタルの周波数などのカード に関する仕様を知ってください。そしてカードを代わりにセットしてくれる人を 探しましょう。

そうでない人は、ケースを開けてカードを空いているスロットに挿しましょう。 マザーボードの仕様によっては(マザーボードのマニュアルを参照してください)、 カードを挿すスロットを PCI バス転送や PCI バスマスタリングをサポートして いるものにする必要があります。またオーバレイモードを使う時にもこの点に気 をつけましょう。

ビデオキャプチャーカードとサウンドカードとを接続するには二つの方法があり ます。一つ目は内部的に接続する方法です。CD-ROM のオーディオケーブルをビ デオカードの音声入力に接続し、ビデオカードの音声出力をサウンドカードの CD-ROM か、チューナーのオーディオ入力に接続します。もう一つは、ビデオカー ドの外部 1/8'' オーディオジャックをオーディオカードの 1/8'' ラインオーディ オ入力ジャックへ接続する方法です。またオーディオカードを持ってない時や、 サウンド入力を経由したくない時には、アンプ付きのスピーカーをキャプチャー カードのオーディオ出力に接続することもできます(最近の bt878 カードにはサ ウンドコネクタがないものもあります。ディジタルオーディオデータを PCI バ ス経由で送るからです。執筆時点では現在この機能はサポートされていません)。

カードが動作しているかどうかを確認する時にはビデオデータを使うのが手軽で 便利です多くのカードではビデオ入力、S-Video、チューナー付きなら RF 入力 の合成ができます。各入力にはそれぞれ別のコネクタがあります。

4.2 カーネルの設定

カードをサポートするためには、カーネルを正しく設定する必要があります。多 くの新しい Linux ディストリビューションでは既に必要となるモジュールが含 まれていますから、/lib/modules/2.x.x/misc 以下に videodev.o, bttv.o, tuner.o があれば 準備は終わりです。

見つからない時には次のようにして、 カーネルを再コンパイルする必要があるでしょう。

CONFIG_VIDEO_DEV

および

CONFIG_VIDEO_BT848

を有効にします。カーネルに組込むのではなく、 モジュールにした方がよいでしょう。 カーネルの再コンパイルに関する詳細は Linux Kernel HOWTO ( http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html) を参照してください。

(訳注:JF のページ( http://www.linux.or.jp/JF/)に日本語版もあります)

4.3 新しい 0.6.x パッケージを使用する

新しい 0.6.x パッケージを使いたい場合、始めにアーカイブを上で記載したサ イトから入手する必要があります。そして

tar -xvzf bttv-0.6.x.tar.gz

を実行して展開し、作成されたディレクトリへ移動します。su で root になり、

make

を実行してドライバを作成しましょう( INSTALL に書かれている makefile の編集については無視してしまって構いません。必要な情報はモジュー ルをインストールする時にパラメータとして渡しますから)。そして、

make install

してインストールしましょう。最後に

/sbin/depmod -a

を行なうとモジュールの依存情報をアップデートできます。

(訳注:訳者の個人的な趣味では主にセキュリティ上の観点(というかおまじな いと言うか)から、make install の直前までは一般ユーザーで作業し、そうしな ければならないぎりぎりまで root にならないようにしています)

4.4 /dev のスペシャルファイル

次にキャラクタ型のスペシャルファイル(デバイスファイル)を /dev ディレクトリに作成する必要があります。ls /dev/video*; ls /dev/radio* を実行して既にファイルがあるかどうかを確認してください。 なければ作成しましょう。

これらのデバイスファイルではメジャー番号はすべて 81 で、マイナー番号はデ バイス(ビデオ、ラジオなど)に依存しています。プログラミングの視点での詳細 に関しては Video4Linux API ( http://roadrunner.swansea.uk.linux.org/v4lapi.shtml) を参照してく ださい。

(訳注:オライリー・ジャパンから出版されている「Linux デバイスドライバ」 (ISBN:4-900900-73-7)も参考になります)

MAKEDEV スクリプトが bttv ドライバパッケージの driver ディレクトリにあります。これは四つのビデオデバイスファイルを作成してくれ ます。ビデオキャプチャーカードを一つしか持っていない時などに、自分自身で ファイルを作成することも簡単です。root になって次のように実行します。

mknod /dev/video0 c 81 0

chmod 666 /dev/video0

ln -s /dev/video0 /dev/video

mknod /dev/radio0 c 81 64

chmod 666 /dev/radio0

ln -s /dev/radio0 /dev/radio

字幕や VBI デバイスを必要とするアプリケーション(今のところは ごくわずかですが)がある時には次のようにして作成します。

mknod /dev/vtx0 c 81 192

chmod 666 /dev/vtx0

ln -s /dev/vtx0 /dev/vtx

mknod /dev/vbi0 c 81 224

chmod 666 /dev/vbi0

ln -s /dev/vbi0 /dev/vbi

4.5 モジュールのロード

bttv ドライバにはドキュメントの appendix で説明しているように、多くのモ ジュールおよび多くのオプションがあります。 これにより、全ての機能が使用できるまで手動で色々と試行錯誤できます。 マシンが壊れるようなことはめったにありませんが、実行する前に

sync; sleep 1; sync

を行なってディスクのバッファをフラッシュしておきましょう。そして root に なって insmod コマンドでモジュールのロードを行ないます。 始めの二つは通常はオプションが必要ないため、簡単です。

insmod videodev

insmod i2c

これで bttv モジュールをロードする準備ができました。

modprobe bttv

デフォルトでは bttv モジュールはカードのタイプを自動認識しよう とします。認識の確認は /var/log/messages を参照してください。正 常に自動認識しなかった時には card=n オプションを上述のコマ ンドの後ろに追加して、カードタイプを強制的に指定することができます。 n は以下のリストより選択します(タイプ 0 から 19 はカーネル によりサポートされているドライバで、bttv-0.6.4h はタイプ 20 から 27 をサ ポートします)。カードに FM チューナー機能がある時には radio=1 オプションを追加することもできます。


card=n      card type
        0:  Auto-Detect
        1:  Miro
        2:  Hauppauge (old bt848 boards)
        3:  STB
        4:  Intel
        5:  Diamond
        6:  AVerMedia
        7:  MATRIX Vision MV-Delta
        8:  FlyVideo
        9:  TurboTV
        10: Hauppauge (new bt878 boards)
        11: MIRO PCTV pro
        12: Terratec/Vobis TV-Boostar
        13: Newer Hauppauge WinCam (bt878)
        14: MAXI TV Video PCI2
        15: Terratec TerraTV+
        16: Aimslab VHX
        17: PXC200
        18: AVermedia98
        19: FlyVideo98 (newer FlyVideo cards)
        20: Zoltrix TV-Max
        21: iProTV
        22: ADS Technologies Channel Surfer TV
        23: Pixelview PlayTV (bt878)
        24: Leadtek WinView 601
        25: AVEC Intercapture
        26: LifeView FlyKit w/o Tuner
        27: Intel Create and Share PCI

次に、以下のようにしてチューナーモジュールをロードします。

modprobe tuner type=n

ケースを開けてどのチューナーを使用しているかを調べる必要があるかもしれま せん。チューナーを自動認識するカードもありますが(Miro や Hauppauge)、 手動で指定する必要があるかもしれません。チューナーにはブランド名が書かれ ているはずですし、ボード上のクリスタル(小さなアルミのチップです)を見るこ とによりチューナーが NTSC か PAL かがわかります。PAL の時にはクリスタル には 28.xxxMHz(xxx は三桁の数字)と書かれています。NTSC なら 35.xxxMHz で す。チューナーをセットしたら、n を以下のリストから選んでく ださい(タイプ 8 と 9 は bttv-0.6.4h にしかありません)。


type=n      type of the tuner chip. n as follows:
        0: Temic PAL tuner
        1: Philips PAL_I tuner
        2: Philips NTSC tuner
        3: Philips SECAM tuner
        4: no tuner
        5: Philips PAL tuner
        6: Temic NTSC tuner
        7: Temic PAL tuner
        8: Alps TSBH1 NTSC tuner
        9: Alps TSBE1 PAL tuner

最後に、必要なサウンド関係のモジュールをロードします。持っているカードの 種類を調べるためにカードを良く調べる必要があるかもしれません。TEA6300, TDA8425, TDA9855, DPL3518 チップ用のドライバは 0.6.4h シリーズのドライバ にしか無いことに注意してください。現在のカーネル(2.2.14)のドライバにはあ りません。

modproge foobar

foobarmsp3400, tea3600, tda8425, tda9855, dpl3518 のどれかです。オプションの詳細は appendix を参照してください。

好きな video4linux プログラムを実行し、動作するかを見ます。チャネルを変 えられない時は、正しいモジュールをロードしたかを確認してください。サウン ドが聞こえない時は、サウンド関係のモジュールと、音声をサウンドカード経由 で出力している場合には音声がミュートされていないかを確認してください。

4.6 処理の自動化

必要なモジュールとオプションがわかれば、それを /etc/conf.modules に記述することにより処理を自動化することがで きます。これにより、アプリケーションをする時に必要なドライバが 自動的にロードされるようになります。筆者は次のようにしています。

(訳注:/etc/conf.modules ではなく、/etc/modules.conf になっているディストリビューション(Caldera Open Linux や TurboLinux 6.0 server/workstation など)もあります。本来正しいのは /etc/modules.conf の方です。最新の modutils パッケージ (insmod などが含まれているパッケージ)では、conf.modules を使用 するようになっていると警告表示を行なうようになりました)


# TV
alias   char-major-81   bttv
pre-install bttv    modprobe -k tuner; modprobe -k msp3400
options bttv        radio=1 card=3
options tuner       type=2

これを変更して、ご使用のカード用に適切なモジュールとオプションを指定しま しょう。(モジュールの依存情報を更新するために /sbin/depmod -a も実行する必要があるでしょう)

(訳注:Redhat 系のディストリビューションでは、 システム起動時に実行される /etc/rc.d/rc.sysinitdepmod -a を実行するようになっています)


5. アプリケーション

カーネルやデバイスの設定、モジュールのロードが終わりましたが、実際にイメー ジを見たりキャプチャーするにはアプリケーションが必要になります。たくさん のアプリケーションが利用できます。

FlyVideo98 リモコン用のドライバもあります。 http://wolf.ifj.edu.pl/~jochym/FlyVideo98/

ドキュメントを良く読み、使用しようとするアプリケーションについ てあらかじめ調べましょう。多くのアプリケーションでは、動作前に設定ファイ ルを編集する必要があります。多くの種類のカードがありますから、ドキュメン トを良く読んでください。アプリケーションのデフォルトの設定だと ご使用のカードでは動作しないかもしれませんから。


6. Appendix - 全モジュールの引数

"*" で始まる行は 0.6.4h シリーズドライバのみです。



videodev.o
    video4linux の基本的なモジュールです。全てのビデオドライバ(例えば 
    bttv など)はこのモジュールに登録されています。

i2c.o
    i2c の基本モジュールです。i2c bus のほとんどの動作はこのモジュールが
    行ないます。他の全モジュール(videodev.o は除きます)はこのモジュール
    を利用します。

    insmod の引数:
        scan=1      バスをスキャンして i2c デバイスを探します
        verbose=0   メッセージを表示しません
        i2c_debug=1 はデバッグ用です。全ての(ソフトウェアの) i2c バスの
        トラフィックを syslog に記録します。

bttv.o
    bt848(キャプチャーを行うチップ) ドライバ

    insmod の引数:
        remap=adr       bt848 のメモリを adr を 20bit 
                        左シフトしたアドレスにリマップします。
        
        vidmem=base     20 bit 右シフトしたアドレスが(グラフィックカードの)
                        フレームバッファのアドレスになります。

        triton1=0/1     Triton1 との互換性のためにあります。
                        Triton1 は自動認識されますが、
                        他のチップセットの時にも役立つかもしれません。

        pll=0/1/2   PLL の設定
                0: PLL を使いません
                1: 28 MHz のクリスタルがインストールされている時
                2: 35 MHz のクリスタルがインストールされている時

        radio=0/1   カードがラジオをサポートする時は 1

        card=n      カードのタイプ
                0:  自動認識
                1:  Miro
                2:  Hauppauge (旧型の bt848 ボード)
                3:  STB
                4:  Intel
                5:  Diamond
                6:  AVerMedia
                7:  MATRIX Vision MV-Delta
                8:  FlyVideo
                9:  TurboTV
                10: Hauppauge (新型の bt878 ボード)
                11: MIRO PCTV pro
                12: Terratec/Vobis TV-Boostar
                13: Newer Hauppauge WinCam (bt878)
                14: MAXI TV Video PCI2
                15: Terratec TerraTV+
                16: Aimslab VHX
                17: PXC200
                18: AVermedia98
                19: FlyVideo98 (新しい FlyVideo カード)
                *20: Zoltrix TV-Max
                *21: iProTV
                *22: ADS Technologies Channel Surfer TV
                *23: Pixelview PlayTV (bt878)
                *24: Leadtek WinView 601
                *25: AVEC Intercapture
                *26: LifeView FlyKit w/o Tuner
                *27: Intel Create and Share PCI

    リマップ、カード、ラジオ、PLL の設定は最高四つまでの引数を
    コンマで分割して指定できます(マルチファンクションカードの場合)。
    CARD と PLL の値は Makefile に記載されている値がデフォルトになります。
    
msp3400.o
    msp34xx サウンドプロセスチップ用のドライバです。
    ステレオのカードを持っている時は insmod する必要があるでしょう。
    
    insmod の引数:
        debug=1/2   syslog へデバッグ情報を出力
                2 はより詳細な内容です。

*tea6300.o
    tea6300 fader チップ用のドライバです。ステレオのカードを持っていて 
    msp3400.o が動作しない時にはこのドライバを試してみてください。
    このチップは多くの STB TV/FM カードに載っています(GATEWAY2000 
    の OEM の物がオークションサイトなどで大量に出まわっています)

    insmod の引数:
        debug=1     syslog へデバッグ情報を出力

*tda8425.o
    tda8425 fader チップ用のドライバです。以前は bttv.c に含まれていました。
    ですからサウンドが以前は使えたのに、今は使えなくなった時には
    このモジュールをロードしてみてください。

    insmod の引数:
        debug=1     syslog へデバッグ情報を出力

*tda9855.o
    The driver for the tda9855 stereo decoder / audio processor chip.
    tda9855 ステレオデコーダー/オーディオプロセッサチップ用のドライバです。
    
    insmod の引数:
        debug=1     syslog へデバッグ情報を出力

*dpl3518.o
    dpl3518a ドルビー Pro Logic プロセッサ用のドライバです。

    insmod の引数:
        debug=1     syslog へデバッグ情報を出力

tuner.o
    チューナードライバです。カメラや外部チューナー以外の機能を使う時には
    必要となります。

    insmod の引数:
        debug=1     syslog へデバッグ情報を出力
        type=n      チューナーチップのタイプです。n には以下を指定します:
                0: Temic PAL チューナー
                1: Philips PAL_I チューナー
                2: Philips NTSC チューナー
                3: Philips SECAM チューナー
                4: チューナーは存在しない
                5: Philips PAL チューナー
                6: Temic NTSC チューナー
                7: Temic PAL チューナー
                *8: Alps TSBH1 NTSC チューナー
                *9: Alps TSBE1 PAL チューナー

i2c_chardev.o
    provides a character device for i2c bus access.  Works for 2.1.x
    only, not compiled by default.

    i2c バスへアクセスするためのキャラクタ型デバイスを提供します。
    2.1.x カーネルでしか動作しませんし、デフォルトではコンパイルされません。


sgml21html conversion date: Mon Jan 17 11:34:57 JST 2011