■外部チューナーとの接続

外部チューナーとの連携は、MythTVの魅力をさらに倍増してくれます。通常のキャプチャボード付属のソフトは、内蔵チューナーで受信できる番組のみ、iEPGやADAMAS-EPGを使った番組表録画予約が可能ですが、MythTVではCATVやスカパーなど外部チューナーを組み合わせることで、それらの番組表を取り込んでコントロールすることも不可能ではありません。もちろんやる気次第ではあります。Linuxはやる気がある人の味方です。

 

私の家ではCATVが利用できる環境にあります。CATV局から供給されているアンテナ信号にスクランブルがかかっていなければキャプボの内蔵チューナーで直接受信できることになり、非常にスマートに多チャンネル化が可能になるわけですけれど、ほとんどのCATV局と同様に専用のセットトップボックスで受信しないといけません。このため、キャプチャするためにはセットトップボックスのAV出力をキャプボの外部入力に接続してやります。

まずは初級編として、MythTVで外部チューナーの番組表を扱えるようにします。

 

CATVチューナーとの連携(初級編)

一通り動作を確認したところで、CATVチューナーをキャプボの外部入力に接続。

 

mythtvsetupを実行し、

「3.ビデオソース」を選択。

(新規ビデオソース)を選択。

ビデオソース名に適当な名前を付け、

XMLTV grabberを「Japan」、

周波数テーブルを「japan-cable」

に設定。いったんコンソールに行ってxmltvの処理をする。

「4.入力とソースの接続」を選択。

S-Video)か(Composite)のいずれかを選択。

ビデオソースとしてさきほどつけたビデオソース名を選択。

 

これで外部チューナーの映像を取り込めます。プログラムガイドを使って番組予約もできます。ただし、このままでは外部チューナーのチャンネルを手動で変更しなければならないので、あまりスマートではないですね。そこでもっと画期的なことをしようとたくらむわけですが、その前に問題発生です。なぜか外部入力時に、画像は正しく入力されますが、音声が内部チューナーのものが入ってくるという不思議な事態に。これには参りました。

しかも、いろいろ試しているうちに直ったり、また再発したり。

 

ぱ研さんで質問したもじおは私です。tadachi様からアドバイスを受けるものの、原因はまだ分からず。MythTVの問題なのか、それとも私の組み込み方が悪いのか。たぶん後者でしょうけど。。。

 

応急処置的に、上記「4.入力とソースの接続」の設定時に出てくる「外部チャンネル変更コマンド」にスクリプトをぶちこんでやりました。

 

/usr/local/bin/test_ioctl -d /dev/video0 --set-input=7 ; /usr/local/bin/test_ioctl --set-input=8 #

 

これで強制的に外部入力を再設定してやります。最後に「#」をつけたのは、MythTVがコマンドに引数としてチャンネル(周波数ID)を渡してくれちゃうのをコメントアウトしてやるためです。強引です。

 

--set-input=の値は、Sビデオなら7、コンポジットが8です(GV-MVP/RXの場合)。しかし、いきなり当該数字を入れても音声が出ません。すでに切り替わっていることになっている入力に振り直しても意味がないということなのか、再切り替えをしてくれないのです。打開策として、いったん7で実行した後に8で再び実行してやります。つまり、本当は何も繋がっていないSビデオ(7)を指定してから目的のコンポジット(8)を指定してやるのです。

 

 

CATVチューナーとの連携(上級編)

上記の方法によりMythTVで外部チューナーを扱えるようになりました。しかし、外部チューナーのチャンネル変更まではできていませんので、実際に録画予約するにはMythTV上と外部チューナーの両方で予約することになってしまいます。これではちょっと不便ですね。アメリカのセットトップボックスだと、シリアル接続でコントロール可能なものがあるそうですが、手元にあるチューナーにはそんなものはありません。そこで赤外線を使った方法を使っています。

 

