CentOS 5.4にPT2を導入する。

foltiaの導入を目的としたPT2の導入メモ。今回はOSのインストールからの録画テストまで。後から確認できるように、できる限り操作ログを残すようにした。動作確認はしているので問題はないが、もしもっと簡単な手順があれば教えてほしい。

目次
  1. 動作環境の確認
  2. CentOS 5.4のインストール
  3. ICカードリーダー関連ソフトウェアのインストール
  4. PT2のドライバダウンロード・解凍
  5. PT2のドライバインストール
  6. b25のインストール
  7. recpt1のインストール
  8. 録画テスト

動作環境

  • NEC Express5800/S70 タイプFL
  • アースソフト PT2
  • SCR3310-NTTCom
  • B-CASカード

CentOS 5.4のインストール

32bit版のCentOS 5.4をインストール。手順はここを参照。途中の「インストールパッケージ選択」で「今すぐカスタマイズする」を選択し、下記の項目にチェックが入った状態にして、OSをインストールする。

  • デスクトップ環境 > GNOME デスクトップ
  • アプリケーション > エディタ
  • アプリケーション > グラフィカルインターネット
  • 開発 > GNOME ソフトウェア開発
  • 開発 > X ソフトウェア開発
  • 開発 > 開発ツール
  • 開発 > 開発ライブラリ
  • ベースシステム > X Window System
  • ベースシステム > ベース

合わせて、ユーザー作成時にユーザーを「foltia」にしておけば、後が楽。

ICカードリーダー関連ソフトウェアのインストール

実はOSのインストールの際に、ICカードリーダーに必要なものは全てインストールされているので、対応は不要。SCR3310-NTTComのLEDが激しく点滅していれば認識しているはず。ちなみにyumでpcsc-toolsはインストールできなかった。

PT2のドライバダウンロード・解凍

ドライバのダウンロードはここから。b25が入った古いバージョン(c44e16dbb0e2)と2010/03/20時点で最新のバージョン(3eccf1ef4853)をそれぞれダウンロードし、解凍。

[foltia@foltiadev ~]$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.tar.bz2
--2010-03-20 16:58:11--  http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.tar.bz2
hg.honeyplanet.jp をDNSに問いあわせています... 59.106.19.35
hg.honeyplanet.jp|59.106.19.35|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 Script output follows
長さ: 特定できません [application/x-tar]
`c44e16dbb0e2.tar.bz2' に保存中

    [  <=>                                  ] 76,446       245K/s 時間 0.3s    

2010-03-20 16:58:11 (245 KB/s) - `c44e16dbb0e2.tar.bz2' へ保存終了 [76446]

[foltia@foltiadev ~]$ tar xvjf c44e16dbb0e2.tar.bz2
pt1-c44e16dbb0e2/.hg_archival.txt
pt1-c44e16dbb0e2/arib25/Makefile
pt1-c44e16dbb0e2/arib25/arib_std_b25.sln
pt1-c44e16dbb0e2/arib25/arib_std_b25.vcproj
pt1-c44e16dbb0e2/arib25/readme.txt
pt1-c44e16dbb0e2/arib25/src/Makefile
pt1-c44e16dbb0e2/arib25/src/arib_std_b25.c
pt1-c44e16dbb0e2/arib25/src/arib_std_b25.h
pt1-c44e16dbb0e2/arib25/src/arib_std_b25_error_code.h
pt1-c44e16dbb0e2/arib25/src/b_cas_card.c
pt1-c44e16dbb0e2/arib25/src/b_cas_card.h
pt1-c44e16dbb0e2/arib25/src/b_cas_card_error_code.h
pt1-c44e16dbb0e2/arib25/src/makefile.win
pt1-c44e16dbb0e2/arib25/src/multi2.c
pt1-c44e16dbb0e2/arib25/src/multi2.h
pt1-c44e16dbb0e2/arib25/src/multi2_error_code.h
pt1-c44e16dbb0e2/arib25/src/portable.h
pt1-c44e16dbb0e2/arib25/src/td.c
pt1-c44e16dbb0e2/arib25/src/ts_common_types.h
pt1-c44e16dbb0e2/arib25/src/ts_section_parser.c
pt1-c44e16dbb0e2/arib25/src/ts_section_parser.h
pt1-c44e16dbb0e2/arib25/src/ts_section_parser_error_code.h
pt1-c44e16dbb0e2/b25_docs/libccid_Info.plist
pt1-c44e16dbb0e2/b25_docs/readme.txt
pt1-c44e16dbb0e2/b25_docs/smartcard_list.txt
pt1-c44e16dbb0e2/driver/Makefile
pt1-c44e16dbb0e2/driver/etc/99-pt1.rules
pt1-c44e16dbb0e2/driver/pt1_com.h
pt1-c44e16dbb0e2/driver/pt1_i2c.c
pt1-c44e16dbb0e2/driver/pt1_i2c.h
pt1-c44e16dbb0e2/driver/pt1_ioctl.h
pt1-c44e16dbb0e2/driver/pt1_pci.c
pt1-c44e16dbb0e2/driver/pt1_pci.h
pt1-c44e16dbb0e2/driver/pt1_tuner.c
pt1-c44e16dbb0e2/driver/pt1_tuner.h
pt1-c44e16dbb0e2/driver/pt1_tuner_data.c
pt1-c44e16dbb0e2/driver/pt1_tuner_data.h
pt1-c44e16dbb0e2/recpt1/Makefile
pt1-c44e16dbb0e2/recpt1/channels/sample.recpt1-channels-chiba
pt1-c44e16dbb0e2/recpt1/channels/sample.recpt1-channels-kanazawa
pt1-c44e16dbb0e2/recpt1/channels/sample.recpt1-channels-nagoya
pt1-c44e16dbb0e2/recpt1/channels/sample.recpt1-channels-tokyo
pt1-c44e16dbb0e2/recpt1/decoder.c
pt1-c44e16dbb0e2/recpt1/decoder.h
pt1-c44e16dbb0e2/recpt1/mkpath.c
pt1-c44e16dbb0e2/recpt1/mkpath.h
pt1-c44e16dbb0e2/recpt1/recpt1.c
pt1-c44e16dbb0e2/recpt1/recpt1.h

