このブログを検索

2011-09-03

UbuntuでPT2(2/5)

そしてシミュレーションのインストール編。

まずハードウェアのインストール。
PCIスロットにPT2を挿入、USB端子にICカードリーダーを挿入。
カードリーダーにはB-CASカードを挿入します。
どうやらICカードは端子のある方が表で、カードリーダーに指すとき、見た感じ「逆だろう!」という方向が正しいことがあるそうなので気を付ける必要がありそうです。


インストーラを最新にする
$ sudo apt-get update


ICカードリーダーツールをインストールする
$ sudo apt-get install libccid pcsc-tools libpcsclite-dev

実行
$ pcsc_scan
(20120806)もし動かない場合はsudo apt-get install pcscdを試す
文字がいろいろ表示されて
Japanese Chijou Digital B-CAS Card (pay TV)
といった文字が表示されれば成功。


チューナードライバ
チューナーのLinux用ドライバがいくつかあるらしく、DVB版、chardev版と呼ばれるものを見つけました。
DVB版はGUIベース、chardev版はCUIベース、そしてPT2での一般的なのはchardev版(?)、というわけで、今回はchardev版をインストールするつもりで検討してみます。


まず、/usr/local/binが存在するか確認する。
ない場合はインストールに支障をきたすため作成しておく。
$ sudo mkdir /usr/local/bin
$ sudo chmod +x /usr/local/bin



PT2ドライバのインストール
(recpt1のインストール) ※詳細不明
$ cd
$ sudo apt-get install build-essential
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
$ unzip c44e16dbb0e2.zip
$ cd pt1-c44e16dbb0e2/arib25
$ make
$ sudo make install
$ cd ./../recpt1
$ sudo make install

(ドライバのインストール)
$ cd
$ sudo apt-get install mercurial autoconf automake
$ hg clone http://hg.honeyplanet.jp/pt1 PT2
$ cd PT2/driver
$ make
$ sudo make install

再起動 ※電源OFFしてからONした方がいいらしい?
$ shutdown -h now



PT2が認識されているか確認
$ lspci | grep Xilinx

↓みたいな文字が出ればOK
05:00.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)



chardev認識(?)
$ ls -lart /dev/ |grep pt1
crw-rw-rw- 1 root video 250, 3 2011-08-31 21:16 pt1video3
crw-rw-rw- 1 root video 250, 2 2011-08-31 21:16 pt1video2
crw-rw-rw- 1 root video 250, 1 2011-08-31 21:16 pt1video1
crw-rw-rw- 1 root video 250, 0 2011-08-31 21:16 pt1video0
4ポートあるので4つ出るのが正しいらしい


とりあえず録画テスト
$ recpt1 --b25 --strip 22 30 test.ts
※TBSを30秒録画

以上でチューナーのインストール完了。


続いて録画システムであるepgrecのインストール。
Linuxでchardev版だとepgrecくらいしか選択肢ないらしい。

$ sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli mysql-server php5-mysql

まずはepgdumprというソフトをインストール
(20120808追記)パッチを当てる方法を掲載しました→epgdumprにパッチをあてる
$ cd
$ wget "http://www.mda.or.jp/epgrec/index.php?plugin=attach&refer=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99&openfile=epgdumpr2-utf8.tar.gz" -O epgdumpr2-utf8.tar.gz
$ tar -zxvf epgdumpr2-utf8.tar.gz
$ cd epgdumpr2
$ make
$ sudo cp epgdump /usr/local/bin


確認
先ほどrecpt1で録画したtest.tsのあるフォルダで次のコマンドを実行する
先ほどのtest.tsのあるフォルダで
$ epgdump test test.ts - | less
番組名っぽいのがズラズラでてきたらOK


atのインストール
$ sudo apt-get install at

次の説明に従って設定する必要があるようです。
/etc/at.denyの設定
 epgrecはWebサーバーのユーザーアカウント(Debian/Ubuntuはwww-data、RedHat?系ではapache)でatコマン ドを実行しますが、セキュリティ上の配慮からatの使用禁止ユーザーリスト/etc/at.denyに、Webサーバーのアカウントが設定されている場合 があります。
 管理権限(root)で/etc/at.denyを開き、www-dataやapacheといった、Webサーバーのアカウントが含まれていないか調べ、含まれていたら、その行を必ず削除してください。


/etc/passwdの確認
 一部のディストリビューションでは、セキュリティ上の配慮からWebサーバーのアカウントにnologin(ログイン不可)が設定されています。 nologinのアカウントではatコマンドも利用できず、epgrecによる録画予約が機能しません。 rootアカウントで/etc/passwdを 開き、Webサーバーのアカウント(apacheなど)のエントリを調べ、シェルの設定が/sbin/nologinに設定されているようなら、/bin /shに変更しておきましょう。

apache:x:48:48:Apache:/var/www:/sbin/nologin
↓下記のように変更
apache:x:48:48:Apache:/var/www:/bin/sh

 以上の設定をしっかりと行っておかないと、録画予約に失敗します。



