問題だらけ。。。

色々な覚書(まとまっていないもの多数)

ラズパイでPC/SC仕様対応のカードリーダーを使う方法

まずPC/SCとは?

正式にはPersonal Computer/Smart Card
Windows環境でICカードを利用するための標準アプリケーションインターフェース仕様のこと。

なぜラズパイでPC/SC対応のカードリーダーを使う?

SonyPasoriという、ラズパイに簡単に繋げられてサンプルのたくさん転がっているカードリーダーがあるが、 いかんせん反応が良くない。
ある調査で見つけた反応の良いカードリーダーが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