TL;DR
Mifare Ultralightしか対応してなさそうだよ!
他のType-AやFeliCaとかは読めないよ~
導入
Microsoftの主力タブレットシリーズ、Surface。
の、廉価版Surface Goの、その法人向けモデルfor BusinessにはNFCリーダーが内蔵されているのをご存知でしょうか。
正直、ご存知の方は相当なSurfaceマニアと思われます。
公式サイトの隅っこに小さく書いてるだけですからねコレ。
色々ありまして、コイツの内蔵NFC機能でどこまでやれんのかという技術調査を始めたわけなのですが……。
「ン?何も読めんが?
」
となったので、その記録です。
検証
つーわけで検証をやっていくワケですが。
NFCリーダー
先述の通り、メインはSurface内蔵リーダーです。どうやらコイツはNXP P3003というリーダーを積んでいるみたいです。が、ググっても全然情報がヒットしない……。
対照実験用に、SONY RC-S300、いわゆるPaSoRiもご用意いたしました。
読み取るNFC
NFC、と言われるものには大きく分けて以下の三種があります。
-
Type-A
- NXP社製の、いわゆるMifare。Taspoとか
-
Type-B
- モトローラ社が主導してるやつ。マイナンバーカードとか
-
FeliCa
- 我らがSONYが開発したやつ。Suicaとか
というわけで、上記3種すべてのカードを用意しました。
Type-A
- NXP NTAG213
- 「NFCチップ」といえばだいたいコレ
- 今回はサ○ワサプライさんのやつを使いました
- Taspo
- 喫煙者で良かった
Type-B
- 運転免許証
- マイナンバーカード
FeliCa
- ICOCA
- 関西人なんで
- そのへんにあった工場出荷状態のFeliCa
検証用アプリ
PC/SC インターフェースに則って、NFCと通信する簡単なアプリを作りました。
すべてのカードが一意に持ち、暗号化されずに公開されているIDm/UIDの取得を行います(シリアルナンバーみたいなもんです)。
検証結果
Surface内蔵NFCリーダーで読み取りに成功したのはNXP NTAG213のみでした。ハァ?
ちなみにPaSoRiで検証してみた場合では全てのNFCが読み取れたので、マジで内蔵リーダーが終わってます。
Type-AはType-Aでも
さて、NTAG213の読み取りには成功したものの、同じType-AであるTaspoは読み取ることができませんでした。
というのも、NTAG213とTaspoに搭載されているNFCチップとでは、以下の通り厳密には異なるチップなんですよね。
チップ | |
---|---|
NTAG213 | MIFARE UltraLight |
Taspo | MIFARE Standard1K |
上記二種の違いの詳細は各々で調べていただいたらと思いますが、なにせSurfaceくんの内蔵NFCリーダーはMIFARE UltraLightしか対応してねー!ってことみたいです。トホホ
公式回答
僕が間違ってるかもしれないので、一応Microsoftにも聞いておきました。
回答を抜粋します。
TypeB 及び FeliCa は対応しておらず、TypeA は対応していますが、Surface に搭載されている NFC は非常に限定的である為、カードの種類によって動作しないものがございます。
まじか~い
ここで言っている「Type-Aは対応していますが~」の下りは、おそらく先述のチップ種別を指すものと思われます。
また、MicrosoftTechCommunityでも、以下のようにNFCサポートが限定的であることが示唆されています。
Even though we have only limited support for NFC,
ちっちゃくこっそりな。
結論
Surface Go 3 for Business のNFC対応は非常に限定的でした。
とはいえ、Surfaceの用途に照らせば、Type-A ULが読めたら最低限支障はないということでしょう。NFCで一番普及しているのがコイツですから。
それはそれでいいんだけど、それはちゃんと書いておいてほしかった。