DVBデバイスは処理的に重たいので、低スペックな環境でも使いやすいchardev版ドライバでPT2およびPT1を使う。
pt1_drvのインストール
pt1_drvはLinuxカーネルが更新される度に再ビルドが必要になるので、これを自動的に行うdkmsとビルドに必要なlinux-headers、pt1_drvのソースを取得するのに必要なhgコマンドを含むmercurialをインストールして、pt1_drvのソースを取得、pt1_drvのソースのリビジョンを取得、pt1_drvのソースへのバグ対策を行い、pt1_drvのソースをdkmsで扱うためのディレクトリにコピー、pt1_drvのdkms設定を作成、dkmsにpt1_drvを登録、dkmsでpt1_drvをビルド、dkmsでpt1_drvのインストールを行う。
sudo apt-get install -y mercurial dkms linux-headers-`uname -r` hg clone http://hg.honeyplanet.jp/pt1 cd pt1 REVISION=`hg log -r tip | sed -n -e '1s/.*://p'` cd .. sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/mutex_unlock(&channel->ptr->lock);/\/\* mutex_unlock(\&channel->ptr->lock); \*\//' pt1/driver/pt1_pci.c sed -i -e '/^static int pt1_release(struct inode \*inode, struct file \*file)$/,/^}$/s/^\treturn 0;$/\tmutex_unlock(\&channel->ptr->lock);\n\n\treturn 0;/' pt1/driver/pt1_pci.c sudo cp -r pt1/driver/ /usr/src/pt1_drv-$REVISION/ cat << EOT | sudo tee /usr/src/pt1_drv-$REVISION/dkms.conf PACKAGE_NAME="pt1_drv" PACKAGE_VERSION="$REVISION" MAKE[0]="make KVER=\${kernelver}" CLEAN[0]="make clean" BUILT_MODULE_NAME[0]="pt1_drv" DEST_MODULE_LOCATION[0]="/kernel/drivers/video" AUTOINSTALL="YES" EOT sudo dkms add -m pt1_drv -v $REVISION sudo dkms build -m pt1_drv -v $REVISION sudo dkms install -m pt1_drv -v $REVISION
PT2およびPT1のDVB版ドライバであるearth-pt1が起動時に読み込まれないように設定を追加して、再起動する。
echo 'blacklist earth-pt1' | sudo tee -a /etc/modprobe.d/blacklist.conf sudo reboot
libarib25のインストール
pt1_drvで使う録画コマンドでスクランブル解除を行うためのライブラリであるlibarib25は、pt1_drvのソースの古いリビジョンにしか含まれていないので、ソースを古いリビジョンに戻した後、最新のリビジョンに更新して取得する。取得後、ビルドとインストールを行う。ソース取得やビルドおよび動作に必要なmercurial、make、gcc、pkg-config、libpcsclite-dev、pcscdは予めインストールしておく。
sudo apt-get install -y mercurial make gcc pkg-config libpcsclite-dev pcscd cd pt1 hg revert -r c44e16dbb0e2 --all hg revert -r tip --all cd arib25/src make sudo make install cd ../../..
recpt1のインストール
pt1_drvで使う録画コマンドのrecpt1はpt1_drvのソースに含まれているので、autogen後にconfigureでlibarib25を使う指定を行い、ビルドとインストールを行う。ビルドに必要なmake、gcc、autoconf、automakeは予めインストールしておく。
sudo apt-get install -y make gcc autoconf automake cd pt1/recpt1 ./autogen.sh ./configure --enable-b25 make sudo make install cd ../..
Mirakurunのチューナー設定
name:でチューナー名を任意に設定し、types:で地デジが受信できるならGR、BSが受信できるならBS、110度CSが受信できるならCSを設定、command:で録画コマンドのrecpt1に--b25オプションでスクランブル解除を指定、--deviceで/dev/pt1video0から始まるチューナーのデバイスファイルを指定、アンテナへの電源供給が必要な場合はBS/110度CSの場合に「--lnb 15」を加えると良い、最後にチャンネルを指定、続く「-」は録画秒数を無制限にする指定、末尾の「-」は録画先を標準出力にする指定。必要に応じて--b25でスクランブル解除せずに、decoder:でスクランブル解除コマンドを設定しても良い。
下記はPT2を1枚使う例。pt1_drvのデバイスファイルの番号はBS/110度CSが2チューナー続いた後に地デジが2チューナー続くようになっている。
cat << 'EOT' | sudo tee /usr/local/etc/mirakurun/tuners.yml - name: PT2-S1 types: - BS - CS command: recpt1 --b25 --device /dev/pt1video0 <channel> - - - name: PT2-S2 types: - BS - CS command: recpt1 --b25 --device /dev/pt1video1 <channel> - - - name: PT2-T1 types: - GR command: recpt1 --b25 --device /dev/pt1video2 <channel> - - - name: PT2-T2 types: - GR command: recpt1 --b25 --device /dev/pt1video3 <channel> - - EOT
スクランブル解除コマンドが必要な場合、libarib25のb25コマンドを使うシェルスクリプトを作成すると「decoder: arib-b25-stream」のように指定して使うことが出来る。
cat << 'EOT' | sudo tee /usr/local/bin/arib-b25-stream #!/bin/sh sh -c cat | b25 -v 0 /dev/stdin /dev/stdout | cat EOT sudo chmod +x /usr/local/bin/arib-b25-stream