こんにちは、
私の製品 では、PN5190とNFC Libを使って 様々な種類のカードを読み取っています。ある お客様 で 問題 が発生し ています。 デバイス は オリジナル の MIFARE Classic カード を 問題 なく 読み込む のですが、 その お客様は すでに NXP チップ と インフィニオン チップ を 使ったカードを混用しています。
The NXP cards CAN be read just fine.しかし、インフィニオン製カードの場合、デバイスは認証を行うことができません。私は簡略化されたAPIデモをベースに使用していますが、これらのカードは「 ATQAが統合されたタイプAレイヤー3カード」として検出されます。ATQA は 0x0400 、 SAK は 0x88 です が 、 NXP チップ では SAK が 0x08 と 表示されます 。
まず、 MIFARE Classicで使っている のと同じコードを実行しようとしました が、 認証が失敗しました。PeerInfo.uTi.uInitiator.tIso14443_3a.bSakのSAKを変更すると、私も同じ結果になります。おそらく、実際のデータはリーダーに保存されており、ピア情報は「双方向」ではない。例を確認しましたが、この特定の状況に関する情報はありませんでした。互換性のあるカードの読み取り方法に関する情報はありますか?
スマホ でカード をCAN読み取 れて問題なく動作 します(元のNXPカードより遅いかもしれませんが、動作します)。 セクター0のダンプは以下のとおりです。
XXXXXXXXC188040043242BCE0001020E
XXXXXXXXXXXXXXXX0000000000000000
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
XXXXXXXXXXXXFF078069XXXXXXXXXXXX
NFCライブラリは、以下のエラーコードを返します。
エラー情報 Comp: 0x0 タイプ: 0x0
の 結果 の 送信中 の 認証する 指示 は 0x20000 。
何か例はありますか?
前もって感謝します。
こんにちは、 @Saydev さん。
あなたの調子が良いといいのですが。
レイヤ3は衝突防止、UID選択、カードのアクティベーションをカバーし、ISO 14443のレイヤ4はデータ交換のための標準化されたコマンドのセットを提供します。基本的なタグ/カードはレイヤー3で処理を停止し、レイヤー4の代わりに独自のメモリ読み書きコマンドを使用します。
お客様がサードパーティのPICC(中身)を使っている場合、デバイス向けに独自のカスタムコマンドセットを実装する必要があります。
また、NxpNfcRdlib -> types -> ph_Status.h も参照してください。ステータスコードの定義については、こちらをご覧ください。
よろしくお願いいたします。
エドゥアルド。
良いニュースです、
カードの読み取りはできました。カードの読み取り方法を簡略化されたAPIからNfcrdlibEx4_MIFAREClassic.cに示されている方法に変更しただけです。例えば、マクロ phalMfc_Authenticate はこれらのカードで問題なく動作するようですが、MFC_AUTHENTICATE は失敗していました。