ubuntuでICタグ(RFID)読み込み
WindowsではPC/SCがありますが、LinuxにもPC/SC Liteというライブラリがあり、非接触ICカード(RFID)にアクセスできます。
準備として、必要なライブラリをインストールします。
ubuntuではpcscデーモンは最初からインストールされているようです。
ICカードリーダには、OMNIKEYのCardman5321(USBタイプ)を使ってみます。
OMNIKEYはubuntuのSynapticパッケージに登録されているため、インストールが簡単なのです。
sudo apt-get install pcsc-tools pcsc-omnikey
(この時、libpcsc-perlなど関連ライブラリもインストールされます)
インストールが終わったら、OMNIKEY Cardman5321をPCのUSB端子に差し込み、以下のコマンドを実行します。
sudo /etc/init.d/pcscd stop
sudo /usr/sbin/pcscd -f -a -d
pcscデーモンがターミナル上でフォアグラウンド起動し、下記のようなメッセージが表示されます。
00000000 debuglog.c:224:DebugLogSetLevel() debug level=debug00001188 pcscdaemon.c:505:main() pcsc-lite 1.5.3 daemon ready.00250251 hotplug_libusb.c:477:HPAddHotPluggable() Adding USB device: 006:00300000075 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 00 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000513 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0OK OMNIKEY CardMan RFID IA32 v2.6.0 support@omnikey.com00289502 readerfactory.c:249:RFAddReader() Using the pcscd polling thread00002051 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 01 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000028 readerfactory.c:741:RFLoadReader() Reusing already loaded driver for /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000071 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0OK OMNIKEY CardMan RFID IA32 v2.6.0 support@omnikey.com00393999 readerfactory.c:385:RFAddReader() Using the pcscd polling thread00385840 Card ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 7400000000 debuglog.c:224:DebugLogSetLevel() debug level=debug00001188 pcscdaemon.c:505:main() pcsc-lite 1.5.3 daemon ready.00250251 hotplug_libusb.c:477:HPAddHotPluggable() Adding USB device: 006:00300000075 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 00 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000513 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0OK OMNIKEY CardMan RFID IA32 v2.6.0 support@omnikey.com00289502 readerfactory.c:249:RFAddReader() Using the pcscd polling thread00002051 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 01 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000028 readerfactory.c:741:RFLoadReader() Reusing already loaded driver for /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000071 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0OK OMNIKEY CardMan RFID IA32 v2.6.0 support@omnikey.com00393999 readerfactory.c:385:RFAddReader() Using the pcscd polling thread00385840 Card ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 74
ちゃんとリーダライタと接続できているようです。
別のターミナルを起動して、以下のコマンドを実行します。
pcsc_scan
すると下記のようなメッセージが表示されます。
PC/SC device scanner
V 1.4.16 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.5.3
Scanning present readers…
0: OMNIKEY CardMan 5×21 00 00
1: OMNIKEY CardMan 5×21 00 01
Tue May 18 09:19:21 2010
Reader 0: OMNIKEY CardMan 5×21 00 00
Card state: Card removed,
Tue May 18 09:19:21 2010
Reader 1: OMNIKEY CardMan 5×21 00 01
Card state: Card removed,
Tue May 18 09:03:31 2010Reader 1: OMNIKEY CardMan 5×21 00 01Card state: Card inserted,ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 74ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 74+ TS = 3B –> Direct Convention+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)TD(1) = 80 –> Y(i+1) = 1000, Protocol T = 0—–TD(2) = 01 –> Y(i+1) = 0000, Protocol T = 1—–+ Historical bytes: 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00Category indicator byte: 80 (compact TLV data object)Tag: 4, len: F (initial access data)Initial access data: 0C A0 00 00 03 06 0A 00 16 00 00 00 00+ TCK = 74 (correct checksum)Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):NONEYour card is not present in the database.You can get the latest version of the database fromhttp://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txtor use: wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt –output-document=/home/xxx/.smartcard_list.txtIf your ATR is still not in the latest version then please send a mailto <ludovic.rousseau@free.fr> containing:- your ATR- a card description (in english)Tue May 18 09:06:21 2010Reader 1: OMNIKEY CardMan 5×21 00 01Card state: Card removed,Scanning present readers…0: OMNIKEY CardMan 5×21 00 01
wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt –output-document=/home/xxx/.smartcard_list.txt※/home/xxxは、自分の環境に合わせてくださいもし、ユーザに関係なく反映させるなら、/usr/share/pcsc/smartcard_list.txtを上書きして下さい
sudo /etc/init.d/pcscd start