[foltia@foltiadev ~]$ wget http://hg.honeyplanet.jp/pt1/archive/3eccf1ef4853.tar.bz2
--2010-03-20 16:59:36--  http://hg.honeyplanet.jp/pt1/archive/3eccf1ef4853.tar.bz2
hg.honeyplanet.jp をDNSに問いあわせています... 59.106.19.35
hg.honeyplanet.jp|59.106.19.35|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 Script output follows
長さ: 特定できません [application/x-tar]
`3eccf1ef4853.tar.bz2' に保存中

    [ <=>                                   ] 47,121       287K/s 時間 0.2s    

2010-03-20 16:59:36 (287 KB/s) - `3eccf1ef4853.tar.bz2' へ保存終了 [47121]

[foltia@foltiadev ~]$ tar xvjf 3eccf1ef4853.tar.bz2pt1-3eccf1ef4853/.hg_archival.txt
pt1-3eccf1ef4853/driver/Makefile
pt1-3eccf1ef4853/driver/etc/99-pt1.rules
pt1-3eccf1ef4853/driver/pt1_com.h
pt1-3eccf1ef4853/driver/pt1_i2c.c
pt1-3eccf1ef4853/driver/pt1_i2c.h
pt1-3eccf1ef4853/driver/pt1_ioctl.h
pt1-3eccf1ef4853/driver/pt1_pci.c
pt1-3eccf1ef4853/driver/pt1_pci.h
pt1-3eccf1ef4853/driver/pt1_tuner.c
pt1-3eccf1ef4853/driver/pt1_tuner.h
pt1-3eccf1ef4853/driver/pt1_tuner_data.c
pt1-3eccf1ef4853/driver/pt1_tuner_data.h
pt1-3eccf1ef4853/recpt1/COPYING
pt1-3eccf1ef4853/recpt1/Makefile.in
pt1-3eccf1ef4853/recpt1/autogen.sh
pt1-3eccf1ef4853/recpt1/channels/sample.recpt1-channels-chiba
pt1-3eccf1ef4853/recpt1/channels/sample.recpt1-channels-kanazawa
pt1-3eccf1ef4853/recpt1/channels/sample.recpt1-channels-nagoya
pt1-3eccf1ef4853/recpt1/channels/sample.recpt1-channels-tokyo
pt1-3eccf1ef4853/recpt1/checksignal.c
pt1-3eccf1ef4853/recpt1/configure.ac
pt1-3eccf1ef4853/recpt1/decoder.c
pt1-3eccf1ef4853/recpt1/decoder.h
pt1-3eccf1ef4853/recpt1/mkpath.c
pt1-3eccf1ef4853/recpt1/mkpath.h
pt1-3eccf1ef4853/recpt1/pt1_dev.h
pt1-3eccf1ef4853/recpt1/recpt1.c
pt1-3eccf1ef4853/recpt1/recpt1.h
pt1-3eccf1ef4853/recpt1/recpt1ctl.c
pt1-3eccf1ef4853/recpt1/tssplitter_lite.c
pt1-3eccf1ef4853/recpt1/tssplitter_lite.h

[foltia@foltiadev ~]$ ls
3eccf1ef4853.tar.bz2  c44e16dbb0e2.tar.bz2  pt1-c44e16dbb0e2
Desktop               pt1-3eccf1ef4853

解凍され、pt1-c44e16dbb0e2とpt1-3eccf1ef4853の2つのフォルダができていることが確認する。

