2011年1月4日火曜日

NFC メモ

なんか、混沌としてきたので、いったん出す。

以降はただのメモ
・Android NFC のコード(@hide とか native 側) とかには felica って名前の付いた定数とか関数とかたくさんある。

・多分 polling して felica を認識してるときのコマンドは
0x00 0xff 0xff 0x01 0x00

  ・REQ コマンドの 0x00, phHal_eFelicaCmdList の phHal_eFelica_Check じゃないかなぁ
  ・システムコードがかえってきてるから多分リクエストコードは 0x01 と予想
  ・システムコードに依存しないで polling してると思うからシステムコードは 0xffff と予想
  ・多分タイムスロットは 0 だと思うから 0x00 と予想


・リフレクションで transceive を呼び出して felica と通信できないかと試したけど、NFCSTATUS_PENDING が帰ってきてよくわからない

  たぶん
  ・ コマンドが認識できなくて PICC がレスポンスを返していない?
     ・コマンドが間違い?
     ・プロトコルが間違い?
     ・Android NFC の transceive では 0xF0 という Falica Raw コマンド?らしき命名のがつかわれているので、read コマンドがそもそもできない?というか 0xF0 って JISX6319-4 の表10にないんだけど、、、なくはないか任意選択のコマンドってことなのか?
     ・phHal_eFelicaCmdList
  ・ IDm が認識できなくて PICC がレスポンスを返していない?
     ・転送データの形式が間違い?
     ・プロトコルが間違い?

・基本的には PICC 側にデータを投げて、仕掛けた callback で結果をうけとっている

・CRCは Android 側で付加してくれる?それとも transceive のデータに含む?
  ・ polling してるんだから、Android 側のような気もしないでもないのだが。。。


--------------------------------------------------------------

参考ページ

vvacame さんの togatter

Android 2.3 GingerBread NFCをやってみる - TOPGATE Google関連技術サイト -

NFC とは?

NFC Forum

NFC(Near Field Communication)ってナニ?/株式会社トッパンTDKレーベル -

Felica -Wikipedia-

MIFARE -Wikipedia-

PaSoRi -Wikipedia-

JISX6319-4

libnfc

IDm

Felica

IC SFCard Fan

規格採用例
Mifare® (ISO/IEC 14443 Type A)/td>ICテレフォンカード、たばこカードのほか、欧州では広く普及
ISO/IEC 14443 Type B住民基本台帳カード、社員証、学生証など
FeliCa™Suica、Edy、PASMO、ICOCA、おサイフケータイなど、国内では交通系カードや電子マネーとして広く普及
ISO/IEC 15693物流、小売などのICタグ

※ FeliCa™ はソニーの登録商標です。
※MIFARE®はNXPセミコンダクターズの登録商標です。


NFC基本機能
●ISO/IEC18092、FeliCa™、MIFARE® (ISO/IEC 14443 Type-A) 、 そしてISO/IEC14443-4(T=CL) のICカード/タグといった非接触ICカードとして機能する、カードエミュレーション機能
●上記規格に対応するICカード・タグの読み書きができる、リーダ・ライタエミュレーション機能
●NFC対応の機器間で、212kbpsや424kbpsでの通信ができる、端末間通信機能
NFC拡張機能
●NFC対応の機器間で、BluetoothやWiFiのペアリングができる、NFC端末間ペアリング機能


# 大学の学生証(東工大)は Nexus S で反応しませんでした。
# suica, pasumo, edy は反応、felica として認証されてました。
# 武蔵小杉の駐輪場カードは反応したが、RawTarget は other でした。


■ Felica メモ

・ICチップ内部のメモリは16バイト固定長のレコードのみがサポートされている
・変調は ASK10% 、マンチェスタ(Manchester)符号を採用
・暗号処理
  ・相互認証にトリプルDES
  ・通信路にDESもしくはトリプルDESを利用
  ・Dualカードタイプ(接触/非接触)では公開鍵暗号方式の処理が可能なものもある

・FeliCaポート/パソリを使用したソフトウェアを開発するためにはSDK For FeliCaが必要
・SDK For FeliCa のバージョン
  ・Lite : 平文通信を利用したアプリケーションを開発できる。
  ・Professional : セキュリティ機能を利用したアプリケーションを開発できる。
  ・Enterprise : 上記機能に加え、カードの発行(フォーマット)機能を備える。

SDK For FeliCa の wiki

・SDK For FeliCa は法人向けであり個人では購入することはできない
・個人レベルで FeliCa 対応アプリケーションを開発するものとして felicaliblibpasori が有志により開発されている

felicalib
libpafe

--------------------------------------------------------------

ソケット関係

NFC Forum,機器間の相互運用の促進とピア・ツー・ピア通信を実現する仕様を発表

NFC Forum Announces Two New Specifications to Foster Device Interoperability and Peer-to-Peer Device Communication

--------------------------------------------------------------
2011/01/25 追記

# Felica じゃなくて FeliCa なんだね。C が大文字。知らなかった。

FeliCa Lite の特徴
 ・小型化
 ・セキュリティー機能を簡易化
   ・FeliCa Liteはサーバーからの片方向認証のみ
 ・シンプルなファイルシステム
 ・FeliCa Standardとの下位互換性
 ・低コスト
 ・ユーザーメモリー領域は、1ブロック16byteが14ブロック分の224byte

その他リンクメモ
 ・http://www.mail-archive.com/android-developers@googlegroups.com/msg138446.html

 ・第481回:iC通信とは - ケータイ Watch -

コードメモ
 ・com_android_nfc_NativeLlcpServiceSocket.cpp

 ・NfcService.java

 ・com_android_nfc_NativeNfcManager.cpp

 ・com_android_nfc.cpp

 ・INfcTag.aidl

 ・NativeNfcManager.java

 ・phLibNfc_initiator.c

 ・phLibNfc_SE.c

 ・phLibNfc_discovery.c

 ・NativeLlcpConnectionlessSocket.java
 
 ・phHal4Nfc_ADD.c

1 件のコメント:

  1. Hi,
    Could you tell me how do you solved the NFCSTATUS_PENDING message? I've got it every time that I try to send an APDU command via the TRANSCEIVE method with reflection. Thanks!

    返信削除