本来、MythTVはlircと組み合わせて赤外線通信を行うようになっています。リモコンを使ってMythTVをコントロールするのもliricを介してになります。ですので当初はliricを使おうと思っていたのですが、リモコンのように赤外線受信についての情報はあっても、今回の目的である赤外線送信の具体的な例が少なく、あっても日本向けの機器についてではないため、圧倒的に情報量が足りませんでした。とくに現在のlircで赤外線受信と送信を同時に行うことは簡単ではないようです。

 

ヘタレな私はすぐにあきらめて、楽な方へと流れます。それは、WindowsマシンでGirderを動かし、LinuxからWindowsへ指示を出して間接的にチューナーをコントロールするというものです。赤外線通信に使ったのは、TiraというUSB接続のIRレシーバー/トランスミッターです。

http://www.home-electro.com/

 

これをWindowsマシンに接続し、Girderというソフトを用います。

http://www.promixis.com/

 

Girderの設定

Girderはリモコンの信号を記録し、反対にイベントに応じて学習したリモコンの信号を送信することができます。外部チューナーのリモコンを用意し、チャンネルのボタンを学習させていきます。Tira付属の説明書に従ってドライバのインストール、Girderの設定を行います。Girderには詳細な説明ファイルがありますので、熟読しましょう。

ポイントはリモコンの一桁だけを記録させることです。つまり、Add Commandで0〜9の10個のボタンを一つずつ覚えさせます。10個のCommandができあがれば読み込みはOKです。実際にMythTVからチャンネルを変更する際には、変更チャンネルを一桁ずつGirderに指示して変更させるようにします。もちろん、一気に二桁なり三桁を送って処理することもできますが、それだとGirder側でチャンネル数分のCommandを作ってやる必要が出てきて大変です。

 

LinuxからWindow上のGirderをコントロールする方法はいくつか考えられますが、ここではGirderのInternet Event Server/Clientを使います。

 

Girderの「File」>「Settings」>「Plugins」で「Internet Event Server」のチェックボックスを入れておきます。一度Girderを終了して再び起動すると、プラグインが有効になります(たぶん)。さきほど覚えさせたCommandの中から一つ選び、対応する呼び出しイベントを設定します。

 

たとえば「0」の場合は、「Learn Event」ボタンの左の欄から「Internet Event Server」を選び、「Learn Event」を押します。するとポップアップしてきますので、「0」を入力します。これを「9」のCommandまで繰り返します。

 

Linuxでの設定

Linux側ではスクリプトを作ってやります。GirderのサイドにはInternet Event Clientのperlスクリプトがありますのでこれを拝借します。http://www.promixis.com/のダウンロードのページから探してください。スクリプトのhostをWindows機のアドレスに、portとpasswdをGirderのプラグインの設定で行ったものに変更します。

 

このスクリプトは引数で渡されたものをスクリプト内で定義されたserverへ送るだけです。また、MythTVの「外部チャンネル変更コマンド」はチャンネル情報をそのまま送ってきます。「外部チャンネル変更コマンド」にこのスクリプトを指定してしまうと、二桁なら二桁、三桁なら三桁の数字をGirderに送ってしまいますので、いったんチャンネルを一桁ずつにバラして、順番に送ってやる別のスクリプトが必要になります。

 

ネット上でちょうどいいスクリプトがあったのでそれを加工して使っています。現在、作者に連絡中で、許可が取れれば加工済みのバージョンを掲載するつもりです(必要な人がいるかどうかは知りませんが)。

 

わたしはこれに加えてもう一つ別のシェルスクリプトをかませています。つまり3段階でGirderと通信してます。

 

 

(追記)例のスクリプトの作者から許可が出ましたので、改造したバージョンを掲載します。簡単なスクリプトです。

channel2digitcom.pl

 

MythTVの「外部チャンネル変更コマンド」に指定するのは以下のスクリプトになります。上のスクリプトを呼び出すだけのアホなもんですが、動作確認時に使っていたものをそのまま常用した結果です。万一、使用される方はダウンロードするとtxtファイルになってますので、txtを取り除いてください。なお、/root以下にlogファイルを残しますので、動作確認を終えたらコメントアウトしてしまっていいでしょう。

change_channelcom.sh