cancel
Showing results for 
Search instead for 
Did you mean: 

ST25R3911B and ST25SDK. Why Discovery GUI seeing EMV card but code on SDK not

Ivan Smolin
Associate II
Posted on January 15, 2018 at 06:07

My code:

public STReader LowLevel;

LowLevel = new STReader();

boolean res = LowLevel.connect();

java.util.List<byte[]> uidList;

IEMVCard card = new IEMVCard();

while (true)

{

try {

uidList = LowLevel.getTransceiveInterface().inventory(RFReaderInterface.InventoryMode.NFC_TYPE_4A);

if (!uidList.isEmpty()) {

System.out.println('Detected');

break;

}

} catch (Throwable ex) {

ex.printStackTrace();

return card;

}

}

I trying it with different EMV cards by VISA.

It works with some cards but not works with another ones - just not detects them.

Otherwise, ST25R3911B Discovery.exe in Polling tab sees all these cards and they all are same type - ISO14443-A!

Why so?

P.S. You can just give me sample usage based on ST25R3911DISCOComm.dll instead of Java ST25 SDK

1 ACCEPTED SOLUTION

Accepted Solutions
Damien G.
ST Employee
Posted on January 16, 2018 at 14:28

Hello Ivan,

Thanks for your question.

What version of the 

ST25R3911B Discovery.exe program are you using?

Do you already know the UIDs of the cards that you are trying to detect and fail? Are they 4, 7 or 10 byte long? Could you please give us an example of UID format?

The ST25 SDK contains a RF library that is independent from readers. As shown in your code excerpt, each reader must provide a RFReaderInterface implementation.

The STReader library provided in the ST25 SDK contains an implementation for the ST25R3911B-DISCO board. A Java Native Interface (JNI) is used for the library to interact with the native ST25R3911 dll. The JNI uses its own anti-collision algorithm, different from the native ST25R3911 firmware. So this is already one difference.

Version 1.0.1 of the ST25 SDK focuses on tags from the ST25 family. It has not been tested with EMV cards but basic  discovery should function if those tags follow ISO and NFC Forum protocols.

Today, only ISO15693 and ISO14443-A protocols are supported by the ST25 SDK and the ST Reader implementation. ISO 14443-B (used in some EMV cards) is not yet covered. So EMV cards based on ISO 14443-B will not respond to the inventory request. 

However you mention in your mail that all cards are of type Iso14443-A.

You can try varying the distance of the cards to the reader's antenna. The 

ST25R3911B Discovery.exe programs tunes the reader in the most efficient way. This tuning is not done with the ST25 SDK implementation and may result in a bad reader calibration.

For information, we are in the process of rewriting the JNI to provide better Iso14443-A support. This may improve EMV cards detection.

Check again in a few weeks for a new version of the SDK.

Cheers.

View solution in original post

1 REPLY 1
Damien G.
ST Employee
Posted on January 16, 2018 at 14:28

Hello Ivan,

Thanks for your question.

What version of the 

ST25R3911B Discovery.exe program are you using?

Do you already know the UIDs of the cards that you are trying to detect and fail? Are they 4, 7 or 10 byte long? Could you please give us an example of UID format?

The ST25 SDK contains a RF library that is independent from readers. As shown in your code excerpt, each reader must provide a RFReaderInterface implementation.

The STReader library provided in the ST25 SDK contains an implementation for the ST25R3911B-DISCO board. A Java Native Interface (JNI) is used for the library to interact with the native ST25R3911 dll. The JNI uses its own anti-collision algorithm, different from the native ST25R3911 firmware. So this is already one difference.

Version 1.0.1 of the ST25 SDK focuses on tags from the ST25 family. It has not been tested with EMV cards but basic  discovery should function if those tags follow ISO and NFC Forum protocols.

Today, only ISO15693 and ISO14443-A protocols are supported by the ST25 SDK and the ST Reader implementation. ISO 14443-B (used in some EMV cards) is not yet covered. So EMV cards based on ISO 14443-B will not respond to the inventory request. 

However you mention in your mail that all cards are of type Iso14443-A.

You can try varying the distance of the cards to the reader's antenna. The 

ST25R3911B Discovery.exe programs tunes the reader in the most efficient way. This tuning is not done with the ST25 SDK implementation and may result in a bad reader calibration.

For information, we are in the process of rewriting the JNI to provide better Iso14443-A support. This may improve EMV cards detection.

Check again in a few weeks for a new version of the SDK.

Cheers.