[NFC] Nexus S で FeliCa Lite を読めるようにするためのパッチ

1603 views
Skip to first unread message

Wataru Takemura

unread,
Jan 10, 2011, 6:48:04 AM1/10/11
to 日本Androidの会
ソニーの竹村です。

昨日のABC2011においてFeliCa/NFCに関するカンファレンスに、非常に多くの方にお越しいただきありがとうございました。
その際にお配りさせていただいたFeliCa LiteをNexus Sで読み取るにあたって注意点があります。(枚数が少なくてすいませんでし
た!)

Nexus SにFeliCa Liteをそのままかざすと"Unknown tag type"と表示され、本来読み込まれるはずのURL情報が表示
されません。
現在openになっているGingerbreadの見たところ、残念ながらソースの一部がNFC-compliantでないためFeliCa Lite
が読み込めないようです。
アプリケーションを開発するにあたっては、libnfc.soの書き換えが必要です。(要rooted)

android source (external/libnfc-nxp) のdiffとバイナリです。

source diff: http://bit.ly/gDWg5g
libnfc.so: http://bit.ly/epi06V

Nexus S の /system/lib/libnfs.so を置き換えて再起動してください。
※あくまでworkaroundで正式な修正ではありません。

簡単な解説です。
Nexus S は、System Code = 0xffff (Wild Card) で Polling コマンドを実行しています。この場合、
かざされたFeliCaが全て検知されます。カードからのレスポンスにカードの System Code が格納されており、その System
Code が 0x12fcのものをNDEF Type3 Tagと判断し、それ以外を Unknown と判断します。Suicaなどをかざすと検知
はされますが"Unknown tag type"と表示されるのはこのためです。

さて、FeliCa Lite は Pollingに対して複数のsystem codeを持つように振る舞います。
- Polling (system code = 0xffff) の場合、system code = 0x88b4 を返す。
- Polling (system code = 0x88b4) の場合、system code = 0x88b4 を返す。
- Polling (system code = 0x12fc) の場合、system code = 0x12fc を返す (NDEF
Type3 Tag)。

Polling (system code = 0x12fc) で検知した場合にのみ、NDEF Type3 Tag として振る舞うわけです。

NFC Forum の規定では、Polling (system code = 0x12fc) コマンドを実行しなければいけないとありますが、
Gingerbreadは0xffffでのみPollingしているので、同一カードに複数のsystem codeが存在することを考慮にいれずに、
0xffffでPollingしとけばいいか~としてしまったのかもしれません。

本来ならば、0xffffでpolling した後に、0x12fcで再度pollingする必要があります。しかし、libnfcのソースが読み込め
ていないので、とりあえずadhocに「system code = 0x88b4 も NDEF Type3 Tag とみなして処理を続ける」とい
うような処理にしています。libnfcのソースを読み進めた方はちゃんとした修正方法を模索してみてください。

FeliCa Liteに関する技術情報は以下から閲覧可能です。
http://www.sony.co.jp/Products/felica/business/tech-support/index.html

NDEF Type3 Tag Smart Poster 発行ツール(Win/Mac) はこちら:
http://www.sony.co.jp/Products/felica/business/products/tagreader.html

Wataru Takemura

unread,
Feb 25, 2011, 1:10:05 AM2/25/11
to 日本Androidの会
2.3.3 では修正されているようで、素の状態でFeliCa LiteのNDEFが読めるようです。
Reply all
Reply to author
Forward
0 new messages