eric_sandeen@bigfoot.com
cz8cb01@linux.or.jp
ビデオ映像のキャプチャーや表示は、Linux におけるマルチメディア機能の中でも興味深い物の一つです。 video4linux API ( http://roadrunner.swansea.uk.linux.org/v4l.shtml) を利用すれば、色々なビデオデバイスを使うことができます。例えば Conexant 社 ( http://www.conexant.com/) の bt848 および bt878 チップセットを使用した TV チューナーカードなどが使えます。 このドキュメントでは Linux でそれらのカードをどのようにして利用するかについて説明しています。
(訳注:ライセンス関係については原文をそのまま示します)
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.
ドキュメントの公式な最新版は Linux Documentation Project http://www.linuxdoc.org/ より入手できます。
最初の bttv ドライバを書いた Ralph Metzler と Marcus Metzler、 Video4Linux API を作成した Alan Cox、ラジオカード・bttv の後継・xawtv に 関する作業を行った Gerd Knorr に感謝します。またこれらのカードを Linux でサポートするために貢献された、その他全ての方に感謝します。同じく BTTV Howto を書いた William Burrow にも感謝します(このドキュメントを書き終っ た後に知りました) 。彼のドキュメントのおかげで、このドキュメン トをより良いものにできました。この HOWTO を書くにあたっては、bttv や xawtv のドキュメントが非常に参考になりました。
このドキュメントに書かれている情報の利用はご自分の責任の下で(at your own risk) 行なってください。ドキュメントの内容に従うことによるどのような責任 や負担も拒否します。ドキュメントに登場する概念や例、その他の内容はご自分 のリスクで利用してください。
全ての著作権は特に記述していない限り、それぞれの著者が保持しています。ド キュメント内に記載されているトレードマークや商標などは各社の商標または商 標登録です。プロダクトやブランド名の記述は、必ずしもそれぞれを推奨してい るものではありません。
インストールの前や定期的に、システムのバックアップを取ることを強く お勧めしておきます。
bttv README
によると:
bttv はフレーム取り込みを行うカードのデバイスドライバです。対象とするカードは Conexant 社( http://www.conexant.com)の Bt848 シリーズのビデ オデコーダーチップセットを利用しているものです。このシリーズのチップセットには Bt848, Bt848A, Bt849, Bt878, Bt879 があります。異なったメーカーによる、 カード間の唯一の違いは、チューナーのタイプとボード上の拡張機能です。例え ば Hauppauge 社のカードには字幕やサウンドのデコーダーチップが追加されて います。bttv でのこういった追加機能のサポートは一部に限られています。 またタイプ(合成や S-Video)や入力数も異なっています。
次のカードは動作するはずです:
ドキュメントの次のバージョンに追加しますので、動作する他のカードを ご存じの方は、著者まで E-mail してください。
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 シリーズに関しては 述べていません。
(この章の記述に際しては William Burrow に感謝します)
コンピュータのケースを開けるのが恐ければ、この HOWTO 文書全体を始めに一 度良く読み、チューナーのタイプ、回路番号、クリスタルの周波数などのカード に関する仕様を知ってください。そしてカードを代わりにセットしてくれる人を 探しましょう。
そうでない人は、ケースを開けてカードを空いているスロットに挿しましょう。 マザーボードの仕様によっては(マザーボードのマニュアルを参照してください)、 カードを挿すスロットを PCI バス転送や PCI バスマスタリングをサポートして いるものにする必要があります。またオーバレイモードを使う時にもこの点に気 をつけましょう。
ビデオキャプチャーカードとサウンドカードとを接続するには二つの方法があり ます。一つ目は内部的に接続する方法です。CD-ROM のオーディオケーブルをビ デオカードの音声入力に接続し、ビデオカードの音声出力をサウンドカードの CD-ROM か、チューナーのオーディオ入力に接続します。もう一つは、ビデオカー ドの外部 1/8'' オーディオジャックをオーディオカードの 1/8'' ラインオーディ オ入力ジャックへ接続する方法です。またオーディオカードを持ってない時や、 サウンド入力を経由したくない時には、アンプ付きのスピーカーをキャプチャー カードのオーディオ出力に接続することもできます(最近の bt878 カードにはサ ウンドコネクタがないものもあります。ディジタルオーディオデータを PCI バ ス経由で送るからです。執筆時点では現在この機能はサポートされていません)。
カードが動作しているかどうかを確認する時にはビデオデータを使うのが手軽で 便利です多くのカードではビデオ入力、S-Video、チューナー付きなら RF 入力 の合成ができます。各入力にはそれぞれ別のコネクタがあります。
カードをサポートするためには、カーネルを正しく設定する必要があります。多
くの新しい 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/)に日本語版もあります)
新しい 0.6.x パッケージを使いたい場合、始めにアーカイブを上で記載したサ イトから入手する必要があります。そして
tar -xvzf bttv-0.6.x.tar.gz
を実行して展開し、作成されたディレクトリへ移動します。su
で
root になり、
make
を実行してドライバを作成しましょう( INSTALL
に書かれている
makefile の編集については無視してしまって構いません。必要な情報はモジュー
ルをインストールする時にパラメータとして渡しますから)。そして、
make install
してインストールしましょう。最後に
/sbin/depmod -a
を行なうとモジュールの依存情報をアップデートできます。
(訳注:訳者の個人的な趣味では主にセキュリティ上の観点(というかおまじな いと言うか)から、make install の直前までは一般ユーザーで作業し、そうしな ければならないぎりぎりまで root にならないようにしています)
/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
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 プログラムを実行し、動作するかを見ます。チャネルを変 えられない時は、正しいモジュールをロードしたかを確認してください。サウン ドが聞こえない時は、サウンド関係のモジュールと、音声をサウンドカード経由 で出力している場合には音声がミュートされていないかを確認してください。
必要なモジュールとオプションがわかれば、それを
/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
を実行するようになっています)
カーネルやデバイスの設定、モジュールのロードが終わりましたが、実際にイメー ジを見たりキャプチャーするにはアプリケーションが必要になります。たくさん のアプリケーションが利用できます。
FlyVideo98 リモコン用のドライバもあります。 http://wolf.ifj.edu.pl/~jochym/FlyVideo98/
ドキュメントを良く読み、使用しようとするアプリケーションについ てあらかじめ調べましょう。多くのアプリケーションでは、動作前に設定ファイ ルを編集する必要があります。多くの種類のカードがありますから、ドキュメン トを良く読んでください。アプリケーションのデフォルトの設定だと ご使用のカードでは動作しないかもしれませんから。
"*" で始まる行は 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 カーネルでしか動作しませんし、デフォルトではコンパイルされません。