cancel
Showing results for 
Search instead for 
Did you mean: 

How to perform custom data transfer between Android and a NFC reader such as ST25R3916

JChen.41
Associate II

We're working on custom data transfer between Android and our custom device with NFC. As Android no longer support peer to peer, we're investigate the best way to do it.

ST provides ST25FTM library to do this with the ST25DV-I2C tag, but it is too slow ~25kbps. We want something faster around 115kps.

Is there anything library similar to ST25FTM and allows ST25R3916 to perform data transfer? (Either in reader or card emulation mode). If not, which direction we can take to perform data transfer with Android low level API.

Thanks

1 ACCEPTED SOLUTION

Accepted Solutions
Ulysses HERNIOSUS
ST Employee

Hi,

with the disappearance of P2P from Android you have two basic you have the following options on Android:

  1. Use ST25R3916 in reader mode, install an App for emulating a smartcard with a fixed AID on the phone. Once installed the Reader is able to communicate without having the app opened/in the foreground. This will be using ISO14443 technology. Typically you would be using ISO7816-4 APDUs but basically you are free to define your own protocol after the Select AID. Gross speed will be 106kbps but on some phones it may go up to 848kbps. However net speed will be limited by internal phone communication - typically I2C and one may only see limited increase in throughput.
  2. Use ST25R3916 in card emulation mode. For communication the app needs to be opened. I am unsure if phone will be using higher bitrates when using ISO14443-A/NFC-A. Higher bitrates would be possible when using FeliCa/NFC-F but in my experience app cannot select whether 212kbps or 424kbps will be used. Similar phone internal limitations concerning net speed as above will apply.

In case you are targeting also iPhone: I think only the second option will be available with standard iOS apps.

We do have some demos for the 3916, e.g. the ST25 Embedded NFC lib contains examples ([bluetooth_]pairing) for emulating T3T and T4T - which can be read by the Android OS. The other direction you can see by means of the ST25 Embedded NFC lib reading T3T and T4T in its ndef_rw demo.

Best Regards, Ulysses

View solution in original post

1 REPLY 1
Ulysses HERNIOSUS
ST Employee

Hi,

with the disappearance of P2P from Android you have two basic you have the following options on Android:

  1. Use ST25R3916 in reader mode, install an App for emulating a smartcard with a fixed AID on the phone. Once installed the Reader is able to communicate without having the app opened/in the foreground. This will be using ISO14443 technology. Typically you would be using ISO7816-4 APDUs but basically you are free to define your own protocol after the Select AID. Gross speed will be 106kbps but on some phones it may go up to 848kbps. However net speed will be limited by internal phone communication - typically I2C and one may only see limited increase in throughput.
  2. Use ST25R3916 in card emulation mode. For communication the app needs to be opened. I am unsure if phone will be using higher bitrates when using ISO14443-A/NFC-A. Higher bitrates would be possible when using FeliCa/NFC-F but in my experience app cannot select whether 212kbps or 424kbps will be used. Similar phone internal limitations concerning net speed as above will apply.

In case you are targeting also iPhone: I think only the second option will be available with standard iOS apps.

We do have some demos for the 3916, e.g. the ST25 Embedded NFC lib contains examples ([bluetooth_]pairing) for emulating T3T and T4T - which can be read by the Android OS. The other direction you can see by means of the ST25 Embedded NFC lib reading T3T and T4T in its ndef_rw demo.

Best Regards, Ulysses