[Android] NFC MIFARE Ultralight を初期化するアプリ
NFC、MIFARE Ultralight を手に入れました。このカードについて詳しくは、暮井 慧ファンクラブ 参照。
あらかじめデータの書き込みはそれなりの価格がしたため、未初期化のカードを手に入れたのだけど、普通の NFC ライターアプリでは書き込みができませんでした……。
NFC Mifare タグ専用 NDEF 化ツール
Mifare を初期化できるアプリで、唯一見つけることができたのが、この Android アプリ NFC Mifareタグ専用NDEF化ツール。神ツールです!
NFC をかざすだけで、Mifare のタイプを判断し、ボタンタップで初期化(NDEF というフォーマット化)してくれます。
NDEF 化後は、一般的な NFC リーダー/ライターアプリで読み書きができます。
MIFARE Ultralight 仕様など
最初は、仕様などを読んで自力で初期化しようとしたけど、時間がかかりそうなので断念。
仕様は、MIFARE Ultralight :: NXP Semiconductors の MIFARE Ultralight as Type 2 Tag (pdf) です。
【FeliCa】PaSoRi RC-S380対応 FeliCa+Mifareアクセスライブラリ公開 のコードを利用して、NFC 内のデータを読み書きしてました。
OTP(One Time Programmable、各 bit 1度のみ 0 から 1 へライトできる)と呼ばれる 4byte 分の領域があり、ここがすべて 0 だと未初期化と判断されるようです。仕様によると(6.5.1 INITIALISED Formatting Procedure)、次のように決まるようですね。
- byte 0: E1h (マジックナンバー)
- byte 1: 10h (NFC Forum Type 2 Tag Operational version number)
- byte 2: 06h (データ領域 byte 数を 8 で割った値、MIFARE Ultralight は 48byte / 8 = 6)
- byte 3: 00h
OTP 領域のみの変更で、一般的な? NFC リーダー/ライターは反応だけするようになったが、ライトできない状態のままで、かつ上記コードからもカードを検出できなくなってしまいここで断念。さらにきちんと 4page 目からのデータ領域に NDEF メッセージをライトする必要がありそう(仕様を見ると、03 00 FE でよさそう?)。
Windows PC で NFC の読み書きには、SONY 非接触ICカードリーダー/ライター PaSoRi(パソリ) USB対応 RC-S380 を今回購入して使用しました。Windows 8.1 で問題なく動いてます。