【问题标题】:NFC Card Emulation Issue S3 (Android 4.3) and ACR122UNFC 卡仿真问题 S3 (Android 4.3) 和 ACR122U
【发布时间】:2014-02-12 06:42:53
【问题描述】:

在我们的项目中,我们尝试在 NFC 读卡器 ACS ACR122U 中模拟 ISO14443-3 PICC,并使用 NFC 手机(三星 S3 或 S4)读取该卡。在 S4 的情况下,我们可以与仿真卡成功通信,但在 S3 的情况下,没有 NFC 事件。

我们注意到所有来自 Android (logcat) 的命令/响应和日志,这表明 S3 无法激活 LLCP 通信。我正在发布我们拥有的所有数据,请帮助我们解决问题。

对 ACR122u(读卡器中的 PN532 控制器)的命令/响应:

COMMAND:FF0000002DD48C0400000000002001FE0FBBBAA6C9890000000000000000FFFF01FE0FBBBAA6C98900000647666D01011000
RESPONSE:D58D08E080

COMMAND:FF00000002D486
RESPONSE:D5870000A4040007D276000085010100

COMMAND:FF00000004D48E6A82
RESPONSE:D58F00

COMMAND:FF00000002D486
RESPONSE:D5870000A4040007D2760000850100

COMMAND:FF00000004D48E6A82
RESPONSE:D58F00

COMMAND:FF00000002D486
RESPONSE:D5870000A4040C05A00000000100 (Data we want to send to emulated card from NFC phone)

响应D58D08E080表示读卡器模拟为:

  • ISO/IEC 14443-4 PICC --> 是
  • DEP --> 否
  • 框架类型 --> Mifare

现在,当我们将 S4 放在阅读器上时,我们会看到以下日志:

02-10 10:23:13.711: I/BrcmNci(3355): --
02-10 10:23:13.711: I/BrcmNci(3355): TX: Type 4 Tag Command (13 bytes)
02-10 10:23:13.711: I/BrcmNci(3355): CLA:0x00
02-10 10:23:13.711: I/BrcmNci(3355): INS:0xA4(Select)
02-10 10:23:13.711: I/BrcmNci(3355): P1:0x04(Name)
02-10 10:23:13.711: I/BrcmNci(3355): P2:0x00(First or Only)
02-10 10:23:13.711: I/BrcmNci(3355): Lc:0x07(7)
02-10 10:23:13.711: I/BrcmNci(3355): Data(7 bytes)
02-10 10:23:13.711: E/AudioResampler(2497): Unsupported sample format, 1 bits, 2 channels
02-10 10:23:13.716: I/BrcmNci(3355): 00 : d2 76 00 00 85 01 01
02-10 10:23:13.716: I/BrcmNci(3355): Le:0x00(0)
02-10 10:23:13.716: I/BrcmNci(3355): --
02-10 10:23:13.716: I/AudioHardwareTinyALSA(2497): AudioStreamOutALSA::write setDevice

02-10 10:23:13.741: I/BrcmNci(3355): --
02-10 10:23:13.741: I/BrcmNci(3355): RX: Type 4 Tag Response (2 bytes)
02-10 10:23:13.746: I/BrcmNci(3355): SW:0x6A82(Not Found)
02-10 10:23:13.746: I/BrcmNci(3355): --
02-10 10:23:13.746: I/BrcmNci(3355): --
02-10 10:23:13.746: I/BrcmNci(3355): TX: Type 4 Tag Command (12 bytes)
02-10 10:23:13.746: I/BrcmNci(3355): CLA:0x00
02-10 10:23:13.746: I/BrcmNci(3355): INS:0xA4(Select)
02-10 10:23:13.746: I/BrcmNci(3355): P1:0x04(Name)
02-10 10:23:13.746: I/BrcmNci(3355): P2:0x00(First or Only)
02-10 10:23:13.746: I/BrcmNci(3355): Lc:0x07(7)
02-10 10:23:13.746: I/BrcmNci(3355): Data(7 bytes)
02-10 10:23:13.746: I/BrcmNci(3355): 00 : d2 76 00 00 85 01 00
02-10 10:23:13.746: I/BrcmNci(3355): --
02-10 10:23:13.786: I/BrcmNci(3355): --
02-10 10:23:13.786: I/BrcmNci(3355): RX: Type 4 Tag Response (2 bytes)
02-10 10:23:13.786: I/BrcmNci(3355): SW:0x6A82(Not Found)
02-10 10:23:13.786: I/BrcmNci(3355): --

