2015年1月28日水曜日

CentOS 7環境でPT3、recpt1、epgrecで録画鯖を立てる

CentOS 7環境で録画鯖を立てる。

CentOS 7をGnome環境で標準インストール。
カードリーダー:SCR3310-NTTCom
PT3を使用し、録画はrecpt1、録画予約にはepgrecを使用。
UNA版、STZ版共にうまく動作せず、更新が多く情報が少ないため本家のrecpt1、epgrecを使用。

参考
CentOS7 PT3の設定 - わすれないうちにメモしよう
CentOS7にepgrec(UNA)+PT3環境を構築する。 - UbuntuによるEco Linuxサーバ構築記


ビルド環境のインストール。
# yum -y install kernel-devel-`uname -r`
# yum -y install git unzip bzip2 at
# yum -y install gcc gcc-c++ kernel-devel make autogen automake patch perl-ExtUtils-MakeMaker

カードリーダソフトウェアのインストール。
# yum -y install ccid pcsc-lite pcsc-lite-devel pcsc-lite-libs

# cd /usr/local/src
# 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
# make install

# cd /usr/local/src
# wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.4.23.tar.gz
# tar zvxf pcsc-tools-1.4.23.tar.gz
# cd pcsc-tools-1.4.23
# make
# make install

# systemctl enable pcscd
# systemctl start pcscd
# pcsc_scan


arib25のインストール
makeに失敗する場合はカードリーダー周りを再インストール
# yum install -y ld-linux.so.2

# cd /usr/local/src
# wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
# unzip c44e16dbb0e2.zip
# cd pt1-c44e16dbb0e2/arib25
# make
# make install


PT3ドライバのインストール。再起動で有効化
# cd /usr/local/src
# echo "blacklist earth-pt1" >> /etc/modprobe.d/blacklist.conf
# git clone https://github.com/m-tsudo/pt3.git
# cd pt3/
# git log
# make
# make install

# reboot


recpt1のインストール。
下記URLからrecpt1のパッチ済みのファイル群をダウンロード、/usr/local/src/ あたりに展開する
http://sourceforge.jp/projects/epgrec/downloads/53384/pt1-drv_20111001.tar.gz/

# cd /usr/local/src
# tar zvxf pt1-drv_20111001.tar.gz

# cd pt1-7662d0ecd74b/recpt1
# cp ../patch/bs.patch .
# patch -p0 < bs.patch

# vi pt1_dev.h
※「pt1video」を「pt3video」に書き換える

# ./configure --enable-b25
# make clean
# make
# make install
/usr/local/binにrecpt1とrecpt1ctlが作成される。

epgdumpr2のインストール。録画したtsファイルからEPGを取り出します。
# cd /usr/local/src
# tar zvxf epgdumpr2_20111001.tar.gz
# cd epgdumpr2
# touch * (そのままでは make できないのでおまじない)
# make clean
# make
# cp epgdump /usr/local/bin


Apache、MariaDBなどのインストール
# yum -y install httpd php php-cli php-sql php-mysql php-mbstring php-process mysql-server
# vi /etc/php.ini
date.timezone = Asia/Tokyo
# systemctl start httpd mariadb
# systemctl enable httpd mariadb

# mysql
mysql> grant all privileges on epgrec.*to username@localhost identified by 'password';
# mysql -u username -p
mysql> CREATE DATABASE epgrec;


epgrecのインストール
# usermod -s /bin/bash apache
# /etc/init.d/atd start
# chkconfig atd on

# cd /var/www/html
# git clone git://git.sourceforge.jp/gitroot/epgrec/epgrec.git
# cd epgrec
# cp config.php.sample config.php

# vi config.php
※受信地域に合わせて $GR_CHANNEL_MAP を修正する
http://www.maspro.co.jp/contact/bro/bro_ch.html
"識別文字列" => "チャンネル番号"

# cp do-record.sh.pt1 do-record.sh

# chown -R apache.apache /var/www/html/epgrec
# chmod -R 777 /var/www/html/epgrec

設定
http://"サーバのIP"/epgrec/index.php

