AnsweredAssumed Answered

NTAG I2C 1k: Problem with passive ACK in SECTOR SELECT command on Android.

Question asked by Benny Puder on Jun 28, 2016
Latest reply on Aug 3, 2016 by Luke Whittington

I'm developing an app for Android wich uses the NTAG NFC module in the passthrough mode. It is necessary to read out the session registers of the module to realize proper handshaking between smartphone and mikrocontroller. The microcontroller is attached by I2C to the NTAG NFC module.

 

On some smartphones we have the problem that the app isn't working. We found out that there is a problem with the passive ACK in the SECTOR SELECT command. The sector selection is needed because the session registers are located in sector 3. Our sources strictly comply with the NXP demonstration app, so there will be no difference.

 

command = new byte[4];

command[0] = (byte) sector;

command[1] = (byte) 0x00;

command[2] = (byte) 0x00;

command[3] = (byte) 0x00;

nfca.setTimeout(sector_select_timout);

 

// catch exception, passive ack

try {

     nfca.transceive(command);

} catch (IOException e) { }

 

We found out that on all smartphone the transceive() function always throws an TagLostException which is definitly OK. But there are some smartphones which throw the TagLostException again at all following transceive() functions. Normally the behavior should be that they go on without any problems.

 

The Problem can be reproduced with your demo app, too. May see the attached screenshot of such a phone. It is not possible to read out the session registers in this case. The microcontroller is physically disconnected from the TAG.

 

My questions are:

 

1) Is this behavior known by NXP?

2) Is the reason known by NXP?

3) Are there suggested workarrounds or solutions?

 

Screenshot_2016-06-27-10-51-38.pngApp is working on:

Samsung Galaxy S3 (Android 4.3)

 

App is not working on:

HTC One X (Android 4.2)

Blackberry Priv (Android 6.0)

Outcomes