02-10 10:23:14.996: I/BrcmNci(3355): --
02-10 10:23:14.996: I/BrcmNci(3355): RX: Type 4 Tag Response (2 bytes)
02-10 10:23:14.996: I/BrcmNci(3355): SW:0x9000(Command Completed)
02-10 10:23:14.996: I/BrcmNci(3355): --

但如果我们尝试使用 S3,我们只会得到这个日志:

01-07 03:16:47.555: D/NFCJNI(2694): Discovered P2P Target
01-07 03:16:47.555: D/NfcService(2694): LLCP Activation message
01-07 03:16:48.880: D/NFCJNI(2694): Discovered P2P Target
01-07 03:16:48.885: D/NfcService(2694): LLCP Activation message
01-07 03:16:51.860: D/NFCJNI(2694): Discovered P2P Target
01-07 03:16:51.860: D/NfcService(2694): LLCP Activation message
01-07 03:16:53.185: D/NFCJNI(2694): Discovered P2P Target
01-07 03:16:53.185: D/NfcService(2694): LLCP Activation message
01-07 03:16:58.870: D/NFCJNI(2694): Discovered P2P Target
01-07 03:16:58.870: D/NfcService(2694): LLCP Activation message

并且任何注册到任何 NFC 事件的 Android 应用都不会被唤醒。似乎它们是 S3 和读卡器之间的一些兼容性问题或 S3 的一些 NFC 实现问题。

您能否告诉我们,当两部手机具有相同的操作系统版本(即 Android 4.3)时,为什么会有这种通信差异。为什么 S3 没有超越“LLCP 激活消息”?

我们正在使用的两部手机的系统信息都可以在这里找到

【问题讨论】:

    标签: android nfc nfc-p2p hce


    【解决方案1】:

    如果您只想使用 ISO-DEP 卡模拟,您可能需要正确注册 ACR122U NFC 设备以进行被动 ISO 14443-4 PICC 模拟。

    目前你使用TgInitAsTarget命令如下:

    D4 8C (TgInitAsTarget)
      04 (Mode = PICC only)
      0000 (ATQA/SENS_RES = invalid)
      000000 (NFCID1t/UID = 0x80000000)
      20 (SAK/SEL_RES = ISO 14443-4 supported)
      01FE0FBBBAA6C9890000000000000000FFFF (FeliCaParams)
      01FE0FBBBAA6C9890000 (NFCID3t)
      06 47666D010110 (6 ATR_RES general bytes)
      00 (0 historical bytes)
    

    但是,由于您不想使用 NFC-DEP 模式/FeliCa 模式,您肯定希望将 FeliCa 参数、NFCID3t 和 ATR_RES 通用字节设置为零。此外,您可能希望设置一个更有用的 UID 值和一个有效的 ATQA(其中一个位帧 anticlossion 位已设置)。我不确定这是否有必要,但我建议您也设置被动模式标志。

    D4 8C (TgInitAsTarget)
      05 (Mode = PICC only | passive mode only)
      0400 (ATQA/SENS_RES)
      012345 (NFCID1t/UID)
      20 (SAK/SEL_RES = ISO 14443-4 supported)
      000000000000000000000000000000000000 (FeliCaParams)
      00000000000000000000 (NFCID3t)
      00 (no ATR_RES general bytes)
      00 (no historical bytes)
    

    此外,您可能希望在某些 ACR122U 设备上设置额外的配置寄存器。请参阅this answer 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多