Skip to content

Conversation

@WillyJL
Copy link
Contributor

@WillyJL WillyJL commented Jun 29, 2025

What's new

I developed this as my final year project for university, as I have now got my results I'm here to upstream it (I was advised not to deal with uni bureaucracy weirdness so I waited until the course was over)

  • New Type 4 Tag (NDEF on NTAG4xx / MIFARE DESFire) protocol, full support
  • New NTAG4xx (NTAG413 DNA / NTAG424 DNA) protocol, only detection and basic info support
  • NDEF parsing plugin supports Type 4 Tag protocol
  • Show more version info for MIFARE Plus cards
  • Improve detection/verification of MIFARE DESFire and MIFARE Plus SE
  • Improve navigation for MIFARE Classic Update from / Write to Initial Card
  • Refactor Write code for MIFARE Ultralight/Classic in NFC app helpers
  • Cleanup event handling in NFC app
  • Refactor NXP Native Commands to share between protocols (used by MIFARE DESFire, MIFARE Plus, NTAG4xx)
  • MIFARE DESFire poller API can now switch between native and ISO7816-wrapped commands
  • Expand ISO14443-4A API with listener (emulation) support for sending responses to reader (except I-block chaining)
  • Exposed some APIs for apps to use that were meant to be public:
    • ISO14443-3A listener (emulation)
    • ISO15693-3 device (data), poller (reading), listener (emulation)
  • Cleanup/reorder protocol definitions for tidiness

image
image
image
image

Verification

  • Test that reading, parsing, writing and emulating of NTAG4xx and MIFARE DESFire containing NDEF data works as expected
  • Test that writing MIFARE Ultralight / Classic works as before
  • Test that reading MIFARE Plus EV1/2 shows extra version info in More > Info > More (just like NTAG4xx and similar to DESFire "Card Info" option)
  • If possible test reading original MF3ICD40 DESFire to ensure other changes did not break compatibility with pre-ISO7816 DESFire
  • Test that Edit UID options in NFC app (where applicable) work as before

Checklist (For Reviewer)

  • PR has description of feature/bug or link to Confluence/Jira task
  • Description contains actions to verify feature/bugfix
  • I've built this code, uploaded it to the device and verified feature/bugfix

@zhovner
Copy link
Member

zhovner commented Jul 11, 2025

Wow, thank you. Will review and merge soon.

@WillyJL
Copy link
Contributor Author

WillyJL commented Dec 31, 2025

worth to note: this changes behavior of Iso14443_4aListenerEventTypeReceivedData which previously returned the iso14443-4 PCB header in the rx buffer, now it handles PCB header and appropriate responses in protocol layer, passing to callback only the actual content of the message.

IMO this is better behavior, as one would expect the protocol layer to handle this header, and only receive application data inside the message, and vice versa that when sending data the protocol layer would prefix with the appropriate header; this is same behavior as the iso14443-3a listener, which handles CRC suffix both on rx and tx.

@bettse 's app "Seos compatible" for example was affected, as it used the unfinished iso14443-4a listener and handled PCB inside his app. i have made a PR to adapt to this and allow firmware to handle PCB both on listener rx and tx. if other apps are doing iso14443-4a emulation (listener), they probably will need to be adapted aswell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants