LinuxでSoftCasは使用できるのか? ~CentOS 7編~

さて、この12月でCentOS 7がリリースされて半年ほどが経過した。自宅で録画サーバを新しく構築する人も、CentOS 7での構築を検討する頃合いではないだろうか。
そんなわけで、今回はCentOS 7でSoftcasを利用できるか試してみることにした。環境は以下。

  • OS:CentOS 7 Minimal Install
  • 録画チューナー:PT2(余ってた)
  • CPU:Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
  • メモリ:4GB

基本的に、作業はrootユーザで行っていく。
それでは、検証を進めてみよう。

1.最低限の設定を行う

まずは、最低限IPアドレスとホスト名を設定する。
IPアドレスについてはこちら、ホスト名についてはこちらに設定方法を記述してある。

IPアドレス、ホスト名の設定後、SELinuxを無効にする

setenforce 0
sed -i.bak "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config

設定完了後、yum updateを行う。

yum update

2.LAMP環境のインストール

次に、LAMP環境をインストールする。
(正直、Softcasの検証だけなら箇所はあまり必要ではない。epgrecなどの導入時用に記述しているだけだ。)

yum groupinstall -y 'Basic Web Server' 'Perl Support' 'PHP Support' 'MariaDB Database Client' 'MariaDB Database Server' 'Development tools'

上記インストール完了後、ファイアウォールの設定を変更しhttpアクセスを可能にする。

firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --reload

3.b25&PT2ドライバ&recpt1のインストール

PT2のドライバをインストールするため、必要となるパッケージをインストールする。

yum install -y ccid gcc-c++ perl-Gtk2 yum-priorities kernel-devel autoconf automake
yum install -y pcsc-lite pcsc-lite-devel  pcsc-lite-libs

パッケージインストール後、復号ツールであるb25をダウンロード、解凍してインストールする。

wget https://github.com/stz2012/libarib25/archive/master.zip
unzip master.zip
cd libarib25-master/src/
make
sudo make install

次に、PT2ドライバのインストールを行う。

cd
echo "blacklist earth-pt1" > /etc/modprobe.d/blacklist.conf
wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
tar -xvlf tip.tar.bz2
cd pt1-c8688d7d6382/driver/
make
make install
modprobe pt1_drv
reboot

なお、make時に以下のようなエラーが出る場合がある。

[root@test-centos7 driver]# make
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make: *** /lib/modules/3.10.0-123.el7.x86_64/build: そのようなファイルやディレクトリはありません.  中止.
make: *** [pt1_drv.ko] エラー 2

これは、/libフォルダに配置されているシンボリックリンクのリンク先が存在しないフォルダを参照しているために起きている現象だ。
以下のコマンドなどで、存在しているフォルダを参照させる。

ln -s /usr/src/kernels/3.10.0-123.13.2.el7.x86_64 /lib/modules/3.10.0-123.el7.x86_64/build

再起動後、CentOS 7でPT2を認識している事を確認する。

[root@test-centos7 driver]# lspci | grep Multi
04:02.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
[root@test-centos7 driver]#
[root@test-centos7 driver]# lsmod | grep pt1
pt1_drv                40850  0
[root@test-centos7 driver]#
[root@test-centos7 driver]# ls -la /dev | grep pt1
crw-rw-rw-   1 root video   247,   0 12月 23 17:47 pt1video0
crw-rw-rw-   1 root video   247,   1 12月 23 17:47 pt1video1
crw-rw-rw-   1 root video   247,   2 12月 23 17:47 pt1video2
crw-rw-rw-   1 root video   247,   3 12月 23 17:47 pt1video3

次に、recpt1のインストールを行う。
以下のコマンドを実行する。

cd pt1-c8688d7d6382/recpt1
./autogen.sh
./configure -enable-b25
make
make install
echo "/usr/local/lib" > /etc/ld.so.conf.d/recpt1.conf 
ldconfig

4.Softcasのインストール

さて、今回の検証の本番、Softcasのインストールを行う。
以下のコマンドで、softcasをダウンロード、解凍する。

wget http://www.wazoku.net/softcas.zip
unzip softcas.zip
cd softcas
wget -O winscard.cpp http://pastebin.com/download.php?i=5144Ah9g
wget -O Makefile http://pastebin.com/download.php?i=FQdSixkB

次に、ライブラリが変更されたため、winscard.cppの一部を書き換える必要がある。
以下のコマンドでソースの書き換えを行う。

sed -i "/LONG SCardGetStatusChange/s/LPSCARD_READERSTATE_A/LPSCARD_READERSTATE/g" winscard.cpp
sed -i "s/SCARD_IO_REQUEST g_rgSCardT1Pci;/const SCARD_IO_REQUEST g_rgSCardT1Pci = { SCARD_PROTOCOL_T1, sizeof(SCARD_IO_REQUEST) };/g" winscard.cpp

ソースの書き換え後、makeを行う。

make

make後、「libpcsclite.so.1.0.0」というファイルが作成されているので、「/usr/lib64」に移動する。

cp libpcsclite.so.1.0.0 /usr/lib64/

これで、Softcasを利用する準備が整った。

5.テストの実施

実際に利用出来るか、以下のコマンドでテストする。

recpt1 --strip -b25 27 10 test.ts

テストの結果、無事に再生することが出来た。
CentOS 7でも問題無く利用出来そうだ。

…というか、同じやり方をすればUbuntuでも利用出来るように思う。
後ほど対応してみようかな。