Arch Linuxでchinachu

Arch Linux上でPT3+chinachuで録画鯖を作ります。

録画鯖を構築するとしたら、MythTV、epgrec、chinachuのいずれかになると思いますが、

MythTVはGUI必須なので外部からの設定が面倒、番組表関連・BSCSがうまくいかない、

epgrecはかなりごちゃごちゃしているのと、phpに任せるのは不安、

ということで、chinachuで構築することにしました。



Arch LinuxではAURにPT3ドライバとchinachuがあるので簡単にインストールすることができました。



Arch Linux標準のカーネルではPT3のDVBドライバが有効になっています。

DVBドライバからfuse_b25でデコードしてrecdvbを使いたいところですが、recdvbではBSCSが受信できないらしいので普通のドライバを入れます。

chinachuは録画ソフトを呼び出すだけなので、VLCなどのDVB対応ソフトなら使えるかもしれないです。




今回はPT3ドライバにpt3_drv-dkms、デコードにarib25、録画にrecpt1を使うことにします。








PT3DVBドライバの無効化
$ sudo modprobe -r earth-pt3
$ sudo echo "blacklist earth-pt3" >> /etc/modprobe.d/earth-pt3.conf





PT3ドライバのインストール
$ yaourt -S pt3_drv-dkms-git
$ sudo modprobe pt3_drv   //PT3ドライバの有効化

/dev/にpt3video*があるか確認
$ ls /dev | grep pt3video





カードリーダー用のソフトのインストール
$ yaourt -S ccid pcsclite





arib25のインストール
$ cd /tmp
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.tar.bz2
$ tar xf c44e16dbb0e2.tar.bz2
$ cd pt1-c44e16dbb0e2/arib25/src
$ make
$ sudo make install





recpt1のインストール
$ cd /tmp
$ wget http://hg.honeyplanet.jp/pt1/archive/tip.zip
$ unzip tip.zip
$ cd pt1-c8688d7d6382/recpt1
$ vim pt1_dev.h    //pt3video0,1をbsdevに pt3video2,3をisdb_t_devに追加
$ ./autogen.sh --enable-b25
$ ./configure
$ make
$ sudo make install





chinachuのインストール
$ yaourt -S chinachu-git



スペックに余裕のあるPCではそのままインストールできると思いますが、私の環境では/tmpがいっぱいになってビルドできませんでした。

/tmpをtmpfsからHDD領域に変更するか、yaourtのビルドディレクトリを変更するか、RAM容量に余裕のあるPCでビルドする必要があります。

環境はできるだけ変更したくないので、メインPCのほうでビルドしてパッケージを持ってきてインストールしました。

メインPCでchinachuをビルド
$ cd ~
$ yaourt -G chinachu-git    //ソースのダウンロード
$ cd chinachu-git
$ makepkg -s    //ビルド済みのchinachu-git-<バージョン>-x86_64.pkg.tar.xz が作成されます。



録画鯖にビルド済みchinachuを持ってきてインストール
$ pacman -U  chinachu-git-<バージョン>-x86_64.pkg.tar.xz





chinachuサービスの起動、有効化

AURで公開されているchinachuはsystemd対応済みなのでそのままsystemctlします。
$ sudo systemctl start chinachu-wui chinachu-operator
$ sudo systemctl enable chinachu-wui chinachu-operator





chinachuインストール時にユーザchinachu:chinachuが作成されますが、/dev/pt3video*がvideoグループに属しているユーザでないと利用できないのでvideoグループに追加します。
$ sudo gpasswd -a chinachu video





chinachuの設定



ブラウザから http://<録画鯖のIPv4アドレス>:10772/ にアクセスします。(Microsoft Edgeからだとエラーが出て使えませんでした。)

初期設定ではユーザ名:akari、パスワード:bakuhatsu です。

右上の設定をクリックすると設定ファイルの編集画面に入ります。

設定項目は

recordedDir : 録画ファイルの保存先

temporaryDir : 一時ファイル保存先

wuiUsers : chinachuログインユーザ名:パスワード

recordedFormat : 録画ファイル名

tuners : 録画ソフトの呼び出しコマンド。PT3ではそのままで大丈夫なので最後のKEIAN KTV-FSUSB2の設定項目を削除します。

channels : チャンネルを設定します。




