Jacob
Jacob

Reputation: 15297

IsoDep.transceive(command) responds with [110, 0] bytes?

I work with NFC tag which has discovered ISO,NFCA and NDEF technologies. There are information to read from chip and I try to access memory but most of commands I use to communicate with the TAG responds with [110, 0] bytes. I could not find what do this mean, some of them responds with [109, 0] or [106, -122]. Most often [110, 0]. Those data is stored beyond the standard NDEF content.

I could not find any information about this kind of response, maybe it is kind of error. Maybe I misunderstood IsoDep protocol, but it looks pretty simple:

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep iso = IsoDep.get(tag);

byte[] mMaster = iso.transceive(CommandFactory.GET_MASTER_APP);
byte[] mApplciation = iso
                .transceive(CommandFactory.SELECT_APPLICATION);

AFAIK it is 'stateless' protocol so there is no need to send commands in specific order ?

Any ideas ?

Upvotes: 1

Views: 1280

Answers (1)

Michael Roland
Michael Roland

Reputation: 40851

If Android shows NfcA + IsoDep + Ndef tag technologies for the tag , this means that the tag is an NFC Forum Type 4 tag. Note that the communication with Type 4 tags is not at all stateless. The tag contains a file system structure according to ISO/IEC 7816-4, so you would first have to select the NDEF tag application (the "directory"), then -- within that application -- select a certain file (e.g. the capability container or the NDEF data file), and then you can perform read/write operations on that file.

What you see in response to your command APDUs (APDUs are application protocol data units defined in ISO/IEC 7816-4 and that's what you speak with Type 4 tags over ISO-DEP) are response APDUs that consist of a status word. In your case the status words are

  • [110, 0] or in unsigned hexadecimal 6E 00: Command class not supported
  • [109, 0] or in unsigned hexadecimal 6D 00: Instruction code not supported
  • [106, -112] or in unsigned hexadecimal 6A 90: This is a strange (and non-standard) status code. A typical code would be 6A 82 ([106, -126]), which means file or application not found.

Upvotes: 2

Related Questions