Mirakurunのチューナー設定(PT2およびPT1をchardev版ドライバで使う場合)

 DVBデバイスは処理的に重たいので、低スペックな環境でも使いやすいchardev版ドライバでPT2およびPT1を使う。

pt1_drvのインストール

 pt1_drvLinuxカーネルが更新される度に再ビルドが必要になるので、これを自動的に行う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