Link to this headingISO 15693 Protocol

  • Uses the Amplitude Shift Keying 13.56 MHz ± 7 kHz
    • There are three elvens for the ASK so two bits are encoded into a single change.
  • At one of two data rates 26.48 kbit/s, 52.97 kbit/s
    • Low speed uses 4 levels to send two bits at the same time
    • High speed uses 256 levels to send 8 bits at the same time

Common Cards:

Link to this headingFrames

  • SOF: Start of Frame (10101011 pattern)
  • Flags: 8-bit control field
  • Command: 8-bit command code
  • Parameters: Variable length (UID, addresses, etc.)
  • Data: Variable length payload
  • CRC: 16-bit CRC-CCITT
  • EOF: End of Frame

Reader Frame:

packet +8: "SOF" +8: "Flags" +8: "Command" +64: "Parameters" +32: "Data" +16: "CRC" +8: "EOF"

Card Frame:

packet +8: "SOF" +8: "Flags" +32: "Data" +16: "CRC" +8: "EOF"

Error Frame:

[SOF] [01] [Error Code] [CRC] [EOF]

Link to this headingFlags

packet +1: "Sub-carrier" +1: "Address" +1: "Select" +1: "Protocol Ext" +1: "RFU" +1: "Option" +1: "RFU" +1: "RFU"

Link to this headingCommands

Common Commands

INVENTORY 0x01 - Find cards in field STAY_QUIET 0x02 - Silence specific card READ_SINGLE_BLOCK 0x20 - Read one block WRITE_SINGLE_BLOCK 0x21 - Write one block LOCK_BLOCK 0x22 - Lock block against writing READ_MULTIPLE_BLOCK 0x23 - Read multiple blocks SELECT 0x25 - Select specific card RESET_TO_READY 0x26 - Reset card state WRITE_AFI 0x27 - Write AFI value LOCK_AFI 0x28 - Lock AFI against changes WRITE_DSFID 0x29 - Write DSFID value LOCK_DSFID 0x2A - Lock DSFID against changes GET_SYSTEM_INFO 0x2B - Get card information

Optional Commands:

GET_MULTIPLE_BLOCK_SECURITY 0x2C READ_SINGLE_BLOCK_SECURITY 0x2D WRITE_MULTIPLE_BLOCK 0x24 CUSTOM_COMMANDS 0xA0-0xDF

Link to this headingInventory Command

Reader -> Card: [26] [01] [00] [CRC] (Flags=26h, Command=0x01, No mask, CRC) Card -> Reader: [00] [UID 8 bytes] [DSFID] [CRC] (No error, UID, DSFID, CRC)

Link to this headingRead Single Block Command

Reader -> Card: [22] [20] [UID 8 bytes] [Block#] [CRC] (Addressed, Read command, UID, Block number, CRC) Card -> Reader: [00] [Block Data 4 bytes] [CRC] (No error, Data, CRC)

Link to this headingWrite Single Block Command

Reader -> Card: [22] [21] [UID 8 bytes] [Block#] [Data 4 bytes] [CRC] (Addressed, Write command, UID, Block, Data, CRC) Card -> Reader: [00] [CRC] (No error, CRC)

Link to this headingErrors

00: No Error 01: Command not supported 02: Command not recognized 03: Option not supported 0F: Unknown error 10: Block not available 11: Block already locked 12: Block locked 13: Block not successfully programmed 14: Block not successfully locked