うちの場合/etc/at.denyにwww.dataが含まれていますね。
/etc/passwdには今回見るべきアカウントが含まれていません。



続いてmysqlのセットアップです。
まず日本語の設定から。

$ sudo vi /etc/mysql/my.cnf

[client]セクションに↓追記
default-character-set = utf8

[mysqld]セクションに↓追記
default-character-set = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake
init-connect = SET NAMES utf8
(20120806追記)最新mysqlではdefault-character-setをcharacter-set-serverとする
(20120806追記)collation-serverはデフォルト値を指定していたみたいなので削除
(20120806追記)skip-character-set-client-handshake,init-connectは使わない方がいいらしい、問題があれば試してみる程度で

[mysql]セクションに↓追記
default-character-set = utf8

[mysqldump]セクションに↓追記,なければセクション追加
default-character-set = utf8


次にrootのパスワードを忘れてしまっていた場合の対処から。

mysqlサービス停止
$ sudo service mysql stop

認証をスキップするオプションを指定してmysqlを起動
$ sudo /usr/bin/mysqld_safe --user=root --skip-grant-tables &
※このあと画面に変化ないからエンターおしたらプロンプトが出る?

ログインしてmysqlデータベースに接続
$ mysql -u root mysql

パスワードを初期化
mysql> UPDATE user SET Password=PASSWORD('新しいパスワード') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

mysqld_safeは普通には終了できないので特別なコマンドで終了
$ mysqladmin shutdown

$ sudo service mysql start
$ mysql -u root -p
Enter password: ←新しいパスワード入れる

epq用のデータベースを作成し、権限を設定する
mysql>create database epgrec;
mysql>grant all privileges on epgrec.* to 'epgrec'@localhost identified by 'パスワード';
mysql>quit



epgrecインストール
テスト版がでているが安定板(20100322)を使うことにする

$ cd
$ wget 'http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fepgrec%2F46492%2Fepgrec-20100322.tar.gz' -O epgrec-20100322.tar.gz
$ sudo tar -xvzpf epgrec-20100322.tar.gz -C /var/www/

スクリプトの設置
$ cd /var/www/epgrec
$ cp -p config.php.sample config.php
$ cp -p do-record.sh.pt1 do-record.sh


config.phpを公式サイトに従って変更する

config.phpの設定

/var/www/epgrec/config.php.sampleをconfig.phpにリネームします。

$ sudo mv /var/www/epgrec/config.php.sample /var/www/epgrec/config.php

その上でエディタで開きます。たとえば、

$ sudo gedit /var/www/epgrec/config.php

