●MythDora4.0にTira-2.1を導入する(Part3)
前回でwindowsでの動作が確認出来ましたので、Tira-2.1をいよいよlinuxに設置してみます。
まずは取り付けてみて以下のコマンドでどんな感じになっているかを確認します。
[root@kororin ~]# dmesg
以下のようなメッセージが出現すればまず問題ないと思います。
usb 2-1: new full speed USB device using uhci_hcd and address 2
usb 2-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device
ftdi_sio 2-1:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232BM
usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0
usbcore: registered new interface driver ftdi_sio
drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver
次にドライバのインストールになるのですが・・・
実は、これ以降の作業は「熊の巣」さんのFedoraCore Tira-2.1の導入のページを参考にして行いました。
(説明が大変丁寧で助かりました♪ (´▽`)ありがとうございました)
で、「熊の巣」さんのページを参考にして自分用に改造を行ってみましたので記載してみます。
■/usr/local/bin/tira2code内のファイル
私は、チャンネル変更用として0.dat~9.datを作成しました。
(組み合わせて使用することで複数のチャンネルを制御出来るようにしました。)
また、power.datは電源切替用でsound.datは音声切替用として作成しました。
[root@kororin tira2code]# pwd
/usr/local/bin/tira2code
[root@kororin tira2code]# ls -la
合計 72
drwxr-xr-x 2 root root 4096 5月 2 22:47 .
drwxr-xr-x 4 root root 4096 7月 6 18:03 ..
-rw-r--r-- 1 root root 64 4月 29 15:47 0.dat
-rw-r--r-- 1 root root 64 4月 29 15:44 1.dat
-rw-r--r-- 1 root root 62 4月 29 15:45 2.dat
-rw-r--r-- 1 root root 62 4月 29 15:45 3.dat
-rw-r--r-- 1 root root 62 4月 29 15:45 4.dat
-rw-r--r-- 1 root root 64 4月 29 15:45 5.dat
-rw-r--r-- 1 root root 64 4月 29 15:46 6.dat
-rw-r--r-- 1 root root 64 4月 29 15:46 7.dat
-rw-r--r-- 1 root root 62 4月 29 15:46 8.dat
-rw-r--r-- 1 root root 64 4月 29 15:47 9.dat
-rwxr-xr-x 1 root root 63 4月 26 14:43 CHECK-USB-DEV
-rwxr-xr-x 1 root root 185 4月 26 14:41 TIRA-REC
-rwxr-xr-x 1 root root 200 4月 26 14:42 TIRA-TRANS
-rw-r--r-- 1 root root 64 4月 29 15:42 power.dat
-rw-r--r-- 1 root root 64 5月 2 22:52 sound.dat
■チャンネル変更用のスクリプト(channel-change.pl)
「熊の巣」さんのとこの「ch-chg.sh」を参考にしたのですが、私用にいろいろやってみたくて
Perlで作成してみました。ポイントとしては・・・
・changeCh関数内でコマンドの戻り値を取得してコマンドが成功するまで繰り返すようにした。
mythdora4.0の環境の問題かもしれませんが、/usr/local/bin/tira2_trans2が5回に1回ぐらい失敗していました。
ですので戻り値を取得して成功するまで繰り返すようにしています。
・ステレオ音声からモノラル音声に切り替えるようにした。
チューナーの不具合でステレオの音声入力だと音声が片方しか聞こえないため無理やりモノラル音声にしています。
・MythTVのチャンネルとチューナーの変換を定義した。
・debugログを出力可能にした。(;・∀・)
以下プログラムの内容です。
#!/usr/bin/perl -w
use strict;
use warnings;
############################################各種設定############################################
# コマンドの定義とコマンドで使用するファイルの定義
my $COMMAND = "/usr/local/bin/tira2_trans2";
my $COMMAND_FILE_DIR = "/usr/local/bin/tira2code/";
# 外部入力用のおまじない?
my $COMMAND_EXTOUT1 = "/usr/local/bin/v4l2-ctl -d /dev/video2 --set-input=2";
my $COMMAND_EXTOUT2 = "/usr/local/bin/v4l2-ctl -d /dev/video2 --set-input=1";
my $COMMAND_EXTOUT3 = "/usr/local/bin/v4l2-ctl -d /dev/video2 --set-audio-input=1";
my $COMMAND_EXTOUT4 = "/usr/local/bin/v4l2-ctl -d /dev/video2 --set-tuner=stereo";
my $COMMAND_EXTOUT5 = "/usr/local/bin/v4l2-ctl -d /dev/video2 -t stereo";
# ステレオからモノラルに変換するためのファイルの定義
my $STEREO_MONO_CHANGE = "sound";
# ファイルのサフィックス
my $file_suffix = ".dat";
# MythTVのチャンネルとチューナーの変換用の連想配列を定義
my %chData = (
# MythTVのチャンネル => チューナのチャンネル
"28" => "13",
"29" => "14",
"25" => "15",
"31" => "17",
"21" => "18",
"19" => "19",
"22" => "20",
"64" => "21",
"63" => "22",
"42" => "23",
"46" => "24",
"20" => "28",
"48" => "29",
"38" => "34",
"45" => "35",
"40" => "36",
"13" => "37",
"14" => "38",
"15" => "39",
"16" => "40",
"17" => "41",
"18" => "42",
"37" => "43",
"53" => "44",
"65" => "45",
"50" => "46",
"41" => "47",
"26" => "48",
"24" => "50",
"23" => "51",
"56" => "52",
"59" => "53",
"57" => "54",
"60" => "55",
"58" => "56",
"36" => "58",
"49" => "59",
"60" => "60",
"32" => "55"
);
# チャンネル変数
my $arg_ch;
my $conversion_ch;
# チャンネル存在フラグ
my $ch_flg = 0;
############################################処理開始############################################
# 引数のチェックと取得
if ( $#ARGV != 0) {
exit(1);
}else{
$arg_ch = $ARGV[0];
&writeLog("処理開始");
&writeLog("チャンネル引数取得:".$arg_ch);
}
# チャンネルリストと指定されたチャンネルの整合性チェック
while ( ( my $key, my $value ) = each( %chData ) ) {
if ( $key == $arg_ch ){
$ch_flg = 1;
$conversion_ch = $value;
# ヒットしたのでループを抜ける
&writeLog("ヒットしたのでループを抜けた");
last;
}
}
# チャンネルリストに存在していない場合は、エラーにする。
if ( $ch_flg == 0 ){
&writeLog("指定されたチャンネルはチャンネルリストに存在していません。");
exit(1);
}
# チャンネル制御の実行
if ( length($conversion_ch) > 0 ) {
my $ch;
my $ch_file;
my $str;
for (my $i=0; $i
$ch_file = "$COMMAND_FILE_DIR$ch$file_suffix";
# 初回のみ実施
if ( $i == 0 ){
# IOキャプチャでの不具合対応
system($COMMAND_EXTOUT1);
&writeLog("COMMAND_EXTOUT1を実行");
system($COMMAND_EXTOUT2);
&writeLog("COMMAND_EXTOUT2を実行");
#system($COMMAND_EXTOUT3);
#system($COMMAND_EXTOUT4);
#system($COMMAND_EXTOUT5);
}
# ファイル(チャンネル)の存在チェック
if ( -e $ch_file ){
$str = "$COMMAND $ch_file";
&changeCh($str);
}else{
&writeLog("信号を記録したファイル$chが存在していません。");
exit(1);
}
}
# ステレオからモノラルに変更
$str = "$COMMAND $COMMAND_FILE_DIR$STEREO_MONO_CHANGE$file_suffix";
system($str);
&writeLog("ステレオからモノラルに変更");
sleep(1);
system($str);
&writeLog("ステレオからモノラルに変更");
}else{
#print "チャンネルリストは1バイト以上を設定してください。。\n";
exit(1);
}
&writeLog("処理終了");
exit(0);
sub writeLog{
my $data;
my $dateStr;
my @youbi=();
my $sec;
my $min;
my $hour;
my $mday;
my $mon;
my $year;
my $wday;
my $yday;
my $isdst;
$data = $_[0];
@youbi = ('日', '月', '火', '水', '木', '金', '土');
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$mon += 1;
$dateStr = "$year年$mon月$mday日 $youbi[$wday] $hour時$min分$sec秒:$data";
#system("echo $dateStr >> /usr/local/bin/debug.txt");
}
sub changeCh{
my $command;
my $ret;
my $i = 1;
$command = $_[0];
while ( 1 ) {
$ret = system($command);
&writeLog("チャンネル変更$i回目:$commandを実行");
&writeLog("チャンネル変更$i回目の戻り値:$ret");
if ( $ret == 0 ){
&writeLog("チャンネル変更成功まで$i回");
last;
}
$i = $i + 1;
}
}
以上です。
これでMythDora4.0でも、Tira-2.1を使用して外部チューナを制御出来るようになります。
偉大なる先人の方々に感謝致します。