使用libnfc的ACR122U发送SELECT(按AID)APDU无响应问题
针对ACR122U NFC阅读器APDU超时问题的分析
结合你的描述和类似问题的排查经验,我给你梳理几个可能的原因和排查方向:
阅读器硬件/固件故障的可能性很高
你遇到的「能检测到Android设备UID,但发送APDU(包括SELECT AID指令和阅读器状态查询指令FF 00 00 00 02 D4 04)均无响应」的情况,在ACR122U的用户反馈中并不少见。部分批次的该阅读器存在HCE交互时的路由故障,导致指令无法正确传递到Android设备,自然也收不到任何响应日志。先排除软件层面的配置问题
- 核对SELECT APDU的格式是否规范:针对你目标AID
f0 01 02 03 04 05 06,标准的SELECT指令应该是00 A4 04 00 07 F0 01 02 03 04 05 06 00,确认你发送的指令是否符合这个格式要求。 - 检查libnfc版本兼容性:旧版本的libnfc对ACR122U的HCE支持可能存在缺陷,建议更新到最新稳定版后再测试。
- 验证Android端HCE应用的正确性:确认应用已正确注册目标AID,
AndroidManifest.xml中的HCE服务配置无误,且服务处于正常运行状态。
- 核对SELECT APDU的格式是否规范:针对你目标AID
进一步验证的手段
- 换一台不同的Android设备测试,如果同样出现无响应的情况,基本可以锁定是阅读器本身的问题。
- 使用ACR122U官方SDK中的测试工具发送APDU,排除libnfc示例代码本身的问题。
如果以上排查都无法解决问题,大概率是阅读器的硬件或固件故障,建议尝试重置阅读器,或者联系厂商咨询固件更新方案。
内容的提问来源于stack exchange,提问作者cliffroot
相关产品推荐
相关产品推荐

