Java &引用;超时,目标尚未回答;来自带Jewel/Topaz512 NFC标签的ACR122U读卡器

Java &引用;超时,目标尚未回答;来自带Jewel/Topaz512 NFC标签的ACR122U读卡器,java,nfc,acr122,lib-nfc,pn532,Java,Nfc,Acr122,Lib Nfc,Pn532,我正在构建一个Windows/Java程序(使用javax.smartcardio),使用ACR122U设备(内置PN532 NFC控制器芯片)与Jewel/Topaz512标签(来自Innovision/Broadcom)通信 我实现了Topaz512协议(从),但是只有一半的命令在工作 一些有效的命令:RID、RALL、READ、WRITE-NE、RSEG 有些命令不起作用:WRITE-E、READ8、WRITE-E8、WRITE-NE8 使用WRITE-NO-ERASE命令的示例 例如

我正在构建一个Windows/Java程序(使用
javax.smartcardio
),使用ACR122U设备(内置PN532 NFC控制器芯片)与Jewel/Topaz512标签(来自Innovision/Broadcom)通信

我实现了Topaz512协议(从),但是只有一半的命令在工作

  • 一些有效的命令:
    RID、RALL、READ、WRITE-NE、RSEG
  • 有些命令不起作用:
    WRITE-E、READ8、WRITE-E8、WRITE-NE8
使用WRITE-NO-ERASE命令的示例 例如,当我发送一个禁止写入擦除命令时,我会得到以下结果:

命令:
FF:00:00:0C:D4:40:01:1A:7F:42:38:01:9A:00:17:E8

其中:

  • D4:40:01
    是InDataExchange命令
  • 1A:7F:42
    是写不擦除命令(值:0x42,块0x0F,字节7)
  • 38:01:9A:00
    是4字节的标记UID
  • 17:E8
    是CRC
响应:
D5:41:00:42:90:00

这里的响应是正确的:
0x42
。状态字节(
0x00
)通知一切正常

使用WRITE-with-ERASE命令的示例 下面是我发送带擦除写入命令时得到的结果:

命令:
FF:00:00:0C:D4:40:01:53:7F:42:38:01:9A:00:28:6E

其中:

  • D4:40:01
    是InDataExchange命令
  • 53:7F:42
    是带擦除的写命令(值:0x42,块0x0F,字节7)
  • 38:01:9A:00
    是4字节的标记UID
  • 28:6E
    是CRC
响应:
D5:41:01:90:00

这里,状态字节(
0x01
)通知PN532检测到的超时。(来自(p67):“超时,目标尚未应答-0x01”)

此外,当我删除PN532超时时(使用
FF:00:00:06:D4:32:02:00:00:00
),非工作命令不会响应
D5:41:01:90:00
,但等待时间更长,则不会得到响应

编辑2020-04-20 我只是尝试使用gscript(来自套件)执行命令,得到了相同的行为。 以下是我的结果:

剧本:

FF 00 00 00 06 D4 32 05 02 02 02

# SAMConfiguration
FF 00 00 00 04 D4 14 01 00

# SetParameters
FF 00 00 00 03 D4 12 04

# InListPassiveTarget: Jewel mode
FF 00 00 00 04 D4 4A 01 04

# InDataExchange: RID
FF 00 00 00 04 D4 40 01 78

# InDataExchange: RALL
FF 00 00 00 04 D4 40 01 00

# InDataExchange: RSEG 0-3
FF 00 00 00 05 D4 40 01 10 00
FF 00 00 00 05 D4 40 01 10 20
FF 00 00 00 05 D4 40 01 10 40
FF 00 00 00 05 D4 40 01 10 60

##########

# GetFirmwareVersion
FF 00 00 00 02 D4 02

# GetGeneralStatus
FF 00 00 00 02 D4 04

##########

# RFConfiguration: No timeout
FF 00 00 00 06 D4 32 02 00 00 00

# InDataExchange: READ-1
FF 00 00 00 05 D4 40 01 01 7F

# InDataExchange: READ-8
FF 00 00 00 05 D4 40 01 02 00

# InDataExchange: WRITE-E-1
FF 00 00 00 06 D4 40 01 53 7F 42

# InDataExchange: WRITE-E-8
FF 00 00 00 0C D4 40 01 55 02 01 02 03 04 05 06 07 08

# InDataExchange: WRITE-NE-1
FF 00 00 00 06 D4 40 01 1A 7F 42

# InDataExchange: WRITE-NE-8
FF 00 00 00 0C D4 40 01 1B 02 01 02 03 04 05 06 07 08
结果是:


Sending: FF 00 00 00 06 D4 32 05 02 02 02
Received: D5 33 90 00
Normal processing.

Sending: FF 00 00 00 04 D4 14 01 00
Received: D5 15 90 00
Normal processing.

Sending: FF 00 00 00 03 D4 12 04
Received: D5 13 90 00
Normal processing.

Sending: FF 00 00 00 04 D4 4A 01 04
Received: D5 4B 01 01 0C 00 38 01 9A 00 90 00
Normal processing.

Sending: FF 00 00 00 04 D4 40 01 78
Received: D5 41 00 12 4C 38 01 9A 00 90 00
Normal processing.

