Search code examples
nfcmifareacr122

MF Plus switch from SL1 to SL3 with AC122U


Im having a problem with switching a Mifare Plus SE from SL1 to SL3, using acs acr122U with pn532

In SL1 the card is detected as a Mifare Classic (Same ATR) and to perform the switch i need to activate the comunication in 14443-4 and do the auth command with the SL3 switch key. I trying to activate the comunication in 14443-4, but im not finding how.

In other card which its already in SL3 (Also on SL1) the card is activated without problems in 14443-4 and i can send the mifare plus operations without problems.

Im using Smartcardio and transmitcontrolcommand to send the commands to the acr122U trying to use these commands from the PN532 : -inAutoPoll (Which detects the card as 10 (mifare card, not 14443-4 card) -InListPassiveTarget (Actives the card as mifare classic too) -inATR (Which ends with a timeout) I tryed to inRelease and reactivate again, is not working neither.

Thanks for your time


Solution

  • The problem you are facing is MFP in SL1 acts as a MFC, and does not advertise support for 14443-4 in its SAK. Most high-level libraries will simply not try to send RATS to switch to -4.

    For MFP authentication command to work on 0x9001 (prerequisite for switching to SL3), you actually have to be in -4 mode, so you'll have to force sending RATS to get to -4, even if not advertised by card. Depending on your NFC library's API, this may not be possible.

    For implementation in backend-agnostic code, I ended-up reimplementing -4 framing and using low-level communication APIs just for this case.

    Once in SL3, -4 support is advertised, and switching happens transparently in most communication libraries.