NFC Offhost 路由到 Nexus 5X 和 Nexus 6P 上的 UICC
NFC Offhost routing to the UICC on the Nexus 5X and the Nexus 6P
我正在尝试在 Nexus 5X(bullhead)或 Nexus 6P(angler)上配置 NFC 芯片组,以将 UICC 用作我在 OffHostApduService 中声明的 AID 的 NFC offhost 路由。
编辑 2016 年 1 月 17 日: 我已经更新了这个问题,还包括了 Nexus 6P,因为我也有机会测试它并且它的行为和5X一模一样。因此,之前 5X 的所有发现似乎也适用于 6P。
由于 Michael Roland 在 this question here and also on a Nexus 6 (shamu) (see the Nexus 6 bcm2079x config in my Github repository 上的回答,我之前在 Nexus 5(锤头)上设法做到了这一点。
但是,Nexus 5X(还有 6P)似乎有所不同:
- 根据 ifixit 拆解,它包含来自 NXP (PN548) 的新芯片组,而不是像 Nexus 4、5 和 6 那样的 broadcom bcm2079x。
- 我可以确认该设备可以读取 Mifare Classic 标签(这加强了它包含 NXP 芯片组的假设,因为 Broadcom 芯片组不支持 Mifare Classic)并且存在设备文件
/dev/pn548
- 但奇怪的是它在
/system/etc/
下同时包含 libnfc-brcm.conf
和 libnfc-nxp.conf
配置文件(您也可以在我的 Github 存储库中找到它们)
作为起点,我修改了 两个 配置文件中的 trace/log 设置
- 为 brcm
将 APPL_TRACE_LEVEL
设置为 0x05
- 将 nxp 的
NXPLOG_*_LOGLEVEL
设置为 0x03
让我感到奇怪的是,我在启动期间在 logcat 中看到了很多 BrcmNfcJni
消息,类似于我在 Nexus 5 和 6 上看到的消息(我不会'没有预料到带有 NXP 芯片组的设备):
12-11 20:45:36.840 D/BrcmNfcJni( 3434): JNI_OnLoad: enter
12-11 20:45:36.841 I/BrcmNfcJni( 3434): NFC Service: loading nci JNI
12-11 20:45:36.841 D/BrcmNfcJni( 3434): register_com_android_nfc_NativeNfcManager: enter
12-11 20:45:36.841 D/BrcmNfcJni( 3434): PowerSwitch::initialize: level=PS-UNKNOWN (0)
12-11 20:45:36.923 D/BrcmNfcJni( 3434): PowerSwitch::initialize: desired screen-off state=1
12-11 20:45:36.923 D/BrcmNfcJni( 3434): register_com_android_nfc_NativeNfcManager: exit
12-11 20:45:36.923 D/BrcmNfcJni( 3434): register_com_android_nfc_NativeNfcTag
12-11 20:45:36.924 D/BrcmNfcJni( 3434): RoutingManager::RoutingManager(): default route is 0x00
12-11 20:45:36.924 D/BrcmNfcJni( 3434): RoutingManager::RoutingManager(): mOffHostEe=0xF2
12-11 20:45:36.924 D/BrcmNfcJni( 3434): RoutingManager::registerJniFunctions
12-11 20:45:36.924 D/BrcmNfcJni( 3434): JNI_OnLoad: exit
....
....
编辑 1:
我从源头了解到,这些 "BrcmNfc.." 日志消息是从 libnfc-nci 库中的代码发出的。在以前的设备上,NCI(代表:NFC controller interface)仅由Broadcom 芯片组(我想这就是代码使用前缀 "Brcm" 进行日志记录的原因)。但显然新的 NXP 芯片组现在也使用这个标准化接口(这很好),现在我们也看到 "Brcm..." 日志消息,即使是 NXP 芯片组也是如此。
编辑 3:
这两款手机(Nexus 5X 和 6P)似乎都包含 NXP PN548/C2 NFC 芯片组 运行 固件版本 10.01.19(至少在 Android 6.0.1 版本)。
当然还有NXP pn54x halimpl的输出:
12-11 20:45:37.407 D/ ( 3434): phNxpLog_InitializeLogLevel: global =1, Fwdnld =3, extns =3, hal =3, tml =3, ncir =3, ncix =3
12-11 20:45:37.408 D/NxpHal ( 3434): Entering phNxpNciHal_init_monitor
12-11 20:45:37.408 D/NxpHal ( 3434): Returning with SUCCESS
12-11 20:45:37.408 D/NxpTml ( 3434): Opening port=/dev/pn54x
12-11 20:45:37.408 D/NxpTml ( 3434): phTmlNfc_i2c_reset(), VEN level 1
12-11 20:45:37.527 D/NxpTml ( 3434): phTmlNfc_i2c_reset(), VEN level 0
12-11 20:45:37.647 D/NxpTml ( 3434): phTmlNfc_i2c_reset(), VEN level 1
12-11 20:45:37.667 D/NxpTml ( 3434): PN54X - Tml Reader Thread Started................
12-11 20:45:37.667 D/NxpTml ( 3434): PN54X - Read requested.....
12-11 20:45:37.667 D/NxpTml ( 3434): PN54X - Invoking I2C Read.....
....
....
因此,作为第一个开始,我尝试修改 libnfc-nxp.conf
文件,从参数开始,其中的注释表明与 UICC 或 SWP 相关:
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-NXP_DEFAULT_SE=0x03
+NXP_DEFAULT_SE=0x02
并将 NXP_CORE_CONF_EXTN
中的 A0EC
标记设置为 0x01
(因为注释表明此标记负责 SWP1 连接器):
# A0EC - SWP1 interface
# 0x00 - Disabled
# 0x01 - Enabled
- A0, EC, 01, 00,
+ A0, EC, 01, 01,
不幸的是,这没有用,我仍然在主机系统中收到针对我的 offhost-service 的 APDU(如此 logcat 消息所示:E/HostEmulationManager( 3434): AID that was meant to go off-host was routed to host.
)。
在后来的尝试中,我也尝试使用 libnfc-brcm.conf
中的参数(如 Michael Roland 在上述问题中所述),但仍然没有成功。
问题:
- 有人设法在 Nexus 5X 或 6P 上配置 NFC 脱离主机路由到 UICC 吗?
- 或者可能有一些提示,我可以在其中寻找进一步的见解?
- PN548 芯片组的数据表也会很有帮助。
编辑 2:
我仍然没有找到可行的解决方案,但我将我的尝试推到现在 github repository under the dev1 branch。我还为每个测试推送了结果 logcat 输出。我正在 Stock Android 6.0.1 上使用新的无根 Nexus 5X 进行测试。 (编辑:与此同时,我也得到了一个 Nexus 6P 用于测试,但它的行为相同。)为了修改系统分区上的配置文件,我暂时启动到旁加载恢复映像:(fastboot boot twrp-2.8.7.2-bullhead.img
).
目前我总是遇到这个错误(我也已经尝试使用 0xf2
和 0xf4
作为脱离主机路由目标):
12-16 09:38:05.524 I/BrcmNfcNfa( 3480): NFA_EeAddAidRouting(): handle:<0xf3>
12-16 09:38:05.524 I/BrcmNfcNfa( 3480): nfa_ee_find_ecb ()
12-16 09:38:05.524 E/BrcmNfcNfa( 3480): Bad ee_handle or AID (len=14)
12-16 09:38:05.524 E/BrcmNfcJni( 3480): RoutingManager::addAidRouting: failed to route AID
简答:
NFC Offhost 路由到 UICC 在 Nexus 5X 上似乎是不可能的(编辑: 以及 Nexus 6P)。据我了解,NFC 芯片的 SWP 线未连接到 UICC(在两个 phones 上)。
编辑 1:
与此同时,我在 Nexus 6P 上进行了所有与我在 5X 上所做的测试相同的测试。我现在可以确认 6P 的行为相同。在调用 phNxpNciHal_SwpTest
函数时,我什至在 logcat 中遇到了同样的错误。所以在 Nexus 6P 上,SWP 线也没有连接到 UICC。
详情:
在使用不同的配置文件设置进行多次不成功的尝试后,我查看了 libnfc-hci 库中的 NXP 实现,发现了有趣的函数“phNxpNciHal_SwpTest”在 "self-test/phNxpNciHal_SelfTest.c" 中,根据评论,似乎在测试 SWP 行:
/*******************************************************************************
**
** Function phNxpNciHal_SwpTest
**
** Description Test function to validate the SWP line. SWP line number is
** is sent as parameter to the API.
**
** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
**
*******************************************************************************/
然后我修改了 hal/phNxpNciHal.c
文件(添加了很多调试日志语句只是为了更好地理解流程并且)添加了 2 个对此测试函数的调用。首先我尝试将其添加到 phNxpNciHal_open
函数的末尾(参见我的更改 here on GitHub),后来又尝试将其添加到 phNxpNciHal_close
函数的开头,然后才真正关闭 NFCC 界面,只是为了确保 UICC 和所有内容都在此时初始化(请参阅上面链接的我的 GitHub 帐户上的提交 6b33149)。
在测试期间,设备中插入了支持 SWP 的 UICC。
不幸的是,所有对 phNxpNciHal_SwpTest
的调用都返回了一个错误(对于两个 SWP 行)。在下面的 logcat 输出中查找字符串“phNxpNciHal_SwpTest - FAILED”:
12-22 08:48:01.597 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - testing SWP line 0x01
12-22 08:48:01.597 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test...
12-22 08:48:01.597 D/NxpTml ( 3691): PN54X - Write requested.....
12-22 08:48:01.597 D/NxpTml ( 3691): PN54X - Invoking I2C Write.....
12-22 08:48:01.598 D/NxpNciX ( 3691): len = 4 > 20000101
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - I2C Write successful.....
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Posting Fresh Write message.....
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Tml Writer Thread Running................
12-22 08:48:01.598 D/NxpHal ( 3691): write successful status = 0x0
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ performTest: write success. staring read locked from NFCC..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ readLocked: semaphore created, starting tml nfc read..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ readLocked: read returned..
12-22 08:48:01.598 E/NxpHal ( 3691): TML Read status error status = 16f
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ performTest: at clean_and_return label.. concurrency_unlock..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test FAILED...will break loop
12-22 08:48:01.598 D/NxpHal ( 3691): phNxpNciHal_SwpTest - FAILED
12-22 08:48:01.598 D/NxpHal ( 3691): phNxpNciHal_SwpTest - end
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ: SWP1 test done, will perform SWP2 test now.
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - start
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - testing SWP line 0x02
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ performTest: concurrency locked. write locked to NFCC..
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Write requested.....
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Invoking I2C Write.....
12-22 08:48:01.599 D/NxpNciX ( 3691): len = 4 > 20000101
12-22 08:48:01.599 D/NxpTml ( 3691): PN54X - I2C Write successful.....
12-22 08:48:01.599 D/NxpTml ( 3691): PN54X - Posting Fresh Write message.....
12-22 08:48:01.599 D/NxpTml ( 3691): PN54X - Tml Writer Thread Running................
12-22 08:48:01.599 D/NxpHal ( 3691): write successful status = 0x0
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ performTest: write success. staring read locked from NFCC..
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ readLocked: semaphore created, starting tml nfc read..
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ readLocked: read returned..
12-22 08:48:01.599 E/NxpHal ( 3691): TML Read status error status = 16f
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ performTest: at clean_and_return label.. concurrency_unlock..
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test FAILED...will break loop.
12-22 08:48:01.599 D/NxpHal ( 3691): phNxpNciHal_SwpTest - FAILED
12-22 08:48:01.599 D/NxpHal ( 3691): phNxpNciHal_SwpTest - end
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ: SWP2 test done.
结论:
在不进一步了解 NXP PN548/C2 芯片组的硬件细节的情况下,我认为这意味着芯片组的两条 SWP 线在 Nexus 5X 中都没有连接(牛头)phone.
如果有人对这个话题有更深入的了解,请随时指正! :)
如您所知,SWP 线未连接到 UICC 插槽。我们通常不会为 Nexus 设备执行此操作,因为我们不支持 AOSP 中 UICC 上的安全元素。一个例外是 Lollipop 上的 Nexus 6,它在美国支持 SoftCard 移动支付(以及 HCE)。在 SoftCard 被 Google 收购后,我们在 Marshmallow 中再次删除了支持 UICC 的代码。
顺便说一句,我很惊讶这在 N5 上有效——它应该也没有连接 SWP。也许这在所有设备上都没有正确完成。
我正在尝试在 Nexus 5X(bullhead)或 Nexus 6P(angler)上配置 NFC 芯片组,以将 UICC 用作我在 OffHostApduService 中声明的 AID 的 NFC offhost 路由。
编辑 2016 年 1 月 17 日: 我已经更新了这个问题,还包括了 Nexus 6P,因为我也有机会测试它并且它的行为和5X一模一样。因此,之前 5X 的所有发现似乎也适用于 6P。
由于 Michael Roland 在 this question here and also on a Nexus 6 (shamu) (see the Nexus 6 bcm2079x config in my Github repository 上的回答,我之前在 Nexus 5(锤头)上设法做到了这一点。
但是,Nexus 5X(还有 6P)似乎有所不同:
- 根据 ifixit 拆解,它包含来自 NXP (PN548) 的新芯片组,而不是像 Nexus 4、5 和 6 那样的 broadcom bcm2079x。
- 我可以确认该设备可以读取 Mifare Classic 标签(这加强了它包含 NXP 芯片组的假设,因为 Broadcom 芯片组不支持 Mifare Classic)并且存在设备文件
/dev/pn548
- 但奇怪的是它在
/system/etc/
下同时包含libnfc-brcm.conf
和libnfc-nxp.conf
配置文件(您也可以在我的 Github 存储库中找到它们)
作为起点,我修改了 两个 配置文件中的 trace/log 设置
- 为 brcm 将
- 将 nxp 的
NXPLOG_*_LOGLEVEL
设置为0x03
APPL_TRACE_LEVEL
设置为 0x05
让我感到奇怪的是,我在启动期间在 logcat 中看到了很多 BrcmNfcJni
消息,类似于我在 Nexus 5 和 6 上看到的消息(我不会'没有预料到带有 NXP 芯片组的设备):
12-11 20:45:36.840 D/BrcmNfcJni( 3434): JNI_OnLoad: enter
12-11 20:45:36.841 I/BrcmNfcJni( 3434): NFC Service: loading nci JNI
12-11 20:45:36.841 D/BrcmNfcJni( 3434): register_com_android_nfc_NativeNfcManager: enter
12-11 20:45:36.841 D/BrcmNfcJni( 3434): PowerSwitch::initialize: level=PS-UNKNOWN (0)
12-11 20:45:36.923 D/BrcmNfcJni( 3434): PowerSwitch::initialize: desired screen-off state=1
12-11 20:45:36.923 D/BrcmNfcJni( 3434): register_com_android_nfc_NativeNfcManager: exit
12-11 20:45:36.923 D/BrcmNfcJni( 3434): register_com_android_nfc_NativeNfcTag
12-11 20:45:36.924 D/BrcmNfcJni( 3434): RoutingManager::RoutingManager(): default route is 0x00
12-11 20:45:36.924 D/BrcmNfcJni( 3434): RoutingManager::RoutingManager(): mOffHostEe=0xF2
12-11 20:45:36.924 D/BrcmNfcJni( 3434): RoutingManager::registerJniFunctions
12-11 20:45:36.924 D/BrcmNfcJni( 3434): JNI_OnLoad: exit
....
....
编辑 1: 我从源头了解到,这些 "BrcmNfc.." 日志消息是从 libnfc-nci 库中的代码发出的。在以前的设备上,NCI(代表:NFC controller interface)仅由Broadcom 芯片组(我想这就是代码使用前缀 "Brcm" 进行日志记录的原因)。但显然新的 NXP 芯片组现在也使用这个标准化接口(这很好),现在我们也看到 "Brcm..." 日志消息,即使是 NXP 芯片组也是如此。
编辑 3: 这两款手机(Nexus 5X 和 6P)似乎都包含 NXP PN548/C2 NFC 芯片组 运行 固件版本 10.01.19(至少在 Android 6.0.1 版本)。
当然还有NXP pn54x halimpl的输出:
12-11 20:45:37.407 D/ ( 3434): phNxpLog_InitializeLogLevel: global =1, Fwdnld =3, extns =3, hal =3, tml =3, ncir =3, ncix =3
12-11 20:45:37.408 D/NxpHal ( 3434): Entering phNxpNciHal_init_monitor
12-11 20:45:37.408 D/NxpHal ( 3434): Returning with SUCCESS
12-11 20:45:37.408 D/NxpTml ( 3434): Opening port=/dev/pn54x
12-11 20:45:37.408 D/NxpTml ( 3434): phTmlNfc_i2c_reset(), VEN level 1
12-11 20:45:37.527 D/NxpTml ( 3434): phTmlNfc_i2c_reset(), VEN level 0
12-11 20:45:37.647 D/NxpTml ( 3434): phTmlNfc_i2c_reset(), VEN level 1
12-11 20:45:37.667 D/NxpTml ( 3434): PN54X - Tml Reader Thread Started................
12-11 20:45:37.667 D/NxpTml ( 3434): PN54X - Read requested.....
12-11 20:45:37.667 D/NxpTml ( 3434): PN54X - Invoking I2C Read.....
....
....
因此,作为第一个开始,我尝试修改 libnfc-nxp.conf
文件,从参数开始,其中的注释表明与 UICC 或 SWP 相关:
# No secure element 0x00
# eSE 0x01
# UICC 0x02
-NXP_DEFAULT_SE=0x03
+NXP_DEFAULT_SE=0x02
并将 NXP_CORE_CONF_EXTN
中的 A0EC
标记设置为 0x01
(因为注释表明此标记负责 SWP1 连接器):
# A0EC - SWP1 interface
# 0x00 - Disabled
# 0x01 - Enabled
- A0, EC, 01, 00,
+ A0, EC, 01, 01,
不幸的是,这没有用,我仍然在主机系统中收到针对我的 offhost-service 的 APDU(如此 logcat 消息所示:E/HostEmulationManager( 3434): AID that was meant to go off-host was routed to host.
)。
在后来的尝试中,我也尝试使用 libnfc-brcm.conf
中的参数(如 Michael Roland 在上述问题中所述),但仍然没有成功。
问题:
- 有人设法在 Nexus 5X 或 6P 上配置 NFC 脱离主机路由到 UICC 吗?
- 或者可能有一些提示,我可以在其中寻找进一步的见解?
- PN548 芯片组的数据表也会很有帮助。
编辑 2:
我仍然没有找到可行的解决方案,但我将我的尝试推到现在 github repository under the dev1 branch。我还为每个测试推送了结果 logcat 输出。我正在 Stock Android 6.0.1 上使用新的无根 Nexus 5X 进行测试。 (编辑:与此同时,我也得到了一个 Nexus 6P 用于测试,但它的行为相同。)为了修改系统分区上的配置文件,我暂时启动到旁加载恢复映像:(fastboot boot twrp-2.8.7.2-bullhead.img
).
目前我总是遇到这个错误(我也已经尝试使用 0xf2
和 0xf4
作为脱离主机路由目标):
12-16 09:38:05.524 I/BrcmNfcNfa( 3480): NFA_EeAddAidRouting(): handle:<0xf3>
12-16 09:38:05.524 I/BrcmNfcNfa( 3480): nfa_ee_find_ecb ()
12-16 09:38:05.524 E/BrcmNfcNfa( 3480): Bad ee_handle or AID (len=14)
12-16 09:38:05.524 E/BrcmNfcJni( 3480): RoutingManager::addAidRouting: failed to route AID
简答:
NFC Offhost 路由到 UICC 在 Nexus 5X 上似乎是不可能的(编辑: 以及 Nexus 6P)。据我了解,NFC 芯片的 SWP 线未连接到 UICC(在两个 phones 上)。
编辑 1:
与此同时,我在 Nexus 6P 上进行了所有与我在 5X 上所做的测试相同的测试。我现在可以确认 6P 的行为相同。在调用 phNxpNciHal_SwpTest
函数时,我什至在 logcat 中遇到了同样的错误。所以在 Nexus 6P 上,SWP 线也没有连接到 UICC。
详情:
在使用不同的配置文件设置进行多次不成功的尝试后,我查看了 libnfc-hci 库中的 NXP 实现,发现了有趣的函数“phNxpNciHal_SwpTest”在 "self-test/phNxpNciHal_SelfTest.c" 中,根据评论,似乎在测试 SWP 行:
/*******************************************************************************
**
** Function phNxpNciHal_SwpTest
**
** Description Test function to validate the SWP line. SWP line number is
** is sent as parameter to the API.
**
** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
**
*******************************************************************************/
然后我修改了 hal/phNxpNciHal.c
文件(添加了很多调试日志语句只是为了更好地理解流程并且)添加了 2 个对此测试函数的调用。首先我尝试将其添加到 phNxpNciHal_open
函数的末尾(参见我的更改 here on GitHub),后来又尝试将其添加到 phNxpNciHal_close
函数的开头,然后才真正关闭 NFCC 界面,只是为了确保 UICC 和所有内容都在此时初始化(请参阅上面链接的我的 GitHub 帐户上的提交 6b33149)。
在测试期间,设备中插入了支持 SWP 的 UICC。
不幸的是,所有对 phNxpNciHal_SwpTest
的调用都返回了一个错误(对于两个 SWP 行)。在下面的 logcat 输出中查找字符串“phNxpNciHal_SwpTest - FAILED”:
12-22 08:48:01.597 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - testing SWP line 0x01
12-22 08:48:01.597 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test...
12-22 08:48:01.597 D/NxpTml ( 3691): PN54X - Write requested.....
12-22 08:48:01.597 D/NxpTml ( 3691): PN54X - Invoking I2C Write.....
12-22 08:48:01.598 D/NxpNciX ( 3691): len = 4 > 20000101
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - I2C Write successful.....
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Posting Fresh Write message.....
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Tml Writer Thread Running................
12-22 08:48:01.598 D/NxpHal ( 3691): write successful status = 0x0
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ performTest: write success. staring read locked from NFCC..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ readLocked: semaphore created, starting tml nfc read..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ readLocked: read returned..
12-22 08:48:01.598 E/NxpHal ( 3691): TML Read status error status = 16f
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ performTest: at clean_and_return label.. concurrency_unlock..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test FAILED...will break loop
12-22 08:48:01.598 D/NxpHal ( 3691): phNxpNciHal_SwpTest - FAILED
12-22 08:48:01.598 D/NxpHal ( 3691): phNxpNciHal_SwpTest - end
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ: SWP1 test done, will perform SWP2 test now.
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - start
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - testing SWP line 0x02
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test..
12-22 08:48:01.598 D/NxpHal ( 3691): JZJZ performTest: concurrency locked. write locked to NFCC..
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Write requested.....
12-22 08:48:01.598 D/NxpTml ( 3691): PN54X - Invoking I2C Write.....
12-22 08:48:01.599 D/NxpNciX ( 3691): len = 4 > 20000101
12-22 08:48:01.599 D/NxpTml ( 3691): PN54X - I2C Write successful.....
12-22 08:48:01.599 D/NxpTml ( 3691): PN54X - Posting Fresh Write message.....
12-22 08:48:01.599 D/NxpTml ( 3691): PN54X - Tml Writer Thread Running................
12-22 08:48:01.599 D/NxpHal ( 3691): write successful status = 0x0
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ performTest: write success. staring read locked from NFCC..
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ readLocked: semaphore created, starting tml nfc read..
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ readLocked: read returned..
12-22 08:48:01.599 E/NxpHal ( 3691): TML Read status error status = 16f
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ performTest: at clean_and_return label.. concurrency_unlock..
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ phNxpNciHal_SwpTest - performing test FAILED...will break loop.
12-22 08:48:01.599 D/NxpHal ( 3691): phNxpNciHal_SwpTest - FAILED
12-22 08:48:01.599 D/NxpHal ( 3691): phNxpNciHal_SwpTest - end
12-22 08:48:01.599 D/NxpHal ( 3691): JZJZ: SWP2 test done.
结论:
在不进一步了解 NXP PN548/C2 芯片组的硬件细节的情况下,我认为这意味着芯片组的两条 SWP 线在 Nexus 5X 中都没有连接(牛头)phone.
如果有人对这个话题有更深入的了解,请随时指正! :)
如您所知,SWP 线未连接到 UICC 插槽。我们通常不会为 Nexus 设备执行此操作,因为我们不支持 AOSP 中 UICC 上的安全元素。一个例外是 Lollipop 上的 Nexus 6,它在美国支持 SoftCard 移动支付(以及 HCE)。在 SoftCard 被 Google 收购后,我们在 Marshmallow 中再次删除了支持 UICC 的代码。
顺便说一句,我很惊讶这在 N5 上有效——它应该也没有连接 SWP。也许这在所有设备上都没有正确完成。