PT2で地デジと衛星放送を録画
chardev 版の PT2 ドライバを Ubuntu 16.04 にインストールしてテレビ放送(地デジ)を録画できるようにしました。以前は録画できるようになるまで結構苦労した気がするのですが、今回はすんなると簡単に録画サーバになりました。
これまで USB 接続の地デジチューナーを使用していましたが、しばらく前に壊れて録画できなくなっていました。しかしサーバを新しくセットアップしたので、改めて録画サーバ機能をセットアップしました。
いくつかの地デジチューナーを使用できるようですが、今回はあまり手間を掛けたくなかったので、デファクトスタンダードな PT2 を使用することにしました。PT2 は PCI バス接続という制限がありますが枯れたカードで、思いの外すんなりと必要なソフトをインストールすることができました。
構成
OS | Ubuntu 16.04 |
チューナーカード | PT2 Rev. B |
ICカードリーダー | SCR3310-NTTCom |
B-CASカード | 地デジ専用または衛星放送対応 |
- チューナーカード
- Linux で使用できるチューナーカードはいくつかありますが、デファクトスタンダードはアースソフトの PT2 と PT3 です。しかし PT2 はとっくに製造が終了しており、PT3 も製造終了(注1)となってしまいました。そのため最近はプレミア価格で PT3 がヤフオクに出回っています。 今回は、手頃な価格で中古が手に入る PT2 を使用しました。ただしこのカードは現在一般的な PCI Express ではない前世代の PCI バスに接続するので、購入前に PCI カードを取り付けられるか確認しておく必要があります。
- B-CAS カード
- 地デジ放送や衛星放送を視聴するには、テレビで視聴するときと同じようにそれぞれに対応した B-CAS カードが必要です。PT2(PT3)にはこのカードが付属しません。そのためテレビやレコーダから抜いてくるか、B-CAS カード付きのチューナーを別に購入する必要があります。
- IC カードリーダ
- B-CAS カードの情報を読み取るために、USB 接続の接触型 IC カードリーダが必要です。 今回は以前から使用している SCR3310-NTTCom を使用しましたが、現在はこちらも製造終了しているようです。こちらも中古が結構流通しているようですが、別の IC カードリーダーも結構な確率で使用できそうです。
ソフトのインストール
IC カードリーダーのパッケージをインストール
まず IC カードリータのパッケージをインストールします。
$ sudo apt install pcscd pcsc-tools
# B-CAS を認識できるか確認
$ pcsc_scan
...
Japanese Chijou Digital B-CAS Card (pay TV)
pcsc_scan
コマンドを実行しして、Japanese Chijou Digital B-CAS Card (pay TV)
が表示に含まれれば OK です。このコマンドは実行したままになるので、Ctrl-C で停止させます。
dvb 版 PT2 ドライバーを削除
地デジチューナの PT2 を組み込むと dvb 版ドライバがロードされます。このドライバを使用しないのでカーネルから削除します。
$ lsmod | grep earth_pt1
earth_pt1 28672 0
dvb_core 122880 1 earth_pt1
$ sudo rmmod earth_pt1
# ドライバーのロードを禁止する。
$ nano /etc/modprobe.d/blacklist.conf
また次回再起動した時に自動的にロードしないように/etc/modprobe.d/blacklist.conf
を編集しておきます。次の内容をファイルの最後に加えておくと、earth_pt1
をロードしなくなります。
blacklist earth_pt1
chardev 版 PT2 ドライバをインストール
新しく chardev 版の PT2 用ドライバーを取得してインストールします(注2)。
$ wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
# tarのaオプションは、拡張子から自動的に圧縮アルゴリズムを識別してくれて便利。
$ tar axvf tip.tar.bz2
$ cd pt1-c8688d7d6382/driver
ただしこのままではコンパイルに失敗するので、次のパッチをpt1_pci.c
に当てます(注3)。
--- pt1_pci.c.orig 2016-05-07 05:49:56.494036485 +0900
+++ pt1_pci.c 2016-05-07 05:50:05.597766146 +0900
@@ -16,6 +16,9 @@
#include <asm/system.h>
#endif
#include <asm/io.h>
+#if LINUX_VERSION_CODE >=KERNEL_VERSION(4,2,0)
+#include <linux/vmalloc.h>
+#endif
#include <asm/irq.h>
#include <asm/uaccess.h>
このままインストールすると、カーネルをアップデートするたびに毎回コンパイルと再インストールが必要になります。そこでカーネルがアップデートされるたびに自動的に再コンパイルと再インストールされるように DKMS に登録しておきます(注4)。
まず必要なパッケージをインストールして、ソースをコピーします。
$ sudo apt install dkms
$ sudo cp -r ../driver /usr/src/pt1-c8688d7d6382
# DKMS用の設定ファイルを作成する。
$ sudo nano /usr/src/pt1-c8688d7d6382/dkms.conf
DKMS に登録するためには、設定ファイルdkms.conf
を作成してソースのディレクトリに保存しておきます。設定ファイルの内容は、次のようになります。
PACKAGE_NAME="pt1"
PACKAGE_VERSION="c8688d7d6382"
CLEAN="make clean"
MAKE="make"
BUILT_MODULE_NAME="pt1_drv"
DEST_MODULE_LOCATION="/kernel/drivers/video/"
AUTOINSTALL="YES"
DKMS を使ってドライバーをインストールします。
$ sudo dkms install -m pt1 -v c8688d7d6382
$ sudo dkms status | grep pt1
pt1, c8688d7d6382, 4.4.0-21-generic, x86_64: installed
# ドライバーをカーネルにロードする。
$ sudo modprobe pt1_drv
$ lsmod|grep pt1
pt1_drv 40960 0
ただ私の環境だけかチューナのデバイスファイルのモードが、root のみ読み書き可能で、他のユーザはアクセスできないように設定されてしまいます。
$ ls -l /dev/pt1video*
crw------- 1 root root 245, 0 5月 7 07:20 /dev/pt1video0
crw------- 1 root root 245, 1 5月 7 07:20 /dev/pt1video1
crw------- 1 root root 245, 2 5月 7 07:20 /dev/pt1video2
crw------- 1 root root 245, 3 5月 7 07:20 /dev/pt1video3
このままでは録画する時に不便なので、次のエントリーを root のcrontab
に登録して再起動するたびにデバイスファイルのモードを変更しています。
@reboot chmod a+rw /dev/pt1video*
root のcrontab
に登録するには、次のコマンドを使用します。
$ sudo crontab -e
これで誰でもアクセスできるようになりました。
$ ls -l /dev/pt1video*
crw-rw-rw- 1 root root 245, 0 5月 7 12:48 /dev/pt1video0
crw-rw-rw- 1 root root 245, 1 5月 7 12:48 /dev/pt1video1
crw-rw-rw- 1 root root 245, 2 5月 7 12:48 /dev/pt1video2
crw-rw-rw- 1 root root 245, 3 5月 7 12:48 /dev/pt1video3
録画ソフトをインストール
PT2 用の chardev ドライバーをインストールしたら、録画するプログラムをインストールします。
ただし放送のデコードに必要なライブラリarib25
が含まれていないので、昔のソースから取り出して事前にインストールしておく必要があります。
$ sudo apt install zip pkg-config libpcsclite-dev
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
$ unzip c44e16dbb0e2.zip && cd pt1-c44e16dbb0e2/arib25
$ make && sudo make install
arib25
をインストールしたら、録画プログラムをインストールします。
$ cd ~/pt1-c8688d7d6382/recpt1
$ sudo apt install autoconf automake
$ ./autogen.sh
$ ./configure --enable-b25
$ make && sudo make install
録画テスト
全ての準備が整ったら、まずは受信信号を調べてみます。
$ checksignal 13
device = /dev/pt1video2
C/N = 33.592474dB
オプションの13
は、地デジのチャンネルです。これは一般的な NHK なら 1ch とかのチャンネルとは別で、周波数チャンネルです。この対応は地域(送信塔)毎に異なっているので、対応表で自分の所の周波数チャンネル(注5)を調べておく必要があります。
checksignal
を終了するには、Ctrl-C を入力します。
最後は実際に1分ほど 13ch を録画して見ます。
$ recpt1 --b25 --strip 13 60 test.mpg
using B25...
enable B25 strip
pid = 6840
C/N = 33.701023dB
Recording...
ecorded 62sec
これで 100MiB 前後のファイルが作成されるので、VLC などの再生ソフトでちゃんと録画出来ているか確認します。
実際に使用するには、周波数チャンネルを指定したり時間を秒で指定するのが面倒です。そこで簡単なラップスクリプトを作っておくと便利になります。
参照と脚注
- アースソフトの地デジチューナー「PT3」が生産終了に – AKIBA Hotline!
- pt2/chardev
- パッチの作成には、Linux/テレビ関連/PT2を参考にさせてもらいました。
- PT2ドライバをDKMSに登録 – Kung Noi Blog
- 放送の周波数チャンネルを調べるには、マスプロの地上デジタル放送 チャンネル一覧表が便利です。