Android 4.4のHCE(Host Card Emulation)がどうしても気になる。
SDK for NFC Starter Kitのサンプルでは、そもそもどうやって動くのかがわからない。
もっと何か、解析的なツールはないものか・・・。
どうやら、NDEF WriterがType4Aに対応しているらしい。
よし、とやってみたが・・・まあ、動かんわな。
最初は「タグが正しくない」みたいなエラーだったのだけど、何度かやるとPaSoRiが応答しないというようなメッセージになってしまった。
うーむ。
よくわからないので、自己診断をしてみよう。
PaSoRiのドライバには、診断ツールも入っているのだ。
やってみると、特に問題は無いらしい。
よかった。
せっかくなので、診断ログを見てみると・・・ATRという文字があった。
確かこれは、ATtRibuteとかそんなのの略だったよな?
これが返ってくるのはカードをPaSoRiにかざしたまま診断したときだ。
つまり、これはカードを読んだ結果らしい。
Nexus7をかざすと、ちゃんと成功で返ってきている。
ということは、やはりNexus7を何らかのタグとしてはわかってくれているみたいだ。
ATRは、こんな数字だった。
3B8F8001804F0CA00000030611FFDF0000000059
なんか、わからんね。
解析しよう。
http://en.wikipedia.org/wiki/Answer_to_reset
ここと、Interface誌2012年4月号のPC/SC資料を読みながら解析した。
途中から、PC/SCの資料がないとわからなかったので、そこはpcsc3_v2.01.09_sup.pdfを読んだ。
3B:TS
Direct Convention
8F:T0
8:TD1, TC1, TB1, TA1の順。TD1のみ有り。
F:historical bytes。15バイト。
80:TD1
8:TD2, TC2, TB2, TA2の順。TD2のみ有り。
0:T=0(character-oriented)
T=0...character-oriented protocol
T=1...block-oriented protocol
01:TD2
0:TD3, TC3, TB3, TA3の順。どれも無し。
1:T=1(block-oriented)
804F0CA00000030611FFDF00000000:historical bytes
80:カテゴリ・インジケータ
4F:アプリケーション識別子の存在インジケータ
0C:長さ
A000000306:RID(この値は、PC/SC WorkgroupのAIDらしい)
11:SS(pcsc3_v2_01_08_sup.pdfに表がある)
FeliCa
FFDF:NN
RFU
00000000:RFU
59:TCK
チェックサムみたいなやつ。
メモ書きをそのまま貼り付けた。
よくわからないけど、FeliCaと見ているのか?
でも、その次のNNは変な値が入っている。PC/SCにはちゃんとFeliCaの定義値があるというのに。
ちなみに、MIFARE Ultralight-Cをかざした場合はこうなった。
03:SS
ISO 14443A part3
003A:NN
MIFARE Ultralight C
うん、SSもNNもあってる。
ちゃんとFeliCaをかざすと、診断結果はこうなる。
カードとの通信(PC/SC): OK
ATR : 3B8F8001804F0CA00000030611003B0000000042
Target Name : FeliCa
Target Type : FeliCa
Baud Rate : PCD->PICC : 424, PICC->PCD : 424
これがNexus7をかざすと、こうなる。
カードとの通信(PC/SC->FeliCa): OK
うーむ。
これはAndroid BeamをOFFにしたときの値。
Android BeamをONにすると、こうなる。
カードとの通信(PC/SC): OK
ATR : 3B8F8001804F0CA00000030611FFDF0000000059
Target Name : FeliCa NFC-DEP Target
Target Type : FeliCa(NFC-DEP Target)
Baud Rate : PCD->PICC : 424, PICC->PCD : 424
そう、さっきはこの値を解析したのだな。
ログにも出ているが、DEPでターゲット側になったときの情報なのだろう。
NNもRFUな値になっているが、実はNFC-DEPの値かもしれんな。
じゃあ・・・そうじゃないときのATRは取れてないということになる。
と何度か繰り返すと、Android BeamをOFFにしていてもNFC-DEP Targetになってることがあった。
よくわからんので、Nexus7(2012)をかざすと、NFC-DEP Targetになった。
もう、さっぱりわからん・・・。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。