NXP MCU 技术论坛
直播中

陈敏

8年用户 1372经验值
私信 关注
[问答]

管理Mifare ULTRALIGHT C (MF0ICU2) Pax设备使用自定义PayDroid操作系统而不是标准的安卓系统,怎么实现?

我正在 Pax 设备上进行开发,我想管理Mifare ULTRALIGHT C (MF0ICU2)
Pax 设备使用自定义 PayDroid 操作系统而不是标准的安卓系统,因此,我没有 NFC 安卓库。

我需要安装一个名为 NeptuneLiteAPI 的东西,它通过一个库公开 IPCC。

首先,我对命名约定和标准有点迷茫。Api 正在谈论:

  • ISO14443

    • 甲或乙
    • 1,2 或 3
  • M1卡
通常情况下,Ultralight C 是 14443 Type A,但我不能用这个选项读取我的卡,我用“M1 卡”选项读取成功。什么是 M1 卡?它是Classic 1k吗?

文档提到我需要使用 APDU 并公开一些命令来执行这种调用

我成功读写卡(具有M1功能),库公开了使用与我的卡兼容的兼容模式的默认读/写方法
现在,我正在尝试配置身份验证并通过 APDU 命令向芯片发送一些命令。

这是我可以使用的代码的简化

iPicc = getDal().getPicc(piccType);

iPicc.open();
while(){
PiccCardInfo cardInfo = iPicc.detect(EDetectMode.ONLY_M);

if(cardInfo!=null){

//Read : works

byte[] page0=iPicc.m1Read((byte) 0);

// Write : works

iPicc.m1Write((byte)(13),hexStringToByteArray(\"AAAAAAAA000000000000000000000000\"));

}

对于写作,我有 3 种方法:

  • byte[] : isoCommand(byte cid, byte[] 发送)
  • ApduRespInfo:isoCommandByApdu(字节 cid,ApduSendInfo apduSendInfo)
  • byte[] cmdExchange(byte[] dataIn, int recvLen)
  • 所有这些方法都需要 APDU 命令。
如果我理解得很好,Mifare Ultralight C 不尊重 APDU 但 APDU 是唯一的方法吗?

在一些网站上,我发现使用指令类“FF”,我可以直接向芯片发送指令。
但是我迷失在我需要发送的命令中,我尝试了几个。
我有错误(不幸的是,它们是一个 NeptuneLiteAPi 而不是标准的)。

  • 感应区没有特定卡,或卡未激活 PICC#3(未搜索卡错误)
  • PICC#97(意外错误)
但奇怪的是,我刚才很好地检测到卡并成功读/写,所以卡“连接”良好
我尝试了几个命令(直接指令、APDU 指令、CRC 计算),没有任何效果。



更多回帖

发帖
×
20
完善资料,
赚取积分