Frame Definition ================ The serial communication between the **Host Computer** and the **Interrogator** is done frame by frame with formats explained below. .. _header-n7: Frame Format ------------ ====== ==== ================ ===================== ========= === === Header Type Instruction Code Parameter Length (PL) Parameter CRC End ====== ==== ================ ===================== ========= === === BB 00 07 00 01 01 09 7E ====== ==== ================ ===================== ========= === === The CRC is calculated by summing the frame bytes from Type to the last byte of Parameter, only taking the LSB byte. .. _header-n26: Frame Type ---------- ==== ======================================================= Type Description ==== ======================================================= 0x00 Command from the Host Computer to the Interrogator 0x01 Response from the Interrogator to the Host Computer 0x02 Notification from the Interrogator to the Host Computer ==== ======================================================= Each **command frame** has a corresponding **response frame**. The **response frame** indicates whether the instruction has been executed. There are corresponding **notification frames** for single inventory instructions and multiple inventory instructions. The **notification frames** is automatically sent to the **Host Computer** by the **Interrogator** according to the reading situation. When the **Interrogator** reads a tag, it sends a **notification frame**, and when the **Interrogator** reads multiple tags, it sends multiple **notification frames**. .. _header-n2834: Frame Code Index ---------------- This is the list of possible code for the command frame and the corresponding response frame. Usually, the response frame will have the same code as the command code with this exception: - 0xE5 command code can have 0xE5 or 0xE6 response code - 0xD3 command code can have 0xD3 or 0xD4 response code - Error response frame will have 0xFF as the response code ========= ======================================== Code Instruction ========= ======================================== 0x03 Get Interrogator Module Information 0x22 Single Inventory 0x27 Multiple Inventory 0x28 Stop Multiple Inventory 0x0C Set Select 0x12 Get Select 0x39 Read Tag 0x49 Write Tag 0x82 Lock Tag 0x65 Kill Tag 0x11 Set Communication Baud Rate 0x0D Get Query Parameters 0x0E Set Query Parameters 0x07 Set work area 0xAB Set working channel 0xAA Get working channel 0xAD Set automatic frequency hopping 0xB7 Get transmit power 0xB6 Set transmit power 0xB0 Set to transmit continuous carrier 0xF1 Get receiver demodulator parameters 0xF0 Set the receiver demodulator parameters 0xF2 Test the blocking signal at the RF input 0xF3 Test channel RSSI 0x1A Control IO port 0x17 Module sleep 0x1D Set module idle sleep time 0xE0 NXP ChangeConfig command 0xE1 NXP ReadProtec/Reset ReadProtect command 0xE3 NXP Change EAS command 0xE4 NXP EAS-Alarm command 0xE5/0xE6 Impinj Monza 4 QT command 0xD3/0xD4 BlockPermalock instruction ========= ======================================== .. _header-n42: Response Error Codes -------------------- If the execution of the instruction fails, the interrogator will return a response frame of execution failure which has 0xFF as the Command Code. The response frame parameter will be 1 Byte of error code, and sometimes with PC+EPC of the tag if available. +-----------------------+------+-------------------------------------------------+ | Error | Code | Description | +=======================+======+=================================================+ | Command Error | 0x17 | The command code in the command frame is wrong. | +-----------------------+------+-------------------------------------------------+ | FHSS Fail | 0x20 | Frequency hopping search channel timed out. All | | | | channels are occupied during this time. | +-----------------------+------+-------------------------------------------------+ | Inventory Fail | 0x15 | No Tag reply or CRC error. | +-----------------------+------+-------------------------------------------------+ | Wrong Access Password | 0x16 | Wrong access password. | +-----------------------+------+-------------------------------------------------+ | Read Fail | 0x09 | No Tag reply or CRC error. | +-----------------------+------+-------------------------------------------------+ | Write Fail | 0x10 | No Tag reply or CRC error. | +-----------------------+------+-------------------------------------------------+ | Lock Fail | 0x13 | No Tag reply or CRC error. | +-----------------------+------+-------------------------------------------------+ | Kill Fail | 0x12 | No Tag reply or CRC error. | +-----------------------+------+-------------------------------------------------+ | BlockPermalock Fail | 0x14 | No Tag reply or CRC error. | +-----------------------+------+-------------------------------------------------+ .. _header-n3445: NXP G2X ReadProtect Custom Command Error ---------------------------------------- +------------------------+------+------------------------------+ | Error | Code | Description | +========================+======+==============================+ | ChangeConfig Fail | 0x1A | No Tag reply or CRC error. | +------------------------+------+------------------------------+ | ReadProtect Fail | 0x2A | No Tag reply or CRC error. | +------------------------+------+------------------------------+ | Reset ReadProtect Fail | 0x2B | No Tag reply or CRC error. | +------------------------+------+------------------------------+ | Change_EAS Fail | 0x1B | No Tag reply or CRC error. | +------------------------+------+------------------------------+ | EAS_Alarm Fail | 0x1D | The EAS_Alarm command fails, | | | | and the correct Alarm Code | | | | is returned without a tag. | +------------------------+------+------------------------------+ .. _header-n3228: EPC Gen2 Error -------------- This is the format of the error response frame related to EPC Gen2 Protocol. The error codes specified by the EPC Gen2 protocol is only 4 bits, and it is represented on the lower 4 bits of the response frame **error code**. The upper 4 bits is 0xA -- 0xE depending on the command it corresponds to. EPC Gen2 protocol returns an error code with this format: ================== ============== Error Code Format Command ================== ============== 0xA0 \| Error Code Read 0xB0 \| Error Code Write 0xC0 \| Error code Lock 0xD0 \| Error code Kill 0xE0 \| Error code BlockPermalock ================== ============== This is from Table I.2: Tag error codes of EPCglobal Gen2 Specification v2.0.1. +------------+--------------------------+---------------------------+ | Error Code | Error-Code Name | Description | +============+==========================+===========================+ | 0x00 | Other error | Catch-all for errors not | | | | covered by other codes. | +------------+--------------------------+---------------------------+ | 0x01 | Not supported | The Tag does not support | | | | the specified parameters | | | | or feature. | +------------+--------------------------+---------------------------+ | 0x02 | Insufficient privileges | The Interrogator did not | | | | authenticate itself with | | | | sufficient privileges for | | | | the Tag to perform the | | | | operation | +------------+--------------------------+---------------------------+ | 0x03 | Memory overrun | The Tag memory location | | | | does not exist, is too | | | | small, or the Tag does | | | | not support the specified | | | | EPC length. | +------------+--------------------------+---------------------------+ | 0x04 | Memory locked | The Tag memory location | | | | is locked or permalocked | | | | and is either not | | | | writeable or not | | | | readable. | +------------+--------------------------+---------------------------+ | 0x05 | Crypto suite error | Catch-all for errors | | | | specified by the | | | | cryptographic suite. | +------------+--------------------------+---------------------------+ | 0x06 | Command not encapsulated | The Interrogator did not | | | | encapsulate the command | | | | in an AuthComm or | | | | SecureComm as required. | +------------+--------------------------+---------------------------+ | 0x07 | ResponseBuffer overflow | The operation failed | | | | because the | | | | ResponseBuffer | | | | overflowed. | +------------+--------------------------+---------------------------+ | 0x08 | Security timeout | The command failed | | | | because the Tag is in a | | | | security timeout. | +------------+--------------------------+---------------------------+ | 0x0B | Insufficient power | The Tag has insufficient | | | | power to perform the | | | | operation. | +------------+--------------------------+---------------------------+ | 0x0F | Non-specific error | The Tag does not support | | | | error-specific codes. | +------------+--------------------------+---------------------------+