2012/01/25

ACR-122UというR/W (1)

ACR-122Uとは、Advanced Card Systems社が販売しているNFC Reader/Writerである。
コメントで情報をいただいたので、まとめてみよう。


購入は、ベルギーのtouchatag社や、香港のACRからできるらしい。
タグが10個ついて、39.95ドルとなっている(税別)。
今日は1ドル=77.6円くらいなので、3100円くらいになる。

FeliCa Liteのカードは、350円くらい。
PaSoRi+FeliCa Lite x 10 = 2300 + 350 x 10 = 5800円。


ACR-122Uについては、メーカーのサイトから情報を入手できる。

日本語
English

技術資料のPDFもあるので、探す手間が省ける。


私は詳しくないのだが、本体がCCIDとPC/SCに対応しているらしい。
(PaSoRiもPC/SCドライバがあり、Type-Bへのアクセスができる。)
Personal Comuputer /Smart Card。WindowsでICカードを利用するための標準API仕様とのことだ

CCIDは、Chip/Smart Card Interface Devicesという仕様らしい
これも、Windows/Microsoftの仕様ということだろうか。

ACR-122Uは、Windows、Linux、Macなどのドライバが提供されている。
SDKは、Windowsのようだ。


いただいたコメントで気になったのは "pseudo-APDU"というもの。
Application Protocol Data Unit。

http://acs.com.hk/drivers/eng/API_ACR122U.pdf
p.5に、ACR-122Uと通信するときのフローチャートがある。
PCとは、PCSCで通信することになる。

p.6以降に、PICCと通信するときのインターフェースが記載されている。
PICCというのは、Proximity IC Cardの略で、今回はNFCカードのことになる。
このコマンドが、他社のR/Wとはかなり異なる。
PC/SC対応によるものかもしれないが、私は普段、R/Wに有線プロトコル(wired-protocol)を送信してアクセスしているので、気になった。

 

コメントによると、FeliCaのアプリ層プロトコルは、4byteの"疑似APDU"ヘッダを追加するとのこと。
先ほどのPDFでは、p.22にFeliCaタグアクセスについて記載されている。


今日は、ここまで。
次回、Pesudo APDUがどういうものか見ていこう。

3 件のコメント:

  1. For what it's worth, I've posted some examples of the pseudo-APDUs (although some of the headers are missing) to https://gist.github.com/1671707.

    Since BlogSpot disapproves of me using HTML formatting, I've added a better (annotated) example at https://gist.github.com/1671890.

    The "0xFF 0x00 0x00 0x00 0x0A" bit is the 5-byte (not 4-byte - sorry for misleading you, although I wasn't looking at examples, then) pseudo-APDU header (the 0x0A represents the length of the following data in bytes), and the reader command (0xD4/InAutoPoll) follows. The reader response is unusual in that it doesn't have a header like this (although it has a response code of 0xD5, and lots of data that I don't understand, without looking at the PN532 datasheet) afterwards).

    The interesting bit (the complete FeliCa Polling Response packet - albeit without a System Code, in this case) is in the 3rd section of my example; and the "0x90 0x00" bit is just a fake ISO 7816 status (Success) indication.

    At a cursory glance, some of the chipset command set looks fairly similar to the PaSoRi one (which you've probably already encountered).

    I hope that helps,

    Tyson.

    返信削除
  2. このコメントは投稿者によって削除されました。

    返信削除
  3. I read your gist, and libnfc's ACS driver.
    ACS driver always send "FF 00 00 00 (length+1) D4 (data...)".
    That data mean "Direct Transmit" Pseudo APDU.

    And ACS driver reject "D5 4B ... 90 00" in read data.
    That means "APDU emulation bytes".

    Your gist's packet means like below in PN532:
    -------------------
    TX:InAutoPoll
      PollNr:14
      Period:02
      Type1:20 : passive 106kbps 14443-4A
      Type2:10 : Mifare
      Type3:03 : passive 424kbps
      Type4:11 : FeliCa 212kbps
      Type5:12 : FeliCa 424kbps
      Type6:04 : Jewel

    RX:InAutoPoll RESPONSE
      NbTg :01
      Type1:11 : FeliCa 212kbps
      Ln1 :13
      AutoPollTargetData1 :
       01 : System No.
       12 : Length
       01 : Response Code
       01 xx xx xx xx xx xx xx : IDm(NFCID2)
       00 f0 00 00 02 06 03 00 : PMm

    [90 00] : Success(ACS response)

    返信削除

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。