Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
892 views
in Technique[技术] by (71.8m points)

nfc - Why doesn't Android HCE support Mifare Classic type?

Mifare Classic is the most used cards and I can't understand why HCE (Host-based Card Emulation) only supports ISO 14443-4, but not Mifare Classic type.

Because NXP stops them from using their proprietary protocols and algorithms? Or because they didn’t implement Mifare Classic in Android OS level?

Any comments will be very appreciated.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Short answer: Because Google decided to support only ISO/IEC 7816-4 over ISO-DEP (ISO/IEC 14443-4).

Speculations on why they decided that way:

  • First of all, ISO/IEC 7816-4 over ISO-DEP is the highes protocol layer that could be used to route communication to the application processor through NCI (NFC Controller Interface). Routing lower protocol layers is possible (read: "the NCI protocol supports this"), though there is no need for the NFC controller to even support routing of lower layer communication.

  • ISO/IEC 7816-4 over ISO-DEP permits routing on a per-application basis. I.e. the reader selects a specific application and only then, the NFC controller decides if the communication is passed to a secure element or to the application processor. The application processor can perform a similar routing mechanism to route communication to a specific app (that's what's done on Android now).

  • Using lower protocol layers (e.g. ISO/IEC 14443-3) there is no way of doing per-application routing. Instead all communication on that level would be routed to either a secure element or to the application processor. If routed to the application processor, then the operating system has no means to choose between multiple apps. Instead only one app could be registered for that type of communication. However, considering the multitude of app developers for a platform like Android, permitting only a single app would be rather inhibiting development.

  • MIFARE Classic is proprietary technology from NXP. I don't expect them to license a pure software implementation (on the application processor/Android system) of the MIFARE Classic protocol/tag platform.

  • MIFARE Classic uses non-standard framing for authentication commands, so it might be difficult to emulate over the NCI Frame RF interface (though I'm not sufficiently familiar with that protocol to confirm if there's an actual limitation that prevents MF Classic emulation).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...