cronでEPG取得の設定
# vi /etc/cron.d/getepg
29 */2 * * *   apache   /var/www/html/epgrec/getepg.php


UDPストリーミングでリアルタイム視聴する
$ recpt1 --udp --addr クライアントのIP --port ポート --b25 --strip チャンネル番号 - /dev/null

クライアントPCからVLCなどで udp://サーバのIP@:ポート で視聴
Ctrl+で終了するか$ ps auxでPIDを確認してkill -9 PIDで終了。 


わざわざコマンドを打ち込んでチャンネル変更するのも面倒なのでチャンネル変更用のPHPファイルを作る
$ vi /var/www/html/epgrec/rtplay.php

<?php
if(isset($_POST['ch'])){
$descriptorspec = array();
$pipes = null;
$ch = $_POST['ch'];
$port = $_POST['port'];
$addr = $_POST['ip'];
$cmd = "recpt1 --udp --addr $addr --port $port --b25 --strip $ch - /dev/null &";
$process = proc_open($cmd,$descriptorspec,$pipes);
$status = proc_get_status($process);
};
if(isset($_POST['exit'])){
system("kill -9 {$_POST['exit']}",$out);
};
?>
<html>
<h3>recpt1操作</h3>
<form method="post" action="rtplay.php">
<table>
<tr>
<td>チャンネル</td>
<td>
<SELECT size="3" name="ch">
<OPTION value="14" selected>テレ玉1</OPTION>
<OPTION value="30">チバテレ1</OPTION>
<OPTION value="32">J:COMチャンネル</OPTION>
<OPTION value="18">tvk1</OPTION>
<OPTION value="16">TOKYO MX1</OPTION>
<OPTION value="13">J:COMテレビ</OPTION>
<OPTION value="27">NHK総合1・東京</OPTION>
<OPTION value="26">NHKEテレ1東京</OPTION>
<OPTION value="25">日テレ1</OPTION>
<OPTION value="22">TBS1</OPTION>
<OPTION value="21">フジテレビ</OPTION>
<OPTION value="24">テレビ朝日</OPTION>
<OPTION value="23">テレビ東京1</OPTION>
<OPTION value="28">放送大学1</OPTION>
</SELECT>
</td>
</tr>
<tr>
<td>ポート</td>
<td>
<SELECT size="3" name="port">
<OPTION value="1234" selected>1234</OPTION>
<OPTION value="1235">1235</OPTION>
<OPTION value="1236">1236</OPTION>
<OPTION value="1237">1237</OPTION>
</SELECT>
</td>
</tr>
<tr>
<td>IPアドレス</td>
<td>
<input type="text" name="ip" value="192.168.0.2">
</td>
</tr>
<tr>
<td><input type="submit" value="起動"></td>
</tr>
</table>
</form>
<p><?php
if(isset($_POST['ch'])){
echo $cmd;
};
?></p>
<form method="post" action="rtplay.php">
<input type="text" name="exit" value="<?php echo $status['pid']+1; ?>">
<input type="submit" value="終了">
</form>
</html>
recpt1の起動とkillするだけのガバガバPHP。エラーとか出さないために極力簡単に書いた。recpt1ctlでチャンネル変更とかできるっぽいけどとりあえず視聴できればよし。

ps aux | grepとかで起動中のプロセス確認してチューナー取り合いしないようにしたり録画中だったら触らないようにとかできそうだけどそこまでするなら改変版recpt1使ったほうが楽そう。

2015年1月17日土曜日

CentOS 7でNTFSを扱う

CentOS 7では標準でNTFSが扱えないので扱えるようにする。
あらかじめEPELを導入しておく。

NTFSでフォーマットするためにntfsprogsをインストール
# yum -y install ntfsprogs
dev/sdc1をフォーマット。-Q指定でクイックフォーマット
 # /sbin/mkfs.ntfs -Q /dev/sdc1
 NTFSをマウントするためにntfs-3gをインストール
# yum -y install ntfs-3g
/dev/sdc1を/mnt/sdc1にマウント
# mkdir /mnt/sdc1
# mount -t ntfs /dev/sdc1 /mnt/sdc1
アンマウント
# umount /dev/sdc1 
起動時に自動でマウントする
# vi /etc/fstab