チャンネルは、チャンネルを変えて順番にrecpt1を起動して確認すればいいのですが、面倒なのでチャンネルスキャンをしてくれるシェルスクリプトを作りました。



地上波用
#!/usr/bin/bash
if [ -e chscangr.ts ]; then
        rm chscangr.ts
fi
if [ -e chscangr.txt ]; then
        rm chscangr.txt
fi
touch chscangr.txt
declare -i ch
ch=13
while [ $ch -le 62 ]; do
        echo "ch:$ch"
        recpt1 --b25 --strip $ch 5 chscangr.ts 2>/dev/null
        if [ -e chscangr.ts ]; then
                echo $ch >> chscangr.txt
                rm chscangr.ts
        fi
        ch=$ch+1
done



CATV用
#!/usr/bin/bash
if [ -e chscanc.ts ]; then
        rm chscanc.ts
fi
if [ -e chscanc.txt ]; then
        rm chscanc.txt
fi
touch chscanc.txt
declare -i ch
ch=13
while [ $ch -le 63 ]; do
        echo "ch:C$ch"
        recpt1 --b25 --strip C$ch 5 chscanc.ts 2>/dev/null
        if [ -e chscanc.ts ]; then
                echo $ch >> chscanc.txt
                rm chscanc.ts
        fi
        ch=$ch+1
done



BS用
#!/usr/bin/bash
if [ -e chscanbs.ts ]; then
        rm chscanbs.ts
fi
if [ -e chscanbs.txt ]; then
        rm chscanbs.txt
fi
touch chscanbs.txt
declare -i ch
ch=100
while [ $ch -le 999 ]; do
        echo "ch:$ch"
        recpt1 --b25 --strip $ch 5 chscanbs.ts 2>/dev/null
        if [ -e chscanbs.ts ]
        then
                echo $ch >> chscanbs.txt
                rm chscanbs.ts
        fi
        ch=$ch+1
done



110度CS用
#!/usr/bin/bash
if [ -e chscancs.ts ]; then
        rm chscancs.ts
fi
if [ -e chscancs.txt ]; then
        rm chscancs.txt
fi
touch chscancs.txt
declare -i ch
ch=1
while [ $ch -le 24 ]; do
        declare -i sid
        sid=1
        while [ $sid -le 999 ]; do
                echo "ch:CS$ch sid:$sid"
                recpt1 --b25 --strip --sid $sid CS$ch 5 chscancs.ts 2>/dev/null
                if [ -e chscancs.ts ]; then
                        echo $ch >> chscancs.txt
                        rm chscancs.ts
                fi
                sid=$sid+1
        done
        ch=$ch+1
done



チャンネル番号をchinachuのchannelsに書き込んで完成です。








今回、ドライバをカーネルモジュールとしてインストールしました。

カーネルモジュールは /usr/lib/modules/<カーネルバージョン>/kernel/drivers/video/ 以下に作成され、そのバージョンのLinuxカーネルでないと読み込んでくれません。

Arch Linuxはカーネルの更新が頻繁にあるので厄介です。

解決策として、AURのPT3のカーネルモジュールはDKMS関連も一緒に有効化してくれるので、systemdからdkmsを有効化することで、カーネル更新後に自動で再生成してくれます。

DKMSのデメリットとして、DKMSからカーネルモジュールを再生成するとインストールディレクトリが変わってしまうので、pacmanからPT3ドライバをアンインストールできなくなるという問題があります。



DKMSを使用し、PT3ドライバ をアンインストールしたいときは、pacmanからアンインストールし、
$ sudo pacman -R pt3_drv-dkms-git

その後に手動でカーネルモジュールを削除する必要があります。
$ sudo rm /usr/lib/modules/<現在のカーネルバージョン>/kernel/drivers/video/pt3_drv.ko



DKMSを使わない場合はカーネルの更新ごとに、
$ yaourt -S pt3_drv-dkms-git

を実行し、PT3ドライバの再インストールが必要です。



chinachu Airでは録画ソフトも独自のものになり、DVBデバイスにも対応するみたいなのでfuse_b25でいけるかもしれないです。

コメント

このブログの人気の投稿

fontconfigの設定

VLCでBlu-rayを再生

UEFIのブートオーダーを一時的に変更する