まずPC/SCとは?
正式にはPersonal Computer/Smart Card。
Windows環境でICカードを利用するための標準アプリケーションインターフェース仕様のこと。
なぜラズパイでPC/SC対応のカードリーダーを使う?
SonyのPasoriという、ラズパイに簡単に繋げられてサンプルのたくさん転がっているカードリーダーがあるが、
いかんせん反応が良くない。
ある調査で見つけた反応の良いカードリーダーがPC/SC仕様だった為に必要となった。
ラズパイをPC/SC仕様対応にするために必要なもの
pcsc_liteというパッケージが必要らしく、これで低レベルのAPIやコマンドは提供される。 pythonの実装は、以下の2つを見つけた。
1. python-pcsc_liteパッケージ
これははMac OS Xだとバグがあり、ビルドできないらしい。 Windows, Linux, Max OS Xで汎用的に使うにはpyscardライブラリを使う方が良いとのこと。
2. pyscardパッケージ
こっちの方がドキュメントが充実していて、使いやすそう(直感)。
今回はpyscardライブラリを使用する方向に決定。
※ 単にPC/SC仕様カードリーダーがラズパイで動くかだけを確認するなら、pcsc_liteパッケージとPCSC Toolsを入れてコマンド実行すればよい。(参考1)
ちなみに参考内にあるlibusb++というパッケージは存在しないと言われインストール出来ないが、実行に問題はなかった。
ラズパイへのpyscardインストール方法
1. 必要なライブラリをインストール
sudo apt install python3-pyscard pcscd libacsccid1
2. Info.plistに使用するカードリーダーの情報を追加
2-1. Info.plistの場所を探す
sudo find / -name Info.plist
2-2. 使用するカードリーダーの情報を取得
lsusbコマンドで機器のベンダーIDと製品IDが分かるのでそれを取得。
2-3. Info.plistに機器のベンダーID、製品ID、名称(自由でOK)を追加
【記入例】 <key> ifdVendorID </key> <array> … <string> 0x0001 </string> </array> <key> ifdProductID </key> <array> … <string> 0x0001 </string> </array> <key > ifdFriendlyName </key> <array> … <string> HogeHogeReader </string> </array>
参考サイト
【参考1】 www.mutek.com 【参考2】 qiita.com