Search code examples
androidnfcchipsetiso-15693

How to find out the NFC stack(chip) "NXP vs Broadcom" on Android devices


Is there a way to figure out the NFC stack (or chipset) on the Android device? I am creating an app with a custom implementation for NfcV class (ISO15693 tags). Turns out on older devices like Nexus S, Galaxy S2, Nexus 7 the NFC chipset is from NXP and the only ISO15693 tags that are supported are the NXP ICODE tags. I have a custom implementation that relies on the transceive function. It works beautifully with TI and ST Micro tags. But the problem is, on devices like Nexus 10, Nexus 4 and SGS4 Google started using Broadcom NFC transceiver and their NFC stack which has native support for ISO15693 tags. Is it possible to identify the NFC chipset programmatically? If so how?


Solution

  • The NXP NFC-based devices all support MifareClassic tags, while the Broadcom-based ones don't have this support. You could check in your app whether that support is present, as explained in https://stackoverflow.com/a/15833191/1202968.

    When you write "the only ISO15693 tags that are supported are the NXP ICODE tags", I think you mean that reading and writing NDEF messages on ISO15693 tags is only supported on NXP ICODE tags for such devices (because communication works fine using ISO 15693 commands on these NXP-based NFC devices). If/when (if ever) these devices get updated to also support NDEF message storage on other ISO15693 tags, the trick to check for MifareClassic support will no longer work, obviously...