2010年7月5日月曜日

getepg.php で Segmentation fault がいっぱい

最初に気がついたのは、録画予約したはずの番組が、録画されていないことだった。
EPGREC から番組を検索しても、5日後の番組が引っかからない・・・・

はて?と思って、EPGREC の番組表を見てみると、4日後以降マッシロケ・・・
では、手動で番組表を取得してはどうかと getepg.php を実行してみたが。
Segmentation fault がいっぱい表示されてダメっぽい。
epgdump とかも疑って、再インストールしてみたが、状況は変わらず。

受信電波状況が悪いのかと、録画してみることにした。
$ recpt1 --b25 --strip 27 30 test.ts
using B25...
enable B25 strip
pid = 3075
Cannot tune to the specified channel

ぬぉ!? NHK が映らんだと!!


アンテナケーブルを確認したが、同じ線から分岐しているテレビは映っているから大丈夫

カードリーダーも確かめてみた。
$ pcsc_scan
PC/SC device scanner
V 1.4.16 (c) 2001-2009, Ludovic Rousseau
Compiled with PC/SC lite version: 1.5.3
Scanning present readers...
0: SCM SCR 3310 NTTCom 00 00
・・・

    Japanese Chijou Digital B-CAS Card (pay TV)

大丈夫のようだ…



ちょっと焦りだして、PT2 が認識しているかを確認してみた。
$ dmesg | grep pt1

何も出てこない・・・・これはもしや・・・・PT2 がお亡くなり・・・・
いや、なにか大切なことを忘れている気がする・・・思い出せ俺・・・・
4、5 日前、何をしたか・・・・思い出せぇぇぇぇ・・・はっ!!
OS のアップデートだだだ!!

そして続けざまに脳裏に煌めいた!

PT1/PT2のドライバカーネル・モジュールなので、カーネルのバージョ ンに依存します。今後のアップデートなどでカーネルが変更された時には、再インストールが必要という事です。

これだ!!!

では早速作業開始。
結構更新されているみたいなので、最新バージョンを入れることにする。

リポジトリをクローン
$ hg clone http://hg.honeyplanet.jp/pt1
$ cd pt1
$ hg summary
親リビジョン    : 116:38a793ac3d9d tip
 - fix version string
ブランチ        : default
想定 commit 結果: (改変無し)
update 候補     : (現行のまま)

コンパイルに必要なヘッダー類を更新する。
$ sudo apt-get update
$ sudo apt-get install build-essential linux-headers-`uname -r`
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
build-essential はすでに最新バージョンです。
linux-headers-2.6.32-23-generic はすでに最新バージョンです。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

どうやら既に最新バージョンのようだ。

では、ドライバをビルド
$ cd driver
$ make

ドライバをインストール
$ sudo make install
(備忘録:
  $ paco -a
  $ sudo paco -r pt1-driver
  $ sudo paco -p pt1-driver make install



続いて録画ツールをビルド
$ cd ../recpt1/
$ ./autogen.sh
$ ./configure --enable-b25
$ make

録画ツールをインストール
$ sudo make install

再起動する。

PT2 が認識されているかを確認

$ dmesg | grep pt1
[   16.060445] pt1-pci.c: r116:38a793ac3d9d 2010-03-25
[   17.432889] pt1_thread run

おーけー、大丈夫のようだ

続いて、デバイスファイルを確認
$ ls -al /dev/*pt1*
crw-rw-rw- 1 root video 250, 0 2010-07-05 13:20 /dev/pt1video0
crw-rw-rw- 1 root video 250, 1 2010-07-05 13:20 /dev/pt1video1
crw-rw-rw- 1 root video 250, 2 2010-07-05 13:20 /dev/pt1video2
crw-rw-rw- 1 root video 250, 3 2010-07-05 13:20 /dev/pt1video3

こちらも問題ない

では、録画のテスト
$ recpt1 --b25 --strip 27 30 test.ts
using B25...
enable B25 strip
pid = 2209
C/N = 33.420785dB
Recording...
Recorded 30sec

よしよし・・・では、録画したファイルを再生して確認してみる。
大丈夫だった!

では、電子番組表を取得してみる。
$ /var/www/epgrec/getepg.php

EPGREC 画面を見ると、どんどん番組表が埋まってゆく~
うちの環境だと、だいたい12分程度で完了する。

さて、気分もよくなったし、このまま EPGREC のバージョンも上げてしまおう!


(この後、とんでもない事態になっていしまうことを、まだ知るよしもない主であった。)