CentOS7上にPT3環境を構築します。
前提環境
- CentOS7をインストール済み(ここでは、デフォルトの最小構成のインストールを前提にしています。インストールに自信が無ければスクリーンショットを多用しているこちらを参照。)
- pt3を購入済み
- SCR3310-NTTComを購入済み
- ハードウェアは、ある程度のスペックがあればOK。消費電力を考慮するとQ1900-ITX Mini-ITX PCケース DDR3L 4G×2辺りかな。
- カードリーダに挿すカードが準備済みであること
最小インストールだと、ifconfigコマンドすら使えないので、必要最低限のパッケージを導入します。
sudo yum update sudo yum install net-tools sudo yum groupinstall base
固定IPにする。
/etc/sysconfig/network-scripts /以下のifcfg-***のファイルがネットワークの設定ファイル。BOOTPROTOをstaticに変更して、IPADDR、NETMASK、 GATEWAY、NAMESERVERを追記する。また、ONBOOTがNOならYESにしておく。
# ifcfg-enp0s25のファイル名は環境によって異なります。 sudo vi ifcfg-enp0s25
ifcfg-enp0s25の内容(一例。適宜修正してください)
HWADDR="00:19:99:xx:xx:xx" TYPE="Ethernet" BOOTPROTO="static" IPADDR=172.20.1.240 NETMASK=255.255.255.0 GATEWAY=172.20.1.1 NAMESERVER=172.20.1.1 DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="no" NAME="enp0s25" UUID="dfd8b39a-0115-4bd4-8494-e403e5133f04" ONBOOT="yes"
SELinuxを無効にする(再起動したタイミングで無効になります)。
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
次にLAMP環境を一気にインストールします。
sudo yum groupinstall 'Basic Web Server' 'Perl Support' \ 'PHP Support' 'MariaDB Database Client' 'MariaDB Database Server' \ 'Development tools' # 下記は、上記のgroupinstallで入るかも。 # ちょっと躓いて試行錯誤した際に再インストールしたため、 # その際にyum installしたものを追加で書いています。 sudo yum install httpd-devel php-devel php-mbstring php-mysql # httpでアクセス可能にします。 sudo firewall-cmd --add-service=http --zone=public --permanent sudo firewall-cmd --reload
カードリーダ周りのパッケージをインストールします。groupinstallすると余計な物が大量に入る為、個別インストールにしました。面倒なので他のパッケージも一度にインストールしておきます。
sudo yum install ccid pcsc-lite pcsc-lite-devel sudo yum install wget make gcc perl-CPANPLUS unzip git svn automake yum-utils.noarch man openssl-devel at sed -i 's/;date.timezone =/date.timezone = Asia\/Tokyo/g' /etc/php.ini # 下記はrpmが無いのでmakeしてインストールする。 # fedoraのrpmを持ってきても良いですが、makeすればいいと思います。 mkdir ~/pt3_tmp; cd ~/pt3_tmp wget http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.13.tar.bz2 tar -jxvf pcsc-perl-1.4.13.tar.bz2 cd pcsc-perl-1.4.13 perl Makefile.PL && make && sudo make install && echo "install OK" cd ~/pt3_tmp wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.4.22.tar.gz tar -zxvf pcsc-tools-1.4.22.tar.gz cd pcsc-tools-1.4.22 make && sudo make install && echo "install OK"
/etc/my.cnfの編集。
mysqldセクションとclientセクションにutf8を追記する。clientセクションが無ければ[client]を追加。
[mysqld] character-set-server=utf8 [client] default-character-set=utf8
必要なサービスを有効化する(再起動後に有効になる)
sudo systemctl enable httpd.service sudo systemctl enable mariadb.service
次に、Apacheユーザーでatコマンドと、予約録画の実行時にシェルが使えるように修正します(コメント欄からhamakiyoさんがご指摘してくださいました。)。
# ログインシェルをbashに変更する。 usermod -s /bin/bash apache # at.denyにapacheユーザーが含まれていたらその行を削除します。 sudo sed -i 's/apache//g' /etc/at.deny # apacheユーザーが削除されたことの結果確認 cat /etc/at.deny
ここまでで一旦再起動しておく。
再起動 sudo reboot
カードリーダが使えている事の確認。Japanese Chijou Digital B-CAS Card (pay TV)の表記が出ていればOK。確認出来たらCtrl+cで抜ける。
pcsc_scan # .... # Japanese Chijou Digital B-CAS Card (pay TV)
PT3ドライバの登録。
pt3ドライバは例によってm-tsudoさんの公開して下さっているものを使わせてもらいます。
cd ~/pt3_tmp git clone https://github.com/m-tsudo/pt3.git cd pt3/ sudo yum install kernel-devel make clean && make && sudo make install sudo reboot
pt2ドライバの場合(ご参考。pt2は余りが無かったので未検証。多分いけると思います。)
# PT3の場合にはこの内容は読み飛ばしてください。 modprobe.blacklist=earth-pt1 wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2 tar -xvlf tip.tar.bz2 cd pt1-hogehoge/driver make; make install; sudo modprobe pt1_drv sudo reboot
再起動後にpt3を認識していればOK。下記のように確認して下さい。
ls -la /dev/pt*video* # crw-rw-rw-. 1 root video 247, 0 7月 11 18:39 /dev/pt3video0 # crw-rw-rw-. 1 root video 247, 1 7月 11 18:39 /dev/pt3video1 # crw-rw-rw-. 1 root video 247, 2 7月 11 18:39 /dev/pt3video2 # crw-rw-rw-. 1 root video 247, 3 7月 11 18:39 /dev/pt3video3
recpt1のインストール
cd ~/pt3_tmp wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip unzip c44e16dbb0e2.zip cd pt1-c44e16dbb0e2/arib25 make clean && make && sudo make install echo '/usr/local/lib' | sudo tee -a /etc/ld.so.conf sudo ldconfig cd ~/pt3_tmp wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2 tar -jxvf tip.tar.bz2 cd pt1-c8688d7d6382/recpt1 # PT2/3混在環境の場合にはpt1_dev.hの/dev/pt1video**を # 必要個数、pt3video**のようにPT3用に書き換えます。 # PT1/PT2のみの場合には、pt1_dev.hの書き換えの必要は無い。 # pt3のみの環境の場合には、sedで一括置換でOKです。 sed -i 's/pt1video/pt3video/g' pt1_dev.h ./autogen.sh ./configure --enable-b25 && make && sudo make install recpt1 -version # 下記のように出力されればOK。 # recpt1 1.2.0 # recorder command for PT1/2 digital tuner. # 序に録画テストも行っておく cd /tmp recpt1 --b25 --strip 27 20 test.ts
DBの準備
mysql -uroot create database epgrec; grant all on epgrec.* to epgrec@localhost identified by 'yourpassword'; flush privileges;
epgrec UNA版の必要ソフトウェアのダウンロード
作者さんが公開してくださっているので、適当な何かの別館から次の2ファイルをダウンロードし、サーバの~/pt3_tmpにコピー(LinuxやMacからならscp、windowsからならwinscpを利用。pt3を利用しているCentOS上のブラウザを利用している場合には、単純にCentOSのブラウザを使ってダウンロードしてからコピーする。)して下さい。epgrecのダウンロード時にパスワードが必要ですが、作者さんのサイト適当な何かの別館をきちんと見ればわかります。
- epgdumpUNA130928.tar.gz
- epgrec_UNA_140427.tar.gz
epgdump(UNA版)のインストール
epgdump、epgrecはwinscp等で予め~/pt3_tmpディレクトリ以下にアップロードしておいてください。
cd ~/pt3_tmp tar -zxvf epgdumpUNA130928.tar.gz cd epgdump make && sudo make install cd /tmp # recpt1のテストで出力したTSファイルから番組表が取得できるか確認する。 epgdump 27 test.ts test.xml -xml # xmlファイルが出来ている事を確認しておく。 cat test.xml cd ~/pt3_tmp tar -zxvf epgrec_UNA_*.tar.gz # readmeが入っているので読む。PT3を使っているので、パッチはあてない方向で。 cat epgrec/readme.txt sudo mv epgrec /var/www/html sudo chown -R apache:apache /var/www/html/epgrec cd /var/www/html/epgrec sudo chmod 777 cache templates_c video thumbs settings sudo chmod 666 thumbs/index.html video/index.html sudo chmod 755 do-record.sh sudo chown apache:apache do-record.sh sudo vi config.php
config.phpは設定方法がきちんと書かれているので、コメントを読みながら調整します。今回は下記のようにしました。
define( "TUNER_UNIT1", 2 ); // 0 => 2に変更。PT3が2枚なら4。 define( "TUNER_UNIT2", 0 ); // 未使用との事なので、そのままにしておく define( "USE_RECPT1", TRUE ); // FALSE => TRUEに変更。 define( 'EXTRA_TUNERS', 0 ); // 2 ⇒0に変更。そのままにしておくと、ex_channel.phpが無くて真っ白画面になった。 // 下記、ファイルが無いのでEXTRA_TUNERSの設定を忘れるとここのincludeで失敗して真っ白い画面になるはず。 // うっかりはまったので症状と対処策を書いておきました。 // (もしかしたら作者さんのページで言及されているかもしれません。) // epgrecのウェブ画面で、地デジ、BS、CS、EXと、EXが増えていたので、それかな? // スカパー!プレミアム・チャンネルマップ if( EXTRA_TUNERS ){ check_ch_map( 'ex_channel.php' ); include_once( INSTALL_PATH.'/settings/ex_channel.php' ); }
ここから先はブラウザでアクセスしての設定です。
http://epgrecサーバのIPアドレス/epgrec
にアクセスします。
最初のページで、各種設定に問題が無ければ次に進めます。
必要箇所を設定して次へ。
こちらも必要箇所を設定して次へ。
一通り設定し終わったらEPG受信します。受信中はLinuxのコンソール上でps auxすると、recpt1が動いているはずです。20,30分待ってからepgrecのトップページにアクセスしてみましょう。
もしも、20分待って上手く動いていないようなら、設定ミス等が考えられます。コンソールで下記のように実行してみて、問題が無いか確認してみます。
cd /var/www/html/epgrec/ ./getepg.php
序に、DBへアクセスして、ログの確認方法。
mysql -uroot MariaDB [(none)]> show databases; # +--------------------+ # | Database | # +--------------------+ # | information_schema | # | epgrec | # | mysql | # | performance_schema | # | test | # +--------------------+ MariaDB [(none)]> use epgrec; # Reading table information for completion of table and column names # You can turn off this feature to get a quicker startup with -A # Database changed # MariaDB [epgrec]> show tables; # +-------------------------+ # | Tables_in_epgrec | # +-------------------------+ # | Recorder_categoryTbl | # | Recorder_channelTbl | # | Recorder_keywordTbl | # | Recorder_logTbl | # | Recorder_programTbl | # | Recorder_reserveTbl | # | Recorder_transcodeTbl | # | Recorder_transexpandTbl | # +-------------------------+ MariaDB [epgrec]> select * from Recorder_logTbl; # +----+---------------------+-------+-----------------------------------------+ # | id | logtime | level | message | # +----+---------------------+-------+-----------------------------------------+ # | 1 | 2012-07-11 22:44:51 | 0 | getepg:: 並列実行を使用します | # | 2 | 2012-07-11 23:04:33 | 0 | getepg:: 並列実行を使用します | # +----+---------------------+-------+-----------------------------------------+ # 2 rows in set (0.00 sec) # 上記を見ると、ログが書き込まれているので、並列実行は問題なく実行されている模様。
上記まででインストール完了です。番組表も普通に受信でき、録画もできました。
個人的にはepgrec UNA版のEXと言う箇所が気になっています。PLEX社製 PCI-Express対応 シングルサテライトチューナー PX-TBS6922が使えるって事でしょうか?ボードが無いので取りあえずEXに関しては様子見です。
前略、
HPを参考にPT3の設定を行っていますが、最後のところでうまくいきません。
以下の前まではうまくいくのですが、
「ここから先はブラウザでアクセスしての設定です。
http://epgrecサーバのIPアドレス/epgrec
にアクセスします。」
でアクセスすると画面が表示されません。
そこで以下のチェックを行うと、下のようにデータベースにアクセスできませんとのメッセージが表示されます。
DB関係の設定がうまくいっていないとは思うのですが、
初心者のためよくわかりません。
よろしければ何かアドバイスをいただけないでしょうか?
[hamakiyo@localhost ~]$ cd /var/www/epgrec/
[hamakiyo@localhost epgrec]$ ./getepg.php
PHP Fatal error: Uncaught exception ‘Exception’ with message ‘construct:データベースに接続できない’ in /var/www/epgrec/DBRecord.class.php:24
Stack trace:
#0 /var/www/epgrec/DBRecord.class.php(219): DBRecord->__construct(‘programTbl’)
#1 /var/www/epgrec/storeProgram.inc.php(15): DBRecord::createRecords(‘programTbl’, ‘WHERE endtime <…')
#2 /var/www/epgrec/getepg.php(50): garbageClean()
#3 {main}
thrown in /var/www/epgrec/DBRecord.class.php on line 24
DBに接続できないエラーの様ですので、まずはDBに接続できるかを試すのが良いと思います。
セットアップ途中でDB接続ユーザーを下記のように設定したと思います。
grant all on epgrec.* to epgrec@localhost identified by ‘yourpassword’;
なので、まずは、上記で作成したユーザーでDBにアクセスできるかを確認します。
mysql -uepgrec -p
# パスワードを聞かれるので、identified by で指定したものを答える。
もしもDBに接続出来る様なら、次にDB接続用のアカウント情報を確認します。
/var/www/epgrec/settings/config.xmlの中で
<db_host>localhost</db_host><db_name>epgrec</db_name><db_user>epgrec</db_user><db_pass>yourpassword</db_pass><tbl_prefix>Recorder_</tbl_prefix>
と書かれている場所が、一番最初にepgrecにアクセスした時に行ったセットアップ結果です。
db_userと、db_pass、db_nameは意図したとおりの情報が入っていますでしょうか?
そうでない場合(デフォルト値が入っていたりする場合)は、単純にパーミッションの設定が間違っている可能性もあります。
早速の返信ありがとうございます。
DBにはアクセスできました。がconfig.xmlには「デフォルト値」が入っていました。「単純にパーミッションの設定が間違っている可能性もあります。」とのご指摘ですが、どのように変更したらよいのでしょうか?
下記で対応できると思います。
sudo chown -R apache:apache /var/www/epgrec
上記でダメなら、
sudo chmod -R 777 /var/www/epgrec
で試すのが良いかと。
# 動作確認後、パーミッションは適宜勉強して設定してください。
# セキュリティ上好ましくないけど動けばOKと言う事ならそのままでも良いかも。
後は、再度下記にアクセスして、設定を進めれば動作確認が取れたような覚えがあります。
http://epgrecサーバのIPアドレス/epgrec/install/step1.php
なお、上記の手順を実施するとDBに重複レコードが出来てしまったような記憶があるので、
同じチャンネルが2個、3個と登録されてしまうようになった場合には、
DBのテーブルを一度削除してから、上記手順を実施すれば良いかと。
DBの削除と再設定はこんな感じで。
mysql -uroot
drop database epgrec;
create database epgrec;
# grantは再度やらなくても大丈夫だと思います。
# grant all on epgrec.* to epgrec@localhost identified by ‘yourpassword’;
# flush privileges;
お世話になっております。
一応、アドバイスのようにやってみたのですが、だめでした。
1 DBにはアクセスできました。(設定したPWで)
2 /var/www/epgrec/settings/config.xmlには初期値が入って いたので直しました。
3 sudo chown -R apache:apache /var/www/epgrec
sudo chmod -R 777 /var/www/epgrec 両方やりました。
4 http://epgrecサーバのIPアドレス/epgrecにアクセスすると
Not Found
The requested URL /epgrec/ was not found on this server.の表示になります。
5 以下、参考になるかもしれないので一応、入れておきます。
[hamakiyo@localhost ~]$ cd /var/www/epgrec/
[hamakiyo@localhost epgrec]$ ./getepg.php
PHP Fatal error: Uncaught exception ‘Exception’ with message ‘__query:DBクエリ失敗:SELECT * FROM Recorder_programTbl WHERE endtime __query(‘SELECT * FROM R…’)
#1 /var/www/epgrec/storeProgram.inc.php(15): DBRecord::createRecords(‘programTbl’, ‘WHERE endtime use epgrec;
Database changed
MariaDB [epgrec]> show tables;
Empty set (0.00 sec)
MariaDB [epgrec]>
今日centos7の再インストールからやり直したのですが
うまくいきませんでした。
単純にapacheの設定、もしくは配置先のディレクトリの問題に見受けられます。
./getepg.phpを実行してテーブルが無いと言われるのは、初期セットアップが出来ていないので、対象テーブルが無いだけでしょう。
epgrecディレクトリを/var/www/html以下に置き直してから、再度ブラウザでアクセスしてみて下さい。
↓こんな感じで。
sudo mv /var/www/epgrec /var/www/html/
上記で上手くいかない場合には、切り分けを行います。
echo “test” >> /var/www/html/epgrec/index.html
として、ブラウザからindex.htmlを表示できるかも確認してみて、
単純なapacheのディレクトリ指定のミスかどうかを確認してみて下さい。
大変ご迷惑をおかけしております。
sudo mv /var/www/epgrec /var/www/html/を行ったところ
ブラウザでアクセスすると
Forbidden
You don’t have permission to access /epgrec/ on this server.
メッセージのメッセージになりました。
echo “test” >> /var/www/html/epgrec/index.html
としたとことやはり、ブラウザ上では
You don’t have permission to access /epgrec/ index.html on this server.となりました。
そこで
sudo chown -R apache:apache /var/www/html/epgrec
sudo chmod -R 777 /var/www/html/epgrec
を行いましたが、同様の
Forbidden
You don’t have permission to access /epgrec/ on this server.のメッセージのままです。あと一息のように思うのですが?
なお、HPの「epgdump(UNA版)のインストール」の説明のところの
「# readmeが入っているので読む。PT3を使っているので、パッチはあてない方向で。
cat epgrec/readme.txt
sudo mv epgrec /var/www/
sudo chown -R apache:apache /var/www/epgrec
cd /var/www/epgrec」この部分で/htmlが抜けているということでしょうか?
大変ご迷惑をおかけしますが、もう少し、教えていただけないでしょうか?よろしくお願いします。
追伸
SElinuxを無効にすると
「/etc/selinux/configの設定を書き換えて
SELINUX=disabled」にすると
echo “test” >> /var/www/html/epgrec/index.html
として、ブラウザからindex.htmlがみることができました。(testの表示)
しかし、
http://epgrecサーバのIPアドレス/epgrec/index.phpとしても何も表示されず、止まってしまいます。
ご迷惑をおかけしております。
何とか、番組表の表示までは成功しました。
1 SElinuxを無効にする
2 パーミッションの設定をかえる
sudo chown -R apache:apache /var/www/html/epgrec
sudo chmod -R 777 /var/www/html/epgrec
3 データベースを作り直す
mysql -uroot
drop database epgrec;
create database epgrec;
4 /var/www/epgrec/settings/config.xmlの内容を正しく書き換える。
で何とか番組表の表示まで行きました。
しかし、ざんなんなことに録画ができません。
予約まではいきますが、
「番組予約一覧」のページに
Notice: Undefined variable: RECORD_MODE in /var/www/html/epgrec/reclib.php on line 528のメッセージが出ます。
また、当然 /videoに中にファイルはなく、
録画予約時間が過ぎても、番組欄の予約した番組に出る赤い枠が消えません。一応、「録画済み一覧」の中に録画された番組名は表示されはするのですが、消えていない録画時間が過ぎても「番組予約一覧」の番組が消えませんので削除すると「録画済み一覧」の中に表示されていた番組名も消えてしまいます。当然動作ログのなかにも録画開始になっていません。
まことに申し訳ありません。できましたら、アドバイスをお願いします。
ほんとうにご迷惑をおかけしました。
何とか録画まで成功しました。
以下の設定を行いました。
「atコマンドの導入とapacheユーザの設定
予約録画のためatコマンドをインストールする。
# yum -y install at
atコマンドを利用不可のユーザにapacheユーザが含まれていないことを確認する。
# cat /etc/at.deny
apacheユーザがatコマンドを実行するので、ログイン可能なユーザに変更する。
# cat /etc/passwd | grep apache
apache:x:48:48:Apache:/var/www:/sbin/nologin
↑デフォルトでは/sbin/nologinに設定されているので、ログイン不可。
# usermod -s /bin/bash apache ←ログインシェルを/bin/bashに設定してログイン可能にする。
# cat /etc/passwd | grep apache
apache:x:48:48:Apache:/var/www:/bin/bash
↑ログインシェルが変更されていることを確認。」
以上の設定で無事、録画まで成功しました。
本当にお世話になりました。まったくの初心者で失礼な質問の多かったと思います。お許し下さい。ありがとうございました。
今後もHP楽しみに拝見させていただきます。
(追伸)
HPの中で
recpt1のインストール
cd ~/pt3_tmp
wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
unzip c44e16dbb0e2.zip
cd pt1-c44e16dbb0e2/arib25
make clean && make && sudo make install
echo ‘/usr/local/lib’ | sudo tee -a /etc/ld.so.conf
sudo ldconfiglは「ldconfig」ではないでしょうか?
また、まったくの初心者としては
「epgrec UNA版の必要ソフトウェアのダウンロード
作者さんが公開してくださっているので、適当な何かの別館から次の2ファイルをダウンロードし、サーバの~/pt3_tmpにコピー(Linuxホストからはscp、windowsからならwinscpを利用)して下さい。」
のところがよくわかりませんでした。scp?の使い方?
自分は、cpコマンドで行いました。
済みません。ど素人の感想です。
hamakiyoさん
インストール成功のご連絡と、当サイト内の解説不備のご指摘、ありがとうございます。
丁度、投稿内容がいけないのかと、新規インストールから検証している最中に成功連絡を頂けたので非常に助かりました。
また、解説が不親切な点(scpやat)については修正しました。
—
正直な感想を申し上げますと、
敬服するほどの集中力と根気で1つの事をやり遂げてしまった事と、
都度正確なご連絡を頂いていたことに尊敬の念を抱きました。
たまには興味深い投稿をするつもりですので、
また、お時間がある時にでも当サイトをのぞいていただけると幸いです。
こちらやコメントを参考にしてみましたが、うまくできませんでした。
recpt1のテストの段階でNGです。
10分録画とかしても、1分かそこらで録画が終わります。
どうも、PT3のドライバから何かのタイミングでデータが落ちてこなくなるみたいです。
C/Nは正常みたいなので、電波はあるみたいなのですが・・・
短い録画はできるようでEPG取得はできます。
何かのバージョン組み合わせでしょうか。。。
心当たりとかございますか?
EPG取得は地デジ:60秒~衛星:180秒程度です。
なので、地デジのみを対象にしている場合には、1分かそこらに丁度収まってしまって上手くいっているのではないでしょうか?
まずは、切り分けが必要かと思います。
recpt1のコマンドの実行時に、下記の20と書いてある場所が秒数なので、そこの値を20⇒80、120、200、300等と、順次大きくしていき、どの程度の秒数でダメになるのかを確認してみてはどうでしょう?
recpt1 –b25 –strip 27 20 test.ts
また、気になる箇所を列記しておきます。
・pt3のカードの回路の更新は終わっているか
・同軸ケーブルの接続は問題ないか
・同軸ケーブルを複数分配して、信号が弱くなっていないか
・カードリーダは実績のあるカードリーダか
・同軸線と電源線を並行して設置していないか(電源線からノイズを拾うのでNG)
・PT3に繋がっているケーブルをTVに挿した場合、受信に問題は無いか
・メモリ容量やHDDの空き容量、HDDの速度に問題は無いか
返信ありがとうございます。
環境の具合かもしれないので、他のOS(Ubuntuとか)とか試してみようと思います。
お騒がせしました。
参考までに、回路は最新版、Windowsでは問題なく動いて受信できる、カードリーダーは鉄板NTT-Comのです。