AnsweredAssumed Answered

NTAG 216 FAST_READ sometimes returns more bytes than expected

Question asked by Steven Skovran on Mar 18, 2019
Latest reply on Mar 25, 2019 by Kan_Li

Hi! I have an application that is doing FAST_READ commands on NTAG 213 and NTAG 216 tags. Usually it works great. However, very occasionally, I get more bytes back in the response then I asked for.


For example, I have some test code that repeatedly asks for the same 32 pages of data from the tag.

In the response I expect 130 bytes (128 bytes of data plus 2 bytes of status) but sometimes I get 132 or 145 or some other number of bytes.



Here is some sample C# code that builds the APDU using PCSC:

 byte numPages = 32;
byte firstPage = 32;
byte lastPage = (byte)(firstPage + numPages - 1);
  int numBytes = 4 * numPages;

var apdu_FastRead = new CommandApdu(IsoCase.Case4Short, reader.Protocol)
   CLA = 0xFF,
   INS = 0x00, // PASS
    Le = numBytes + 2,
   Data = new byte[] {
      0x3A, // FAST_READ

And here are the command, the expected response and the failed response after about 4000 reads:

 => FAST_READ: FF-00-00-00-03-3A-20-3F-82
<= EXPECTED:    (130 bytes) [Status=90,00] 70-71-72-<snip>-D9-DA-DB-DC-DD-DE-DF-E0-<snip>-ED-EE-EF
<= FAIL (4021): (132 bytes) [Status=90,00] 70-71-72-<snip>-D9-DA-DB-DC-DD-DC-DD-DE-DF-E0-<snip>-ED-EE-EF

For this test, I filled the tag with sequential bytes. Please note that in the FAIL read, the bytes "DC-DD" have been duplicated. I see the same thing in each read that fails: some bytes from the previous page or pages are duplicated.


Is this normal?


I have tried different tags and both the NTAG 213 and 216 models. They all eventually have this problem. I have worked around this by retrying reads when the returned length does not match the expected length.


By the way, I am using the ACS ACR1252U reader and Windows 10. I also have Mifare 1K tags and have not seen any read problems with them - though they do not use the FAST READ.


Thank you for you help,