ファイル内の設定を、環境に合わせて書き換えます。書き換えが必要&必要になるかもしれない項目を説明していきます。以下で挙げられた設定以外は変える必要はありません。
地上デジタルチャンネルマップ$GR_CHANNEL_MAPの設定 [はてなブックマークで表示] [コメントビューワーで表示]

 $GR_CHANNEL_MAPには、地上デジタル放送のチャンネルがPHPの配列として格納します。地上デジタル放送のチャンネルはお住まいの地域によって異なりますから、地域に合わせて設定を変えなければなりません。
 config.phpには首都圏東部(千葉方面)用のチャンネルマップが初期設定されています。首都圏地方局のうち、TVK、テレビ埼玉、MXTVはコメントアウト(行頭の//)されており、千葉テレビはコメントアウトされていません。首都圏にお住まいの方は、地方局のコメントの位置を自分が受信できる局に変更するだけで利用できます。
 一方、首都圏以外の地域では地域に合わせて丸ごとの変更が必要です。$GR_CHANNEL_MAPは次のように記述します。

$GR_CHANNEL_MAP = array(
"識別文字列" => "チャンネル番号",
"識別文字列" => "チャンネル番号",
.....局数分入れる
);

 識別文字列は局を識別するためのユニークな(唯一無二の)文字列にします。例のように"GRチャンネル番号"としておくのが無難でしょう。受信可能なチャンネル番号は、ネットで調べることが出来ます。たとえば、マスプロ電工の相談窓口などを参考にすると良いでしょう。例として、大阪地区の$GR_CHANNEL_MAPの設定例を掲載しておきます。

$GR_CHANNEL_MAP = array(
"GR24" => "24", // NHK
"GR13" => "13", // 教育
"GR16" => "16", // 毎日
"GR15" => "15", // 朝日
"GR17" => "17", // 関西
"GR14" => "14", // 読売
"GR18" => "18", // テレビ大阪
);


とりあえず今回は、MXとTVKを有効にして、千葉テレビを無効にすればよさそう。


ここで録画テスト
$ cd
$ OUTPUT=test.ts CHANNEL=22 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
TBSが30秒録画されたら成功



epgrecの確認
http://ホスト名/epgrec/
に繋ぐ

”以上を確認し次の設定に進む”を選択

MySQL接続ユーザー名を"epgrec"に
MySQL接続パスワードを設定したパスワードに
使用データベース名を"epgrec"に
インストールURLを"http://ホスト名/epgrec"に
録画保存ディレクトリを"/○○○"に(sambaフォルダ)
サムネールの使用を"使用する"に
だいたいこんな感じで次へ

mediatomb連係機能を"使う"に
だいたいこんな感じで次へ

最後にリンクをクリックすれば初回受信に入るらしいけど
先にmediatombの連携設定

$ sudo vi /etc/mediatomb/config.xml

sqliteをoffにしてmysqlをonにする
前提としては、テーブル名がepg、ユーザー名もepg。
=>"no"
=>"yes"
localhost
epgユーザー
epgテーブルのユーザーパスワード
epgユーザーパスワード

mediatomb再起動
$ sudo /etc/init.d/mediatomb restart


mediatombの監視フォルダ設定で録画フォルダを選択する。
本当はinotifyを選択したほうがいいらしいけど
うちのmediatombは対応していないぽい。
JavaScriptをサポートさせた状態でビルドしないといけないっぽい?

ここまでセットアップしてから、epgrecの初回受信リンクをクリックする。
20~50分待ってから、案内されているリンクをクリックして番組表が表示されたら成功。

番組表を最新に保つためのスクリプトをcronに登録する
Ubuntuであれば変更なしでそのままでも動作するらしい。
$ sudo cp /var/www/epgrec/cron.d/getepg /etc/cron.d/.

最初は手動で実行できるか確認しておく
$ /var/www/epgrec/getepg.php
1分くらいまってコマンドが終わればOK
電波の弱いチャンネルがあれば結構時間かかる

※レスポンスがなくても途中でキャンセルしないこと
  動いているのにブレークすると番組表が壊れる可能性あり
※Constant E_ERROR ~という警告が出るが無視していいらしい
 間違えて予約済の定数名で定数をつくろうとしているらしい
 3/27パッチとやらで治るらしいがどこにあるかわからんかった



次に、番組録画の確認。
現時刻でやっている番組を試しに簡易予約し、/var/www/epgrec/videoにファイルが作成されるか確認する。


以上でインストール完了。

最後にパッチを当てておく
現時点で公式パッチは2つ出ている。
$ cd
$ wget "http://sourceforge.jp/frs/redir.php?m=globalbase&f=%2Fepgrec%2F46704%2Fepgrec-20100322fix1.tar.gz" -O epgrec-20100322fix1.tar.gz
$ tar -xvzpf epgrec-20100322fix1.tar.gz
$ cp epgrec-20100322fix1.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./epgrec-20100322fix1.diff | patch -p1
$ rm epgrec-20100322fix1.diff

$ cd
$ wget "http://sourceforge.jp/frs/redir.php?m=keihanna&f=%2Fepgrec%2F46851%2Fepgrec-20100322fix2.tar.gz" -O epgrec-20100322fix2.tar.gz
$ tar -xvzpf epgrec-20100322fix2.tar.gz
$ cp epgrec-20100322fix2.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./epgrec-20100322fix2.diff | patch -p1
$ rm epgrec-20100322fix2.diff


更に野良パッチをあてる

重複を考慮した録画予約アルゴリズムの改善
$ cd
$ wget "http://www.sky.sannet.ne.jp/kn_ishi/epgrec/files/Reservation.class_20110220kn.tar.gz" -O Reservation.class_20110220kn.tar.gz
$ tar -xvzpf Reservation.class_20110220kn.tar.gz
$ cp Reservation.class_20110220kn.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./Reservation.class_20110220kn.diff | patch -p1
$ rm Reservation.class_20110220kn.diff


もう一つ野良パッチ
重複予約時にエラーを出力する

epgrecの記事の2010/06/03追記を参照
最初の野良パッチと競合するので、Keyword.class.phpのパッチだけ切り取って使う。
epgrec-20100322fix20100603_Keyword.class.php.diffという名前で保存
$ cd
$ cp epgrec-20100322fix20100603_Keyword.class.php.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./epgrec-20100322fix20100603_Keyword.class.php.diff | patch
$ rm epgrec-20100322fix20100603_Keyword.class.php.diff


さらにそのログを閲覧するビューワーを
epgrecの記事の2010/09/10追記のソースをもとに作成し
/var/www/epgrec/dupReservLogViewer.phpとして設置する。
%重複予約%の部分を、最初の野良パッチにあわせて%予約が重複しています%に変更しておく。

権限を変更する
$ chown ユーザー dupReservLogViewer.php
$ chgrp グループ dupReservLogViewer.php
$ chmod 755 dupReservLogViewer.php
※ユーザー・グループは他のファイルと同じにしておく


これで完全にインストール完了。
本当にインストールできたらとても楽しそうですね。



参考
http://team2ch.org/blog/?p=1103
http://zeonic.ath.cx/pt2/
http://avalokitesxvara.blog99.fc2.com/blog-entry-177.html
http://www.sky.sannet.ne.jp/kn_ishi/epgrec/epgrec_Reservation.class.html




続く




【アースソフト】地デジチューナー PT3 Rev.A

【アースソフト】地デジチューナー PT3 Rev.A
価格:13,860円(税込、送料別)

0 件のコメント:

コメントを投稿