Sending: FF 00 00 00 04 D4 40 01 00
Received: D5 41 00 12 4C 38 01 9A 00 00 10 25 00 00 10 3F
00 01 03 F2 30 33 02 03 F0 02 03 03 E3 D1 01 DF
54 02 65 6E 30 31 32 33 34 35 36 37 38 39 30 30
31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 55 55 AA
AA 12 4C 06 00 01 E0 00 00 00 00 00 00 90 00
Normal processing.

Sending: FF 00 00 00 05 D4 40 01 10 00
Received: D5 41 00 38 01 9A 00 00 10 25 00 00 10 3F 00 01
03 F2 30 33 02 03 F0 02 03 03 E3 D1 01 DF 54 02
65 6E 30 31 32 33 34 35 36 37 38 39 30 30 31 32
33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 55 55 AA AA 12
4C 06 00 01 E0 00 00 00 00 00 00 00 00 00 00 00
00 00 47 90 00
Normal processing.

Sending: FF 00 00 00 05 D4 40 01 10 20
Received: D5 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 90 00
Normal processing.

Sending: FF 00 00 00 05 D4 40 01 10 40
Received: D5 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 90 00
Normal processing.

Sending: FF 00 00 00 05 D4 40 01 10 60
Received: D5 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 90 00
Normal processing.

Sending: FF 00 00 00 02 D4 02
Received: D5 03 32 01 06 07 90 00
Normal processing.

Sending: FF 00 00 00 02 D4 04
Received: D5 05 01 00 01 01 00 00 02 80 90 00
Normal processing.

Sending: FF 00 00 00 06 D4 32 02 00 00 00
Received: D5 33 90 00
Normal processing.

Sending: FF 00 00 00 05 D4 40 01 01 7F
Received: D5 41 00 47 90 00
Normal processing.

Sending: FF 00 00 00 05 D4 40 01 02 00
Received:
wrong SW size for:

Sending: FF 00 00 00 06 D4 40 01 53 7F 42
Received:
wrong SW size for:

Sending: FF 00 00 00 0C D4 40 01 55 02 01 02 03 04 05 06
07 08
Received:
wrong SW size for:

Sending: FF 00 00 00 06 D4 40 01 1A 7F 42
Received: D5 41 00 47 90 00
Normal processing.

Sending: FF 00 00 00 0C D4 40 01 1B 02 01 02 03 04 05 06
07 08
Received:
wrong SW size for:

Script was executed without error...

不久前,我详细研究了这一点,并得出结论,NXP的PN532 NFC控制器芯片的固件存在问题,使其无法成功地使用NFC论坛类型1标签(黄玉/珠宝品牌)接收某些命令。如前所述,ACR122U基于该芯片

当我试图使用
write-E8(0x54)
命令一次写入8个字节块时,收到的响应是
0x01
,这是等待标记响应的超时

我尝试过但不起作用的东西:

InDataExchange
中包含UID echo,我甚至玩了UID echo的endianness,结果仍然一样

使用
inCommunicateThru
命令而不是
InDataExchange
,并在应用程序级别计算CRC1和CRC2值(结果相同)

我得出的最终结论是:

PN532无法写入类型1标记上的页面
0x10
或更大的页面,这使得无法写入流行型号(如Topaz 512)上的全部内存

推荐:


这一问题与2012年的Topaz 512有关,当时它是一款非常低成本、高内存的NFC标签。现在有了NAG215和NTAG216型号,我建议使用具有高内存和与NFC阅读器通用兼容性的型号。

不久前,我详细研究了这一点,并得出结论,NXP的PN532 NFC控制器芯片的固件存在问题,使其无法成功接收带有NFC论坛类型1标签(黄玉/珠宝品牌)的某些命令. 如前所述,ACR122U基于该芯片

当我试图使用
write-E8(0x54)
命令一次写入8个字节块时,收到的响应是
0x01
,这是等待标记响应的超时

我尝试过但不起作用的东西:

InDataExchange
中包含UID echo,我甚至玩了UID echo的endianness,结果仍然一样

使用
inCommunicateThru
命令而不是
InDataExchange
,并在应用程序级别计算CRC1和CRC2值(结果相同)

我得出的最终结论是:

PN532无法写入类型1标记上的页面
0x10
或更大的页面,这使得无法写入流行型号(如Topaz 512)上的全部内存

推荐:


这一问题与2012年的Topaz 512有关,当时它是一款非常低成本、高内存的NFC标签。现在有了NAG215和NTAG216型号,我建议使用那些具有高内存和与NFC阅读器通用兼容性的型号。

非常感谢您的解释。我本想接受一个解决问题的答案。最后,由于我不能使用NTAGx,我不得不用另一台NFC设备来解决这个问题。我成功地执行了写操作。。。使用Mikroe提供的NFC USB加密狗的命令:(内置NXP的PN7150)。我还制作了一个Java库来构建Topaz512命令。可以在这里找到:非常感谢您的解释。我本想接受一个解决问题的答案。最后,由于我不能使用NTAGx,我不得不用另一台NFC设备来解决这个问题。我成功地执行了写操作。。。使用Mikroe提供的NFC USB加密狗的命令:(内置NXP的PN7150)。我还制作了一个Java库来构建Topaz512命令。可以在这里找到: