最近は、地デジの録画をtorneでしていたのですが、torneってBSの録画ができないんですよね。
録った番組をエンコードしてiPhoneで見ることもできませんし。
そんなことを考えていたある日、友人の家にお邪魔すると、PT1が転がっているではありませんか。その友人は、PT2を使っているということなので、強奪(?)してきました。
[tmkm-amazon]B002WLP190[/tmkm-amazon]
本来は、16,800円のはずなのですが、人気のせいか3万円程度で売られていることも珍しくはありません。また、PT2は既に生産終了しています。(PT1は言わずもがな。)
で、地デジを録画しようと思いたったのですが、LinuxやWindowsで録画している人はたくさん居ますが、僕の愛するFreeBSDでPT1やPT2を使っている人は数人しか居なさそうです。
そもそも、PT1やPT2のドライバを書いた方がi386で動かしたのが、今年の6月5日ですよ。
そんなことで、サーバにしかFreeBSDを使っていなかったけど、FreeBSDを愛する僕が、FreeBSDでPT1を使って地デジを録画してみました。
ちなみに、僕はPT1でやりましたが、PT2でも手順にはまったく違いはないはずです。
材料
必要なモノは次のとおりです。
ICカードリーダは、SCR3310というのもFreeBSDで使えたらしいです。(僕は試してません)
[tmkm-amazon]B00117VJ7O[/tmkm-amazon]
また、portsのインストールのために、Atom 330なので、/etc/make.confには、
CPUTYPE?=core2
と書いてあります。
まずはPT1のドライバ
だえもんだもん氏の書いた、ptx-20100430をダウンロードし、パッチを当てて、コンパイルするのみです。だえもんだもん氏、凄すぎです。感謝!
# fetch http://2sen.dip.jp/cgi-bin/pt1up/source/up0281.gz # mv up0281.gz up0281.tar.gz # fetch http://2sen.dip.jp/cgi-bin/pt1up/source/up0283.zip # mv up0283.zip up0283.bz2 # tar xvzf up0281.tar.gz # bzip2 -d up0283.bz2 # patch < up0283 # cd ptx-20100430/dev/ptx # make # make install # kldload ptx.ko
up0283のpatchは、コールドブートに対応するpatchです。
/boot/loader.confに
ptx_load="YES"
と書いてやると、ブート時にドライバを読み込んでくれます。
とりあえず、再起動してやってから、
# sysctl -w dev.ptx.0.t0.freq=73 # cat /dev/ptx0.t0 > ch73.ts
とやって、できあがったch73.tsをVLCで再生すると、ワンセグながらも録画できたのを確認できるはず。
B-CASカードを読めるようにする
必要なものは、portsの devel/pcsc-lite と devel/libccid らしいです。
# portinstall devel/pcsc-lite # portinstall devel/libccid
とかやってインストールすれば楽ちんです。
pcscdは、/etc/rc.confにpcscd_enable=”YES”と書いてやる必要があるみたいなので、追記するのを忘れないこと。
私が買ってきたCI691というスマートカードリーダは、このままではlibccidから見つけて貰えません。CI691のベンダー ID とプロダクト ID は idVendor=0bda, idProduct=0165 でした。
このベンダー IDとプロダクト IDを /usr/local/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
の<ifdVendorID>, <ifdProductID>, <ifdFriendlyName> それぞれの <array>ノードの末尾に追記をしました。
そこで、
# /usr/local/etc/rc.d/pcscd start
としてみるとpcscdがスタートするはずです。
portsをインストールした際に、 /etc/devd.conf に次の内容を追記するようにというメッセージが出ていたので、追記を行います。
attach 100 { device-name "ugen[0-9]+"; action "/usr/local/sbin/pcscd -H"; }; detach 100 { device-name "ugen[0-9]+"; action "/usr/local/sbin/pcscd -H"; };
追記が終わったら、
# /etc/rc.d/devd restart
としてやると、devdが再起動されます。
ちなみに、私が上記のことをしたときには、
dccid-1.3.12_1 Generic USB CCID (Chip/Smart Card Interface Devices) driver pcsc-lite-1.6.0_1,2 A smartcard development library
がインストールされました。
b25のビルド
地デジのキャプチャ関連の情報を集めているとb25というツール名が何度も出てきます。
これは、まるも氏の開発した、「ARIB STD-B25 仕様確認テストプログラム」というツールの事です。最新のバージョンは、Ver. 0.2.4の様なのですが、同氏が配布しているのはWindows用のコードです。 ( arib_std_b25-0.2.4.lzh )
ということで、Linux版のものを探してきて、FreeBSDでコンパイルしてました。僕としてはカケだったのですが、すんなり動いてよかったです。LinuxではGNU Makeが一般的の様なので、portsでgmakeを先に入れておきました。
$ fetch http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.tar.bz2 $ tar xvzf c44e16dbb0e2.tar.bz2 $ cd pt1-c44e16dbb0e2/arib25/src $ gmake
これでb25のバイナリができているはずです。
実験してみる
ここまでやれば、基本的に録画ができるはずです。b25でMULTI2(地上デジタル放送と衛星放送で使われているブロック暗号)の復号もできます。
# sysctl -w dev.ptx.0.t0.freq=72 # cat /dev/ptx0.t0 > ch72.ts # ./b25 ch72.ts ch72_b25.ts
できあがった、ch72_b25.tsをVLCで再生すると、1920pixelあるムービーファイルの再生ができました。
続く
ここまで来れば、後は録画予約をするフロントエンドを用意したり、録画したファイルを再エンコードするといった仕組みを用意するのみです。
フロントエンドには、epgrecやfoltiaなどがある模様です。また、ご自分でcrontabを書いて録画予約するのも良いでしょう。
ちなみに、上述のptx-20100430のアーカイブの中のtoolsディレクトリにはperlスクリプトが入っています。
perl recptx.pl 103 5600 test.ts
といった具合に起動すると、チャンネル103で5600秒間、test.tsに録画をしてくれます。
b25で復号も同時にしてくれそうですが、私はまだ試していません。
2 Comments.