PT2のドライバインストール

最新のバージョン(3eccf1ef4853)のドライバをインストール。

[foltia@foltiadev ~]$ cd pt1-3eccf1ef4853/driver

[foltia@foltiadev driver]$ make
revh=`hg parents --template '#define DRV_VERSION "r{rev}:{node|short}"\n#define DRV_RELDATE "{date|shortdate}"\n' 2>/dev/null`; \
	if [ -n "$revh" ] ; then \
		echo "$revh" > version.h; \
	else \
		printf "#define DRV_VERSION \""1.1.0"\"\n#define DRV_RELDATE \""2010-01-27"\"\n" > version.h; \
	fi
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make[1]: ディレクトリ `/usr/src/kernels/2.6.18-164.el5-i686' に入ります
  CC [M]  /home/foltia/pt1-3eccf1ef4853/driver/pt1_pci.o
  CC [M]  /home/foltia/pt1-3eccf1ef4853/driver/pt1_i2c.o
  CC [M]  /home/foltia/pt1-3eccf1ef4853/driver/pt1_tuner.o
  CC [M]  /home/foltia/pt1-3eccf1ef4853/driver/pt1_tuner_data.o
  LD [M]  /home/foltia/pt1-3eccf1ef4853/driver/pt1_drv.o
  Building modules, stage 2.
  MODPOST
  CC      /home/foltia/pt1-3eccf1ef4853/driver/pt1_drv.mod.o
  LD [M]  /home/foltia/pt1-3eccf1ef4853/driver/pt1_drv.ko
make[1]: ディレクトリ `/usr/src/kernels/2.6.18-164.el5-i686' から出ます

[foltia@foltiadev driver]$ su -
パスワード:

[root@foltiadev ~]# cd /home/foltia/pt1-3eccf1ef4853/driver/
[root@foltiadev driver]# make install
install -m 644 pt1_drv.ko /lib/modules/`uname -r`/kernel/drivers/video
if [ -d /etc/udev/rules.d -a ! -f /etc/udev/rules.d/99-pt1.rules ] ; then \
		install -m 644 etc/99-pt1.rules /etc/udev/rules.d ; \
	fi
depmod -a

[root@foltiadev driver]# modprobe pt1_drv

[root@foltiadev driver]# ls /lib/modules/2.6.18-164.el5/kernel/drivers/video/
backlight/   cyblafb.ko   intelfb/     nvidia/      riva/        vga16fb.ko
cirrusfb.ko  i810/        kyro/        pt1_drv.ko   savage/      vgastate.ko

[root@foltiadev driver]# ls /etc/udev/rules.d/
05-udev-early.rules  60-raw.rules            90-dm.rules
40-multipath.rules   60-wacom.rules          90-hal.rules
50-udev.rules        61-uinput-stddev.rules  95-pam-console.rules
51-hotplug.rules     61-uinput-wacom.rules   99-pt1.rules
60-net.rules         85-pcscd_ccid.rules     bluetooth.rules
60-pcmcia.rules      90-alsa.rules
[root@foltiadev driver]# exit
logout

最後にpt1_drv.koと99-pt1.rulesがあることを確認する。

b25のインストール

暗号の解除を行うb25をインストールする。b25のソースは「c44e16dbb0e2」より新しいものには入っていないため、古いバージョンを用いてインストールする。

[foltia@foltiadev driver]$ cd /home/foltia/pt1-c44e16dbb0e2/arib25/src/

