Fedora14でPT2対応ハマったことまとめ

PT2を買って設定して順調にハマった。
PT2関連の記事は腐るほどあるので、ハマったとこのみ、紹介。
環境はFedora14。

CentOS5.4サーバ機にPT2を入れて地デジ録画サーバにする: tadachi-net 出張所
を基本見ながらやってたんだけど…自宅サーバFedora14なのにCentOSの記事見てたからかハマるハマる。
…会社とか個人で狩りてるVPSとか全部CentOSなんだもん…

以下失敗集
Kouji's Blog

カーネルソースが入ってないため失敗

yum install kernel-dev
で解決

fedora14では主流で参考記事で使ってるchardev版じゃなくて、DBV版が入ってるため、インストールされないようにする。

ここが一番ハマった…
現象としてはインストールまでは普通にできるんだけど、/dev/pt1video* が表示されない。



ドライバは「chardev版」と「DVB版」の2種類存在します。Fedora14以降の最近のカーネルは「DVB版」のPT1(PT2)ドライバを標準実装しているため、主流となっている「chardev版」のインストール時にドライバーが重複し、インストールできません。 下記のコマンドにて、「chardev版」のPT2ドライバーをインストールすることが可能です。

「DVB版」の方をロードしないようにblacklistの一行を追加します。
vi /etc/modprobe.d/blacklist.conf
blacklist earth-pt1

/etc/modprobe.d/blacklist.conf
ここはKouji's Blogさんを参考にした。

fedora14だとカードリーダが読めないため、関連ダウングレード

FedoraCore14でPTï¼’ » もにっき
こちらで紹介されていた、pcsc関係のダウングレードをやった。
yum erase pcsc-lite pcsc-lite-libs pcsc-lite-devel ccid
で、ff14用を一旦消して(入っていたら)
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/pcsc-lite-1.5.5-4.fc13.x86_64.rpm
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/pcsc-lite-libs-1.5.5-4.fc13.x86_64.rpm
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/pcsc-lite-devel-1.5.5-4.fc13.x86_64.rpm
wget http://ftp.riken.jp/Linux/fedora/releases/13/Fedora/x86_64/os/Packages/ccid-1.3.11-1.fc13.x86_64.rpm
(参考にしたページで、rpmへのリンクが404だったので、URLは微修正)
rpm –import https://fedoraproject.org/static/E8E40FDE.txt
sudo rpm -ivh pcsc-lite-1.5.5-4.fc13.x86_64.rpm pcsc-lite-libs-1.5.5-4.fc13.x86_64.rpm pcsc-lite-devel-1.5.5-4.fc13.x86_64.rpm ccid-1.3.11-1.fc13.x86_64.rpm
(依存関係の問題で、同時にやらないとダメ)

B-CASカードの認識確認

pcscdを再起動しないと認識しない
/etc/rc.d/init.d/pcscd restart

epgrecのinstall画面のstep3が真っ白

この自宅鯖はあんま環境構築してなかったので最低限php入れた結果いろいろ足りず…
php-mysql入れ忘れたのが原因です。
しかしだ

// データベース接続チェック                                                                                                                  
$dbh = @mysql_connect( $settings->db_host, $settings->db_user, $settings->db_pass );
if( $dbh == false ) { 
    jdialog( "MySQLに接続できません。ホスト名/ユーザー名/パスワードを再チェックしてください". "step2.php" );
    exit();
}

そりゃ真っ白になるよ…@使ってんだもん。
せっかくエラーチェックしっかり書いてんだから@も消しといてくれればすぐ原因分かったのにな…

getepg.php実行しても番組表更新されないよ…

LD_LIBRARY_PATHが通ってなくて、libalib.so.0が読めなかったのが原因。
全部の呼び出し部分のコマンド前に「LD_LIBRARY_PATH=/usr/local/lib」を追加するという汚ない解決を…atで動作するスクリプトとかどこで環境変数設定するか分からなかったのでとりあえず…
もっとスマートに出来るんだとは思うのでアドバイスあったらお願いします!

録画予約しても録画されない

上と一緒。php-mbstring
も入れとかないとダメ。タイトル利用するとこで落ちてるので、「予約しても録画されない」っつーうざい状況になるのでご注意を。

生tsだとワンセグが再生されたりといろいろ大変

epgrec の do-record.sh をすこしいじってみた - がべこれログ - Garbage Collection Log
こちら参考…という名の丸パクりした。ワンセグとか余計なデータ入ってる、生tsからメインのストリームだけ分離。
同じ関東なので、programid(ffmpeg -iしたら表示される)も同じでほとんど流用できました!素晴らしい!
ただ、後述するtssplitter_liteが動かないせいで、その部分のみ改変しました。

tssplitter_liteが動かない。
原因不明だけど、動かなかった。
エラーは吐かないけど、作るサイズが数100kbぐらいであからさまにダメ。

SPLITTER=/usr/local/bin/tssplitter_lite
...

$SPLITTER $input_tsfile $output_tsfile $progid

↓に改変

SPLITTER=/usr/bin/ffmpeg
...

$SPLITTER -programid $progid -vcodec copy -acodec copy -i $input_tsfile $output_tsfile

まとめ

実際問題結構苦労した…まだ微妙に回避可能なハマってることあるけど、とりあえずこれだけ。
でも、epgrec使った録画はすっっっっごく便利。
ちょっと前までPT2が品薄だったので、やってなかったけど、もっと早くやれば良かった。
オススメです。