This section describes the general APDU command set requirements for non-ISO14443-4 compliant cards (known as storage cards).
General-Authenticate command
The General-Authenticate command is used to perform the authentication sequence on a MIFARE card. This command is only applicable for MIFARE Mini, Classic 1k and 4k cards.
Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
General-Authenticate |
0xFF |
0x86 |
0x00 |
0x00 |
0x01 |
Address MSB, Address LSB, Key Type A or B, Key Number |
Get-Data command
The Get-Data command is used to retrieve information from the contactless NFC tag/card.
Command |
Class |
INS |
P1 |
P2 |
L2 |
Get-Data |
0xFF |
0xCA |
0x00: Serial number of the card (ISO14443-A: UID, ISO14443-B: PUPI, Felica: IDm, Jewel: RID)
0x01: Historical bytes of the card (Type A: Historical bytes from ATR, Type B: ATTRIB response) |
0x00 |
0x00 |
Response |
Data out, SW1, SW2 |
Load-Key command
The Load-Key command is used to store MIFARE keys in the driver. This command is only applicable for MIFARE Mini, Classic 1k and 4k cards.
Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
Load-Key |
0xFF |
0x82 |
Key Structure |
Key Number |
0x6 |
Key Value |
Manage Session command
The implementation of this command should be per the PCSC specification.
Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
General Authenticate |
0xFF |
0xC2 |
0x00 |
0x00 |
Variable |
TLV Data Object |
The following are required TLV data objects to be supported by the driver:
Tag |
Data Object |
0x80 |
Version data object |
0x81 |
Start Transparent Session |
0x82 |
End Transparent Session |
Read-Binary command
The Read-Binary command is used to read data from the contactless NFC tag/card. The command is applicable only for storage cards (MIFARE Classic/UL, Felica, ISO15693 and Jewel/Topaz cards).
Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
Li |
Read-Binary |
0xFF |
0xB0 |
Address MSB |
Address LSB |
Length of Data In |
Data |
Length expected |
Read-Binary MIFARE family
Command |
CLA |
INS |
P1 |
P2 |
Le |
UL READ 16 |
0xFF |
0xB0 |
0x00 |
0x00 to 0x15 |
0x10 |
CL 1k READ 16 |
0xFF |
0xB0 |
0x00 |
0x00 to 0x3F |
0x10 |
CL 4k READ 16 |
0xFF |
0xB0 |
0x00 |
0x00 to 0xFF |
0x10 |
Read-Binary Jewel family
Command |
CLA |
INS |
P1 |
P2 |
Le |
READ ALL |
0xFF |
0xB0 |
0x00 |
0x00 |
0x00 |
RID |
0xFF |
0xB0 |
0x00 |
0x00 |
0x06 |
READ |
0xFF |
0xB0 |
Block No |
Block Offset |
0x01 |
READ 8 |
0xFF |
0xB0 |
Block No |
0x00 |
0x08 |
READ SEG |
0xFF |
0xB0 |
0x00 |
Segment Addr |
0x80 |
Read-Binary Felica family
Command |
CLA |
INS |
P1 |
P2 |
Lc |
Data In |
CHECK |
0xFF |
0xB0 |
0x00 |
0x00 |
Length of Data In |
Number of Service, Number of Blocks, Block list |
ISO 15693 family
Command |
CLA |
INS |
P1 |
P2 |
Le |
READ |
0xFF |
0xB0 |
Block Number |
0x00 |
0x04 |
ISO 15693 family Response
Response |
Data out, SW1, SW2 |
Transparent exchange command
Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
General Authenticate |
0xFF |
0xC2 |
0x00 |
0x01 |
Variable |
TLV Data Object |
The following are the required TLV data objects for Transparent Exchange Command to be supported by the driver for transparent exchange of commands to storage cards:
Tag |
Data Object |
0x95 |
Transceive - Transmit and receive |
0x5F46 |
Timer |
Update-Binary command
The Update-Binary command is used to write data to the contactless NFC tag/card. The command is applicable only for storage cards (MIFARE Classic/UL, Felica, ISO15693 and Jewel/Topaz cards). The format of the request and response for the command is as described below.
Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
Update-Binary |
0xFF |
0xD6 |
Address MSB |
Address LSB |
Length of Data In |
Data |
Update-Binary MIFARE family
Command |
CLA |
INS |
P1 |
P2 |
Le |
UL WRITE 4 |
0xFF |
0xD6 |
0x00 |
0x00 to 0x15 |
0x04 |
CL 1k WRITE 16 |
0xFF |
0xD6 |
0x00 |
0x00 to 0x3F |
0x10 |
CL 4k WRITE 16 |
0xFF |
0xB0 |
0x00 |
0x00 to 0xFF |
0x10 |
Update-Binary Jewel family
Command |
CLA |
INS |
P1 |
P2 |
Le |
WRITE1-E |
0xFF |
0xD6 |
Block Number |
Block Offset |
0x01 |
WRITE8-E |
0xFF |
0xD6 |
Block Number |
0x00 |
0x08 |
Update-Binary Felica family
Command |
CLA |
INS |
P1 |
P2 |
Le |
Data In |
UPDATE |
0xFF |
0xD6 |
0x00 |
0x00 |
Length of Data In |
Number of Service, Number of blocks, Block list |
Command |
CLA |
INS |
P1 |
P2 |
Le |
WRITE |
0xFF |
0xD6 |
Block Number |
0x00 |
0x04 |