RC-S330をLinuxで使う

はじめに

近年すっかり普及してしまったFelicaなどの非接触型ICカード。
リーダーも手軽に入手できるようになっていて、これを利用した様々なシステムの構築ができそうである。
現在、もっとも有名なリーダーはおそらく SONY の RC-S330 であろう。


これは、Windows 用のドライバが用意されているものの、Linux用は用意されていないらしい。

そこで、本稿ではlibnfcを使ってRC-S330を利用する方法を解説する。

作業環境

本稿では、Ubuntu10.04LTSをつかって解説していく。他のデストリビューションを使用する場合は、適宜読み替えていただきたい。

libnfc とは

libnfc とはNFC (Near Field Communication : 近距離無線通信) デバイスを利用するためのライブラリである。Felica はNFC と下位互換性を維持している。

libnfcを手に入れる

libnfcのソースを以下のサイトからダウンロードする。

2010年10月現在の最新バージョンは1.3.9であるが、サンプルプログラムにバグがあるようである。(詳しくは調べていない)今回はサンプルプログラムを使って動作確認を行うので、前バージョンの1.3.4をダウンロードする。

FireFoxなどのブラウザで、上記サイトにアクセスする。
トップページのメニューにある Download をクリックする。

Stable release の libnfc download section をクリックする。

libnfc-1.3.4.tar.gz をクリックしてダウンロードする。

グラフィカルなブラウザ環境がない場合には、wget コマンド等をつかって、ダウンロードする。

libnfc のインストール

libnfc のインストールを行う。

まずは、ダウンロードしてきたtarファイルを適当な場所にほどき、展開されたディレクトリの中に入る。展開されるディレクトリは libnfc-1.3.4 である。

$ tar zxvf libnfc-1.3.4.tar.gz
$ cd libnfc-1.3.4

次にコンパイルに必要なパッケージをインストールしておく。
Ubuntu10.04 インストール直後での場合はい、以下のパッケージをインストールする。

$ sudo apt-get install libusb-dev
$ sudo apt-get install libpcsclite-dev

これで make することはできるが、RC-S330 を使うことはできない、そこでソースを少しいじる。
src/lib/drivers/pn533_usb.c を vi などで開き、RC-S330 のデバイスIDを追加する。 61行目付近を以下のように編集する。

// array of {vendor,product} pairs for USB devices
usb_candidate_t candidates[]= {{0x04CC,0x2533},{0x04E6,0x5591},{0x054C,0x02E1}};

あとは、通常のコンパイル&インストール手順を踏めばよい。

$ ./configure
$ sudo make
$ sudo make install

libnfc のインストールは以上である。