[foltia@foltiadev src]$ make
gcc -MM arib_std_b25.c b_cas_card.c multi2.c ts_section_parser.c -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > Makefile.dep
gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o arib_std_b25.o arib_std_b25.c
gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o b_cas_card.o b_cas_card.c
gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o multi2.o multi2.c
gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o ts_section_parser.o ts_section_parser.c
gcc -O2 -g -fPIC -Wall `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o td.o td.c
gcc  -o b25 arib_std_b25.o b_cas_card.o multi2.o ts_section_parser.o td.o `pkg-config libpcsclite --libs` -lm
gcc  -shared -o libarib25.so arib_std_b25.o b_cas_card.o multi2.o ts_section_parser.o `pkg-config libpcsclite --libs` -lm -Wl,-soname,libarib25.so.0

[foltia@foltiadev src]$ su -
パスワード:

[root@foltiadev ~]# cd /home/foltia/pt1-c44e16dbb0e2/arib25/src

[root@foltiadev src]# make install
mkdir -p /usr/local/include/arib25
install -m644 arib_std_b25.h b_cas_card.h portable.h /usr/local/include/arib25
install -m755 b25 /usr/local/bin
install -m755 libarib25.so /usr/local/lib/libarib25.so.0.2.4
ln -sf /usr/local/lib/libarib25.so.0.2.4 /usr/local/lib/libarib25.so.0
ln -sf /usr/local/lib/libarib25.so.0 /usr/local/lib/libarib25.so
ldconfig

[root@foltiadev src]# exit
logout

recpt1のインストール

録画ツールのrecpt1をインストールする。これは最新のバージョン(3eccf1ef4853)のものからインストールする。

[foltia@foltiadev ~]$ cd /home/foltia/pt1-3eccf1ef4853/recpt1/

[foltia@foltiadev recpt1]$ ./autogen.sh 
Generating configure script and Makefiles for recpt1.
Running aclocal ...
Running autoheader ...
Running autoconf ...

[foltia@foltiadev recpt1]$ ./configure -enable-b25
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for create_arib_std_b25 in -larib25... yes
checking for log10 in -lm... yes
checking for pthread_kill in -lpthread... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h

[foltia@foltiadev recpt1]$ make
revh=`hg parents --template 'const char *version = "r{rev}:{node|short} ({date|shortdate})";\n' 2>/dev/null`; \
	if [ -n "$revh" ] ; then \
		echo "$revh" > version.h; \
	else \
		echo "const char *version = \""1.1.0"\";" > version.h; \
	fi
gcc -MM recpt1.c decoder.c mkpath.c tssplitter_lite.c recpt1ctl.c -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > .deps
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o recpt1.o recpt1.c
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o decoder.o decoder.c
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o mkpath.o mkpath.c
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o tssplitter_lite.o tssplitter_lite.c
gcc  -o recpt1 recpt1.o decoder.o mkpath.o tssplitter_lite.o -lpthread -lm -larib25 
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o recpt1ctl.o recpt1ctl.c
gcc  -o recpt1ctl recpt1ctl.o 
gcc -O2 -g -pthread -I../driver -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -c -o checksignal.o checksignal.c
gcc  -o checksignal checksignal.o -lpthread -lm

[foltia@foltiadev recpt1]$ su - 
パスワード:

[root@foltiadev ~]# cd /home/foltia/pt1-3eccf1ef4853/recpt1/

[root@foltiadev recpt1]# make install
install -m 755 recpt1 recpt1ctl checksignal /usr/local/bin

[root@foltiadev recpt1]# echo "/usr/local/lib" > /etc/ld.so.conf.d/recpt1.conf

[root@foltiadev recpt1]# ldconfig

[root@foltiadev recpt1]# exit
logout

録画テスト

最後に録画テスト。使い方はヘルプをみるとわかりやすい。

[foltia@foltiadev recpt1]$ ./recpt1 -h

Usage: 
recpt1 [--b25 [--round N] [--strip] [--EMM]] [--udp [--addr hostname --port portnumber]] [--device devicefile] [--lnb voltage] [--sid SID1,SID2] channel rectime destfile

Remarks:
if rectime  is '-', records indefinitely.
if destfile is '-', stdout is used for output.

Options:
--b25:               Decrypt using BCAS card
  --round N:         Specify round number
  --strip:           Strip null stream
  --EMM:             Instruct EMM operation
--udp:               Turn on udp broadcasting
  --addr hostname:   Hostname or address to connect
  --port portnumber: Port number to connect
--device devicefile: Specify devicefile to use
--lnb voltage:       Specify LNB voltage (0, 11, 15)
--sid SID1,SID2,...: Specify SID number in CSV format (101,102,...)
--help:              Show this help
--version:           Show version
--list:              Show channel list

Available Channels:
13-62: Terrestrial Channels
101ch: NHK BS1
102ch: NHK BS2
103ch: NHK BShi
141ch: BS Nittele
151ch: BS Asahi
161ch: BS-TBS
171ch: BS Japan
181ch: BS Fuji
191ch: WOWOW
192ch: WOWOW2
193ch: WOWOW3
200ch: Star Channel
211ch: BS11 Digital
222ch: TwellV
C13-C63: CATV Channels
CS2-CS24: CS Channels

チャンネルはエリアによって異なる。マスプロのチャンネル一覧を見てチャンネルを確認すること。ちなみに、PT2のチューナーとデバイスの対応は、/dev/pt1video0と/dev/pt1video1がBSデジタル/CS110、/dev/pt1video2と/dev/pt1video3が地デジとなる。今回は全国共通のBSデジタル(BS11 Digital)で録画テストを実行。

[foltia@foltiadev recpt1]$ ./recpt1 --b25 --strip --device /dev/pt1video0 211 20 /home/foltia/test.ts
using B25...
enable B25 strip
using device: /dev/pt1video0
pid = 5158
C/N = 16.663467dB
Recording...
Recorded 20sec
[foltia@foltiadev recpt1]$

録画したファイルをVLCで開くと、ちゃんと再生された!これで録画に関わる部分は完成。これを基本にして、次はfoltiaのインストールを掲載予定。