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. イントロダクション 1.1 ドキュメントの著作権 1.2 最新版のドキュメントの入手先 1.3 謝辞 1.4 Disclaimer 2. 必要なハードウェア 3. 必要なソフトウェア 4. システムの設定 4.1 ハードウェアの準備 4.2 カーネルの設定 4.3 新しい 0.6.x パッケージを使用する 4.4 /dev のスペシャルファイル 4.5 モジュールのロード 4.6 処理の自動化 5. アプリケーション 6. Appendix - 全モジュールの引数 ______________________________________________________________________ 1. イントロダクション ビデオ映像のキャプチャーや表示は、Linux におけるマルチメディア機能の中 でも興味深い物の一つです。 video4linux API ( ) を利用すれば、色々 なビデオデバイスを使うことができます。例えば Conexant 社 ( ) の 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 より入手できます。 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 社( )の Bt848 シリーズのビ デオデコーダーチップセットを利用しているものです。このシリーズのチップ セットには Bt848, Bt848A, Bt849, Bt878, Bt879 があります。異なったメー カーによる、カード間の唯一の違いは、チューナーのタイプとボード上の拡張 機能です。例えば Hauppauge 社のカードには字幕やサウンドのデコーダー チップが追加されています。bttv でのこういった追加機能のサポートは一部 に限られています。またタイプ(合成や S-Video)や入力数も異なっています。 次のカードは動作するはずです: o AverMedia TV98 o o AVerMedia TV-Phone o o Diamond DTV2000 o o Hauppauge Win/TV pci (and other Hauppauge cards) o o IDS Imaging FALCON o o Lifeview Flyvideo II o o Matrix Vision MV-Delta o o miroVIDEO PCTV o o Osprey-100 o o STB TV PCI o o Terratec TERRA TV+ o o Videologic Captivator PCI o ドキュメントの次のバージョンに追加しますので、動作する他のカードをご存 じの方は、著者まで E-mail してください。 3. 必要なソフトウェア TV チューナーカードを Linux で使用するには、対応するカーネルドライバが 必要となります。 bttv ドライバは 2.2.0 以降のカーネルに同梱されていま す。 あるいは、最新版のドライバパッケージを入手して 2.0.35 以降のカーネルで 使用することもできます。ですが 2.0.x シリーズのカーネルで動作するとは 限りません。アップデートされた bttv パッケージは から、さらに新しい ものは Gerd Knorr の から入手できます。これらのパッケージには TEA6300, TDA8425, DPL3518 と いったオーディオチップのサポートが追加されています。 bttv ドライバを使ったことがなければ、最新のカーネルに同梱されているバ ージョンを使用することをお勧めしておきます。何か問題があった場合や、ご 使用のカードに対応していない時にはアップデートされた 0.6 シリーズのド ライバを上記の場所から入手してみましょう。危険を恐れないのであれ ば、2.4 カーネルに同梱される予定の Gerd Knorr の 0.7 シリーズのドライ バを試すこともできます。0.7 シリーズのドライバは からも入手できます。 このドキュメントは基本的には、カーネル 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 ( ) を参照してくださ い。 (訳注: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 ( ) を参照してくだ さい。 (訳注:オライリー・ジャパンから出版されている「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 foobar は msp3400, 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.sysinit で depmod -a を実行するようになっています) 5. アプリケーション カーネルやデバイスの設定、モジュールのロードが終わりましたが、実際にイ メージを見たりキャプチャーするにはアプリケーションが必要になります。た くさんのアプリケーションが利用できます。 o bttvgrab - ビデオでの記録に適した高品質のキャプチャーができます。 o Gnome-o-Vision - GNOME デスクトップ環境でのビューワ (現在開発中 で、GNOME CVS 中にあります) o kwintv - KDE 環境の、Qt ベースの TV ビューワ o wmtune - bttv ベースの TV/radio カード用のラジオチューナーアプレッ トの Window Maker 用です。 o wmtv - WindowMaker の TV ドック用アプリケーション o XawTV - TV アプリケーションといくつかのユーティリティ o XtTV - Linux および X 用のシンプルな TV/Video プログラム 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 カーネルでしか動作しませんし、デフォルトではコンパイルされません。 ______________________________________________________________________