/dev/sdc1 /mnt/sdc1    ntfs    defaults    0    0
 

CentOS 7でPPPoE接続

CentOS 7でFTTHに直接接続するためにPPPoEで接続する。

rp-pppoeのインストール
# yum install -y rp-pppoe

設定する
# pppoe-setup

LOGIN NAME: プロバイダから通知されたPPPoE ID
INTERFACE: 使用するインターフェースを入力(enp2s0)
Enter the demand value (default no): 自動で切断するかどうか
DNS: DNSサーバアドレス(自動取得する場合はserverと入力)
Please enter your Password: パスワードを入力
Please re-enter your Password: もう一度入力
USERCTRL 一般ユーザーに設定を許可するか
FIREWALLING firewalldで設定するので 0
最後に y で保存
PPPoE接続開始

# pppoe-start

ppp0がインターネット接続される。

CentOS 7でルータを作る

CentOS 7での情報が少なかったのでメモ

NICを増設し、enp2s0をWAN側、enp3s1をLAN側とする。
WAN側はPPPOE接続を使用する
DHCPサーバを起動し、LAN側だけにIPを配布する。
WAN側からLAN側にIPマスカレードさせるという流れ。

dhcpdのインストール
# yum -y install dhcp
 設定ファイルの編集
# vi /etc/dhcp/dhcpd.conf

default-lease-time    600;
max-lease-time    7200;
ddns-update-style    interim;
#authoritative;
log-facility local7;
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = option vendor-class-identifier;
subnet 192.168.0.0 netmask 255.255.255.0 {
    option routers    192.168.0.1;
    option subnet-mask    255.255.255.0;
    range dynamic-bootp    192.168.0.10 192.168.0.100;
    option domain-name-servers    8.8.8.8;
    option broadcast-address    192.168.0.255;
    interface    enp3s1;
}

enp3s1にだけdhcpdを有効にしたいので変更
# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
# vi /etc/systemd/system/dhcpd.service
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid enp3s1
有効化する
# systemctl daemon-reload
# systemctl restart dhcpd.service

有効化の際、ケーブルが接続されていないと起動しなかった。

PPPoEで接続
http://penipeni1.blogspot.jp/2015/01/centos-7pppoe.html


IPマスカレードの設定。CentOS 7からはiptablesではなくfirewalldで設定する。GUIが用意されているのでそれを使う。
# firewall-config

設定: 実行時
externalゾーンの<interface>タブにenp3s1を追加
マスカレーディングタブのマスカレードゾーンにチェック
internalゾーンの<interface>タブにppp0を追加
設定: 永続にしてもう一度設定する
リアルタイムで設定が変更されるのでエラーがなければクライアントから接続されるはず。

CentOS 7でGW-USMicro300を使う

CentOS 7でGW-USMicro300を接続したけどそのままでは認識されなかった。

GW-USMicro300がZorin OS 6.1 lite(Ubuntu 12.04)で使えるようになった | Bubble, bubble, toil and cuddle !!! - 楽天ブログ

こちらを参考にしたらうまくいった。

lsusbでデバイスが認識されているかどうか調べる
# lsusb
Bus 001 Device 002: 2019:ab29 PLANEX GW-USMicro300
認識されており、IDが 2019:ab29 ということが分かった。

/etc/modprobe.d/us-micro300.conf を作成し、以下を記述。
# vi /etc/modprobe.d/us-micro300.conf

install rt2800usb /sbin/modprobe --ignore-install rt2800usb; /bin/echo "2019 ab29" > /sys/bus/usb/drivers/rt2800usb/new_id
 記述したら # modprobe rt2800usb で認識する。
# modprobe rt2800usb

システム起動時に認識させるには/etc/modulesに記述するが、CentOS 7では違い、/etc/modules-load.d/にconfファイルを作成する。
# vi /etc/modules-load.d/rt2800usb.conf

rt2800usb

これでシステム起動時に自動的に認識される。

Vostro220sを買った

中古でドライブ故障のVostro 220sを送料込みで3000円で買えた





CentOS 7入れたけど特に問題なし