Raspberry Pi3にBCASを制御させる

WindowsでPT2を使った録画サーバを構築してるのですが、
本日大変調子が悪くなったことからOSを再インストールしました。
そこでPT2環境も再セットアップした時に少し構成変更したのでメモ。

前提

再インストール前は「BonCasLink(Server)」と「BonCasProxy」を使ってBCASカードを管理していました。
前者がBCASカードの接続を共有するソフトウェア、後者が共有されたBCASをLAN内で共有するソフトウェアです。

ふつーであればスマートカードリーダーをPCに挿しておけば済む話なのでこれらは不要です。
が、リモートデスクトップで接続するとスマートカードリーダーが切断されるという宿命みたいな仕様があり、
このため別ユーザでBCASをLAN公開して、そこにローカルホスト接続するとかいう、
Linuxみたいな回避策を取らざるを得ませんでした。


こんな感じかしら。知らんけど。

一度構築しちゃったのでこの構成でも良かったのですが、
再インストールに際して環境再現が非常に面倒くさかったので、BCASサーバを別立てしようと思いつきました。
探してみるとPerlでBCAS共有を実現している人が。世の中には凄い人がいるんですね・・。

Raspberry Pi3でのセットアップ

$ uname -a
Linux GameWatch 4.4.9-v7+ #884 SMP Fri May 6 17:28:59 BST 2016 armv7l GNU/Linux

OSはRaspbian。リーダーはSCR3310-NTTComです。

ほとんど以下のサイトの手順で実施しました。(ありがとうございます)
http://blog.techlab-xe.net/archives/4136

リーダーは最初から繋いでてもOKです。特にドライバもありません。
さっそくGitHubからダウンロードして、改行コードを処理します。

$ git clone https://github.com/walkure/bcs-perl

$ cd bcs-perl/
$ mv bcs-perl.pl bcs-perl.bak; tr -d \\r < bcs-perl.bak > bcs-perl.pl

この状態でbcs-perl.plにlistをつけて実行。

$ ./bcs-perl.pl list

Can’t locate Chipcard/PCSC.pm in @INC (you may need to install the Chipcard::PCSC module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at ./bcs-perl.pl line 12.

BEGIN failed–compilation aborted at ./bcs-perl.pl line 12.

怒られた。
”PCSCモジュールが無い”っぽいので入れてみます。

$ sudo apt-get install pcsc-tools

※以下を参考にして入れました。他にも入れなきゃいけないかも?
http://www.utilities-online.info/articles/GettingStarted-With-SmartCard-In-Linux/#.WYaYR63ANmA

List of PC/SC card reader
NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00
>>EOL

今度は成功。わあい。
ここで表示される文字列を控え、bcs-perl.plの変数$selected_readerに設定します。

my $selected_reader = ‘NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00’;

設定後にbcs-perl.plを実行してみて、以下のようなログがでればOKです。

$ ./bcs-perl.pl
>>Reader:NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00
>>Card Status:[Card Present][Powered][Ready for PTS]
>>Card Ver:2
>>Card Manufacture ID:M
>>Card ID: 0000 3202 4408 6635 0845
>>Begin Listening(0.0.0.0:6900)…..

BonCasLinkの宛先をRaspberry Piに向けてやればめでたくBCAS共有ができます。
多分以下のような構成になるんじゃないかと思います。

rcスクリプト例

起動確認が終わったらrcスクリプトを書いてデーモン化しておきます。
起動チェック類が多少ぬるいです・・っていうかそもそも動作保証しません。

#!/bin/sh
PID_FILE="/usr/local/bin/bcs-perl/bcs-perl.pid"

if [ -f ${PID_FILE} ] ; then
   FILE_PID=`cat ${PID_FILE}`
   ps -p ${FILE_PID} > /dev/null
   NOT_RUNNING=$?
else
   NOT_RUNNING=1
fi

case "$1" in 
        start )
           if [ ${NOT_RUNNING} -eq 1 ] ; then
                  /usr/local/bin/bcs-perl/bcs-perl.pl > /dev/null 2>&1 &
                  echo $! > ${PID_FILE}
           else
              echo "bcs-perl was running. (PID=${FILE_PID})"
           fi
        ;;
        stop )
           if [ ${NOT_RUNNING} -eq 0 ] ; then
               kill ${FILE_PID}
               rm ${PID_FILE}
           else
              echo "bcs-perl is not running." 
           fi
           
        ;;
        status ) 
           if [ ${NOT_RUNNING} -eq 1 ] ; then
              echo "bcs-perl is not running." 
           else
              echo "bcs-perl was running. (PID=${FILE_PID})"
           fi
          :  
        ;;
        * ) echo "$0 {start|stop|status} " ;;
esac

#すげえニッチなエントリになった。。

Comments are closed.