2009-02-07 Sat
気がつけば、2011年も迫り、アナログ放送の停波も近づいてまいりました。HITACHIのTVキャプチャーカード・HMVC-5100はとくに
patchを当てなくてもLinuxで動くみたいだし…、とkernel
2.4の頃からずっと放ってあったのですが、今、言及しておかないとこのネタも永遠に日の目を見ることがなくなってしまうかな、と一応ふれておくことにし
ました。
HMVC-5100は、HITACHIのOEMとして、NECのパソコンに内蔵(SmartVision Pro 3?)されていたり、ELSA EX-VISION
350TVとして供給されていたようです。造りは素直らしく、LInuxのsaa7134でもELSA EX-VISION
300TVとして簡単に視聴できました、と私の日記には書いてありますが、しかし、今回、この記事を書くため素のkernelで動かしてみるとなぜかTV
を視聴できません。原因についての詳細は後にするとして、とりあえず、このpatchをあてると正常動作するようになります。
なお、kernel 2.4から2.6へアップデートされた際、チューナ周りに変更が加えられており、2.6ではmoduleのロード時にntsc=jのオプションが必要になりました。コマンドラインからは、
# modprobe tuner ntsc=j;modprobe saa7134
modprobe.confに書く場合には、
alias char-major-81 saa7134
install saa7134 /sbin/modprobe tuner ntsc=j; /sbin/modprobe --ignore-install saa7134
といった感じで実行または設定してください
このpatchでは、HMVC-5100のベンダーID・デバイスIDの登録を行い、ELSA EX-VISION
300TVのエントリを流用し、Inputの順序と
視聴終了後も音声が出力しっぱなしになる不具合を修正しています。
視聴終了後も音声出力が継続する現象は、HMVC-5100のチップがsaa7134で
はなく廉価版のsaa7130であり、音声出力の機能が一部省略されているためです。saa7134ドライバには予めそれに対処するためのモノが用意され
ていますので、それを付加してあります。これについては、kernel sourceのDocumentation/video4linux/README.saa7134に言及されています。
Inputの順序を変えたのは、ELSA EX-VISION
300TVでは、Input 0がComposite1、Input
2がTelevisionというあまり一般的でない対応になっており(ただし、他にもないわけではない)、例えば録画時にカードごとにInput値を気に
しなければならないという状況をできるだけ避けたかったからです。このpatchでは、Input 0がTelevision、Input
1がComposite1、Input 2がS-Video、というもっとも一般的と思われる対応になっています。
また、HMVC-5100のカードIDは97になっています。当然ですが、自動認識しますのでmodprobe時
に指定は不要です。
このpatchは、Vine Linux 4.2のkernel 2.6.16-76.40vl4、saa7134-0.2.11で検証されています。
HMVC-5100.26.patch
# cp HMVC-5100.26.patch /usr/src/linux
# cd /usr/src/linux
# patch -p0 < HMVC-5100.26.patch
# make menuconfig (適当な.configファイルを作ってください)
# make bzImage
# make modules
# make modules_install
終わったら、このkernelでbootできるようにし、modprobe.confに設定を追加して完了です。
以下が起動時のメッセージです。
saa7130[0]: found at 0000:00:09.0, rev: 1, irq: 20, latency: 32, mmio: 0xdd002000
saa7130[0]: subsystem: 1054:0103, board: HITACHI HMVC-5100 [card=97,autodetected]
saa7130[0]: board init: gpio is 4200000
tuner 1-0060: Chip ID is not zero. It is not a TEA5767
tuner 1-0060: chip found @ 0xc0 (saa7130[0])
tuner 1-0060: type set to 40 (HITACHI V7-J180AT)
saa7130[0]: i2c eeprom 00: 54 10 03 01 ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: i2c eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7130[0]: registered device video0 [v4l2]
saa7130[0]: registered device vbi0
さて、HMVC-5100が、ELSA EX-VISION
300TVとして使えなかった問題ですが、厳密には、xawtvでは視聴できず、fbtv,mplayerでは視聴できました。私はパソコンではテレビは
録画して見るのが常なので、直接テレビを見るときは概ね動作確認をするときで、そういう時は、細かいオプションを指定できるmplayerを使うため、こ
の問題にすぐ気づかなかったということらしいです。
では、なぜxawtv(3.95-0vl2)では視聴できなかったかというと、このxawtvはドライバをリロードしてカードの設定を変えてもビデオ入力
の設定を最初のものから変えられないからのようです。つまり、最初にUNKOWNなカードとしてsaa7134ドライバがロードされてしまうと後からカー
ドの設定を変えてドライバをリロードしてもxawtvのビデオ入力はUNKOWNなカードの設定であるdefault(.vmux =
0)のみになってしまい、.vmux =
0がComposite1に割り当てられているHMVC-5100ではTVが見れないという状況に陥ります。ちなみにxawtvに同梱されているfbtv
ではこういうことはなく、想定通りの動作をし、一端、fbtvで何かが初期化再設定されるとxawtvでもカードの設定変更が有効になります。
しかし、これではxawtvではUNKOWNなカードの設定を総当たりで捜し出すという技が使えないことになるのですが、そういう話は聞きません。この
xawtv(3.95-0vl2)に特有な現象なのか、それとも、そもそもUNKNOWNなカード自体が存在しない故、問題化しないのか、よくわかりませ
んが、アナログ波停波も近づく昨今、ソフトウェアエンコードの時代遅れなキャプチャカードなんてどーでもいいのかもしれません。加えて、HMVC-
5100の希少性を考えるとこのページも誰の役にも立たないんだろうな、とあいかわらずの自己満足に浸るワタクシです。