Frame Definition¶
The serial communication between the Host Computer and the Interrogator is done frame by frame with formats explained below.
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.
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.
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 |
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. |
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. |
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. |