EL-UHF-RMT01 Protocol

Frame Definition

The serial communication between the Host Computer and the Interrogator is done frame by frame with formats explained below.

Frame Format

HeaderTypeInstruction CodeParameter Length (PL)ParameterCRCEnd
BB000700 0101097E

The CRC is calculated by summing the frame bytes from Type to the last byte of Parameter, only taking the LSB byte.

Frame Type

TypeDescription
0x00Command from the Host Computer to the Interrogator
0x01Response from the Interrogator to the Host Computer
0x02Notification 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
CodeInstruction
0x03Get Interrogator Module Information
0x22Single Inventory
0x27Multiple Inventory
0x28Stop Multiple Inventory
0x0CSet Select
0x12Get Select
0x39Read Tag
0x49Write Tag
0x82Lock Tag
0x65Kill Tag
0x09Set Settings Volatile
0x11Set Communication Baud Rate
0x0DGet Query Parameters
0x0ESet Query Parameters
0x07Set work area
0xABSet working channel
0xAAGet working channel
0xADSet automatic frequency hopping
0xB7Get transmit power
0xB6Set transmit power
0xB0Set to transmit continuous carrier
0xF1Get receiver demodulator parameters
0xF0Set the receiver demodulator parameters
0xF2Test the blocking signal at the RF input
0xF3Test channel RSSI
0x1AControl IO port
0x17Module sleep
0x1DSet module idle sleep time
0xE0NXP ChangeConfig command
0xE1NXP ReadProtec/Reset ReadProtect command
0xE3NXP Change EAS command
0xE4NXP EAS-Alarm command
0xE5/0xE6Impinj Monza 4 QT command
0xD3/0xD4BlockPermalock 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.

ErrorCodeDescription
Command Error0x17The command code in the command frame is wrong.
FHSS Fail0x20Frequency hopping search channel timed out. All channels are occupied during this time.
Inventory Fail0x15No Tag reply or CRC error.
Wrong Access Password0x16Wrong access password.
Read Fail0x09No Tag reply or CRC error.
Write Fail0x10No Tag reply or CRC error.
Lock Fail0x13No Tag reply or CRC error.
Kill Fail0x12No Tag reply or CRC error.
BlockPermalock Fail0x14No Tag reply or CRC error.

NXP G2X ReadProtect Custom Command Error

ErrorCodeDescription
ChangeConfig Fail0x1ANo Tag reply or CRC error.
ReadProtect Fail0x2ANo Tag reply or CRC error.
Reset ReadProtect Fail0x2BNo Tag reply or CRC error.
Change_EAS Fail0x1BNo Tag reply or CRC error.
EAS_Alarm Fail0x1DThe 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 FormatCommand
0xA0 \Error CodeRead
0xB0 \Error CodeWrite
0xC0 \Error codeLock
0xD0 \Error codeKill
0xE0 \Error codeBlockPermalock

This is from Table I.2: Tag error codes of EPCglobal Gen2 Specification v2.0.1.

Error CodeError-Code NameDescription
0x00Other errorCatch-all for errors not covered by other codes.
0x01Not supportedThe Tag does not support the specified parameters or feature.
0x02Insufficient privilegesThe Interrogator did not authenticate itself with sufficient privileges for the Tag to perform the operation
0x03Memory overrunThe Tag memory location does not exist, is too small, or the Tag does not support the specified EPC length.
0x04Memory lockedThe Tag memory location is locked or permalocked and is either not writeable or not readable.
0x05Crypto suite errorCatch-all for errors specified by the cryptographic suite.
0x06Command not encapsulatedThe Interrogator did not encapsulate the command in an AuthComm or SecureComm as required.
0x07ResponseBuffer overflowThe operation failed because the ResponseBuffer overflowed.
0x08Security timeoutThe command failed because the Tag is in a security timeout.
0x0BInsufficient powerThe Tag has insufficient power to perform the operation.
0x0FNon-specific errorThe Tag does not support error-specific codes.

Frame Examples

Interrogator Module Configuration

0x03 Get Interrogator module information

Get module information: hardware version, software version or manufacturer information.

Instruction Code: 0x03

Command Parameter:

  • Hardware version: 0x00
  • Software version: 0x01
  • Manufacturer: 0x02

Response Parameter:

  • First byte will be the same as the command parameter.
  • Next bytes will be the hardware module name and version in ASCII encoding.
Command to get the hardware version
HTypeCMDPLParameterCRCEnd
BB000300 0100047E
Successful Response
HTypeCMDPLParameterCRCEnd
BB010300 0B00 4D 31 30 30 20 56 31 2E 30 30227E

The response parameter starts with 0x00, corresponding to the command parameter. The next bytes are 4D 31 30 30 20 56 31 2E 30 30, which is ASCII code of “M100 V1.00”

0x09 Set settings volatile

This command is used to control how configuration settings are stored in the module’s memory. It allows you to specify whether the settings should be retained only temporarily (volatile memory) or permanently (non-volatile memory).

Command Parameter:

  • 00: Settings will be stored in the module volatile memory and will be reset after reboot
  • 01: Settings will be stored in the module non-volatile memory will stay after reboot
Command
HTypeCMDPLParameterCRCEnd
BB000900 01010B7E
Response
HTypeCMDPLParameterCRCEnd
BB010900 01010B7E

0x11 Set communication baud rate

The baud rate in the parameter is the actual baud rate divided by 100. For this example, the target baud rate is 19200, so the value is 19200 / 100 = 192 = 0xC0.

Command
HTypeCMDPLBaud rateCRCEnd
BB001100 0200 C0D37E
No Response Frame

There is no response frame for this instruction. After the Interrogator has changed the communication baud rate, the Host Computer will need to reconnect to the Interrogator with the new baud rate.

0x17 Module Sleep

The module sleep command allows the Interrogator to maintain a low-power sleep mode. The Host Computer can wake the Interrogator up by sending any byte through the serial port, but the data will be discarded.

The first command received after the module sleeps will not respond because the first character of the first command will Was abandoned. This command will reset the M100/QM100 chip after power-off. After the module wakes up, it will re-download the firmware to the M100/QM100 chip and reset some parameters to the module (these parameters include the power, frequency, and frequency hopping configured before sleep Mode, sleep time, receiver demodulator parameters, excluding Select mode, Select parameters, etc.), so some parameters may need to be reset. The instructions are as follows:

Command
HTypeCMDPLCRCEnd
BB001700 00177E
Response
HTypeCMDPLParameterCRCEnd
BB011700 0100197E

0x1D Module Idle sleep time

This command can set how long the module will automatically enter the sleep state after no operation. After the module sleeps, it can wake up by sending any character through the serial port. After the module sleeps, the first command received will not respond because the first character of the first command will be discarded. This command will reset the M100/QM100 chip. After the module wakes up, it will re-download the firmware to the M100/QM100 chip and reset some parameters to the module (these parameters include the power, frequency, and frequency hopping mode configured before sleep. Sleep time, receiver demodulator parameters, excluding Select mode, Select parameters, etc.), so some parameters may need to be reset.

The parameter define number of minutes of inactivity before sleep. The range is 1 to 30 minutes. 0x00 means no sleep.

Command

To set the idle sleep time to two minutes:

HTypeCMDPLParameterCRCEnd
BB001D00 0102207E
Successful Response
HTypeCMDPLParameterCRCEnd
BB011D00 0102217E

0x04 Module Idle mode

This command allows the module to enter IDLE working mode. In IDLE mode, except for the digital part and communication interface, all other analog and RF parts of the power supply are turned off to reduce power consumption when not working. After the module enters the IDLE mode, it can still communicate with the module normally, the set parameters are still saved, and the module can normally respond to the instructions of the Host Computer. After entering IDLE mode, the first inventory (or instructions that require interaction with tags such as reading or writing tag data) will restore the module to its normal state, but the first inventory may be successful due to the unstable power state of the RF part The rate drops, and subsequent inventory and other operations can return to normal.

First parameter: 0x00: Exit Idle Mode, 0x01: Enter Idle Mode

Second Parameter: Reserved as 0x01

Idle Mode Time: Number of minutes before entering Idle mode. The value ranges from 0x00 to 0x1E (30 Minutes). 0x00 means never enter Idle mode.

Command

To set the idle mode time to three minutes:

HTypeCMDPLEnterReservedIdle TimeCRCEnd
BB000400 03010103207E
Successful Response
HTypeCMDPLParameterCRCEnd
BB010400 0100067E

Inventory Commands

0x22 Single Inventory

Complete an inventory operation in the EPC Class1 Gen2 protocol. The instruction does not include the Select operation. The power amplifier will be turned on and off automatically before and after each inventory command is executed. In the single inventory command, the Query operation parameter is configured by another command, and the initial value is already in the firmware.

Command
HTypeCMDPLCRCEnd
BB002200 00227E
Notification

After the Interrogator receives a single inventory command, if it can read the tag with the correct CRC check, the Interrogator will return the data including RSSI, PC, EPC and CRC.

The Interrogator will return one notification frame for each of the successfully read Tag.

HTypeCMDPLRSSIPCEPCCRCCRCEnd
BB022200 11C934 0030 75 1F EB 70 5C 59 04 E3 D5 0D 703A 76EF7E

The RSSI value reflects the size of the signal at the input of the chip, excluding antenna gain and directional coupler attenuation. RSSI is the signal strength at the input end of the chip, signed in hexadecimal, and the unit is dBm. In the above example, the RSSI is 0xC9, which means the signal strength at the input of the chip is -55dBm.input end of the chipinput end of the chip

0x15 Error Response

If no tag is detected or the data CRC error is detected, the parameter value will be error code 0x15:

HTypeCMDPLParameterCRCEnd
BB01FF00 0115167E

0x27 Multiple Inventory

Command

Inventory multiple times, and the number of polling times is limited to 0-65535. If the number of polling is 10000 times, the command is as follows:

HTypeCMDPLReservedCNTCRCEnd
BB002700 032227 10837E

0x2710 = 10,000.

Notification

The multiple inventory response frame is the same as the single inventory response frame:

HTypeCMDPLRSSIPCEPCCRCCRCEnd
BB022200 11C934 0030 75 1F EB 70 5C 59 04 E3 D5 0D 703A 76EF7E
0x15 Error Response

If no tag is detected or the data CRC error is detected, the parameter value will be error code 0x15:

HTypeCMDPLParameterCRCEnd
BB01FF00 0115167E

0x28 Stop multiple inventory

This instruction stops the multiple inventory in process.

Command
HTypeCMDPLCRCEnd
BB002800 00287E
Success Response Frame
HTypeCMDPLParameterCRCEnd
BB012800 01002A7E

Select Commands

The parameters of this select commands are explained in 6.3.2.12.1 Select commands.

0x0C Set Select

Command:

Set the Select parameter and set the Select mode to 0x02 at the same time (Send the Select command before inventory the label). In the case of multiple tags, you can only inventory, read and write operations for specific tags based on the Select parameter. E.g:

HTypeCMDPLSelParamPointerMaskLenTruncateMaskCRCEnd
BB000C00 130100 00 00 20600030 75 1F EB 70 5C 59 04 E3 D5 0D 70AD7E

SelParam: 0x01 (Target: 0b000, Action: 0b000, MemBank: 0b01)
SelParam has a total of 1 Byte, of which Target occupies the highest 3 bits, Action occupies the middle 3 bits, and MemBank occupies the last 2 bits.

  • Target
    Refer to EPC Gen2 Protocol
  • Action
    Refer to EPC Gen2 Protocol
  • Membank
    The meaning of MemBank is as follows:
    • 0b00: Reserved Memory Bank
    • 0b01: EPC Memory Bank
    • 0b10: TID Memory Bank
    • 0b11: User Memory Bank

Pointer: 0x00000020 (in bits, not words) Starting from the EPC Memory Bank

MaskLen: 0x60 (6 words, 96 bits) )

Whether Truncate: 0x00 (0x00 is Disable truncation, 0x80 is Enable truncation)

When the Select Mask length is greater than 80 bits (5 words), sending the Select command will first set all tags in the field to Inventoried Flag as A and SL Flag as ~SL, and then operate according to the selected Action. When the Select Mask length is less than 80 bits (5 words), the label status will not be set to Inventoried Flag A and SL Flag ~SL through the Select command in advance.

Mask: 0x30751FEB705C5904E3D50D70

Success Response:

HTypeCMDPLDataCRCEnd
BB010C00 01000E7E

0x0B Get Select

Command:
HTypeCMDPLCRCEnd
BB000B00 000B7E
Response:
HTypeCMDPLSe lParamP ointerM askLenTr uncateMaskCRCEnd
BB010B00 130100 00 00 20600030 75 1F EB 70 5C 59 04 E3 D5 0D 70AD7E

SelParam: 0x01 (Target: 3’b000, Action: 3’b000, MemBank: 2’b01)

Pointer: 0x00000020 (in bits, not words) Starting from the EPC Memory Bank

MaskLen: 0x60 (6 words, 96 bits) )

Whether Truncate: 0x00 (0x00 is Disable truncation, 0x80 is Enable truncation)

0x12 Set Select mode

Command:

If the Select parameter has been set, execute this command to set the Select mode. For example, if you want to cancel the Select command:

HTypeCMDPLModeCRCEnd
BB001200 0101147E

Select Mode Mode:
0x00: Send the Select command in advance to select a specific label before all operations on the label.
0x01: Do not send the Select command before operating on the label.
0x02: Only send the Select command before the tag operation except Inventory, such as
Before Read, Write, Lock, Kill, select a specific label through Select.

Success Response:
HTypeCMDPLDataCRCEnd
BB010C00 01000E7E

RFID Tag Commands

0x39 Read Tag memory

Read the data of the specified address and length in the memory Bank of a tag. This instruction takes four parameters:

  • Access Password
  • MemBank
  • WordPtr
  • WordCount

Before this instruction, the Select parameter should be set to select the specified tag to read the tag data area. If the Access Password is all zeros, no Access command is sent.

Command

This command reads from 2 words (4 bytes) starting from address 0x00 of User Memory Bank using 0x0000FFFF as Access Password.

HTypeCMDPLAccess PasswordMemBankWordPtrWordCountCRCEnd
BB003900 0900 00 FF FF0300 0000 02457E
Successful Response
HTypeCMDPLPC + EPC LengthPCEPCRead DataCRCEnd
BB013900 130E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 7012 34 56 78B07E
0x09 Read Fail Response
HTypeCMDPLError CodeCRCEnd
BB01FF00 01090A7E

0x09 error code means the tag is not in range, or there is an error of the EPC code.

0x16 Wrong Access Password Error
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70757E
0xA3 EPC Gen2 Error Response:
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10A30E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70027E

Error Code 0xA3 means that this is an EPC Gen2 error code 0x03: Memory Overrun.

0x49 Write Tag memory

Before this instruction, the Select parameter should be set first to select the specific tag to write to. If the Access Password is all zeros, no Access command is sent.

The WordCount should not exceed 32 words (64 Bytes = 512 bits).

Command
HTypeCMDPLAccess PasswordMemBankWordPtrWordCountDataCRCEnd
BB004900 0D00 00 FF FF0300 0000 0212 34 56 786D7E
Successful Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB014900 100E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 7000A97E

Parameter 0x00 means that the instruction is executed successfully.

0x10 Error Response
HTypeCMDPLErrorCRCEnd
BB01FF00 01100A7E

0x10 error code means the tag is not in range, or there is an error of the EPC code.

0x16 Wrong Access Password Error
HTypeCMDPLErrorPC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70757E
0xB3 EPC Gen2 Error Response
HTypeCMDPLErrorPC + EPC LengthPCEPCCRCEnd
BB01FF00 10B30E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70127E

Error code 0xB3 means that this is an EPC Gen2 error code 0x03: Memory Overrun.

0x82 Lock Tag Memory

Change lock status of a memory bank of the specified tag. Before this instruction, the Select parameter should be set to target the specified tag.

Command
HTypeCMDPLAccess PasswordLDCRCEnd
BB008200 0700 00 FF FF02 00 80097E

In this command, the LD is 0x020008.

0x020080 = 0b0000 0b0010 0b0000 0b0000 0b1000 0b0000

The upper 4 bits of the LD is reserved to 0b0000 because the EPC Gen2 Lock-Command Payload only requires 20 bits of data. (Refer to section 6.3.2.11.3.5 of EPC Gen2 Protocol v2.0.1)

Only actions whose mask bits are 1 are going to be executed.

In this 0x020080 example, the mask bits of Access Password is 01 and the action of Access Password is 01. Thus, the access password will be permanently readable and writable.

Successful Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB018200 100E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 7000E27E
0x13 Error Response
HTypeCMDPLParameterCRCEnd
BB01FF00 0113147E

0x13 error code means the tag is not in range, or there is an error of the EPC code.

0x16 Wrong Access Password Error
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70757E
0xC4 EPC Gen2 Error Response
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10C40E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70237E

Error Code 0xC4 means that this is an EPC Gen2 error code 0x04: Memory Locked.

0x65 Kill Tag

Before this instruction, the Select parameter should be set first to select the specific tag to kill.

Command
HTypeCMDPLKill PasswordCRCEnd
BB006500 0400 00 FF FF677E
Successful Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB016500 100E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 7000C57E
0x12 Error Response
HTypeCMDPLParameterCRCEnd
BB01FF00 0112137E

0x12 error code means the tag is not in range, or there is an error of the EPC code.

0xD0 EPC Gen2 Error Response
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10D00E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 702F7E

Error Code 0xD0 means that this is an EPC Gen2 error code 0x00: Other error. This may be because the kill password of the tag hasn’t been set.

0xD3 BlockPermalock / 0xD4 Read Permalock Status

This instruction can permanently lock certain blocks in the user area, or read the lock status of the block. Before this instruction, the Select parameter should be set to the targeted tag.

According to section 6.3.2.12.3.9 of EPCglobal Gen2 Specification v2.0.1:

A BlockPermalock may permalock between zero and 4080 memory blocks. The block size, which is predefined by the Tag manufacturer, is fixed at between one and 1024 words, is the same for all files, and is the same for block permalocking and file allocation. The memory blocks specified by a BlockPermalock need not be contiguous.

ParameterLengthExplanation
Access Password4 BytesAccess password of the tag
Read / Lock1 Byte0x00: Read<br />0x01: Write
MemBank1 ByteShould be 0x03 (User memory)
BlockPtr2 ByteBlockPtr specifies the starting address for Mask, in units of 16 blocks
BlockRange1 ByteBlockRange specifies the range of Mask, starting at BlockPtr and ending (16×BlockRange)–1 blocks later.
Mask0 / 2 ByteIf the instruction is to read (0x00 for Read/Lock Parameter), this parameter is omitted
Command

To permanently lock the blocks 5, 6, 7:

HTypeCMDPLAccess Pa sswordRead / LockM emBankBl ockPtrBloc kRangeMaskCRCEnd
BB00D300 0B00 00 FF FF010300 000107 00E87E
0xD3 Read Successful Response
HTypeCMDPLPC + EPC LengthPCEPCBloc kRangeBlock Per malockCRCEnd
BB01D300 120E30 00E2 00 30 16 66 06 00 69 11 60 9F 940107 00CD7E
0xD4 Write Successful Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB01D400 100E30 00E2 00 30 16 66 06 00 69 11 60 9F 9400C47E
0x14 Tag Not Found Error
HTypeCMDPLParameterCRCEnd
BB01FF00 0114157E
0xE3 EPC Gen2 Error Response
HTypeCMDPLErrorPC + EPC LengthPCEPCCRCEnd
BB01FF00 10E30E30 00E2 00 30 16 66 06 00 69 11 60 9F 94D27E

Error Code 0xE3 means that this is an EPC Gen2 error code 0x03: Memory Overrun.

0x16 Wrong Access Password Error
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E30 00E2 00 30 16 66 06 00 69 11 60 9F 94057E

Query Commands

Query command is documented on section 6.3.2.12.2 of EPC Gen2 Protocol v2.0.1.

The parameters for communication between the Host Computer and the Interrogator is documented in the table below with the data represented in binary:

DescriptionLength (bit)Description
DR10 = 8
M200 = 1, 01 = 2, 10 = 4, 11 = 8
TRext10 = No pilot tone, 1 = Use pilot tone
Sel200 = All, 01 = All, 10 = ~SL, 11 = SL
Session200 = S0, 01 = S1, 10 = S2, 11 = S3
Target10 = A, 1 = B
Q (slot-count)4Decimal 0-15 according to the value
Padding3000

0x0D Get Query parameters

Command
HTypeCMDPLCRCEnd
BB000D00 000D7E
Successful Response
HTypeCMDPLParameterCRCEnd
BB010D00 0210 20407E

The parameter is 2 bytes, and the following specific parameters are spliced bit by bit. The response parameter corresponding to the above response frame is 0x1020 = 0b0001000000100000

Refer to section 6.3.2.12.2.1 EPC Gen2 Protocol v2.0.1

In the table below, the data are reresented in binary.

DescriptionLength (bit)DataDescription
DR100 = 8
M20000 = 1
TRext111 = Use pilot tone
Sel20000 = All
Session20000 = S0
Target100 = A
Q (slot-count)401004
Padding3000

DR=8, M=1, TRext=Use pilot tone, Sel=All, Session=S0, Target=A, Q=4

0x0E Set Query parameters

Command
HTypeCMDPLParameterCRCEnd
BB000E00 0210 20407E

This command set the Query parameters to the same value as the previous get Query parameters instruction example.

Successful Response
HTypeCMDPLParameterCRCEnd
BB010E00 0100107E

Radio Frequency

Radio frequency of the Interrogator is determined by the region and the frequency channel listed below.

Frequency RegionRegion IndexFrequency Channel in MHzCH_INDEX
920++ MHz Based01(CH_Index * 0.25 + 920.125) MHz(Freq_CH -920.125) / 0.25
United States02(CH_Index * 0.5 + 902.25) MHz(Freq_CH -902.25) / 0.5
Europe03(CH_Index * 0.2 + 865.1) MHz(Freq_CH -865.1) / 0.2
840++ MHz Based04(CH_Index * 0.25 + 840.125) MHz(Freq_CH -840.125) / 0.25
Korea06(CH_Index * 0.2 + 917.1) MHz(Freq_CH -917.1) / 0.2

0x07 Set Frequency Region

To set the Frequency Region 920++ MHz Based, set the Region Index to 0x01.

Command
HTypeCMDPLRegion IndexCRCEnd
BB000700 0101097E
Successful Response
HTypeCMDPLParameterCRCEnd
BB010700 0100097E

0x08 Get Frequency Region

Command
HTypeCMDPLCRCEnd
BB000800 00087E
Successful Response
HTypeCMDPLRegion IndexCRCEnd
BB010800 0101097E

The region index is 01, so the frequency region is 920++ MHz Based.

0xAB Set Frequency Channel

If it is the 900++ MHz Based, to set the frequency channel of the reader to 920.375 MHz, set the CH_Index to: (920.375 - 920.125) / 0.25 = 01.

Command
HTypeCMDPLCH_IndexCRCEnd
BB00AB00 0101AD7E
Successful Response
HTypeCMDPLParameterCRCEnd
BB01AB00 0100AD7E

0xAA Get Frequency Channel

Command
HTypeCMDPLCRCEnd
BB00AA00 00AA7E
Successful Response
HTypeCMDPLCH_IndexCRCEnd
BB01AA00 0100AC7E

If the frequency region is 920++ MHz based, the CH_Index 0x00 means the frequency channel is: (0 * 0.25 + 920.125) MHz = 920.125 MHz.

0xAD Set automatic frequency hopping

In the automatic frequency hopping mode, if the user executes the instruction to insert the working channel, the reader will randomly select the channel frequency hopping from the channel list set by the user, otherwise, the channel frequency hopping will be randomly selected according to the internal preset channel list.

Possible parameter for the command is:

  • 0x00: Disable automatic frequency hopping
  • 0xFF: Enable automatic frequency hopping
Command
HTypeCMDPLParameterCRCEnd
BB00AD00 01FFAD7E
Successful Response
HTypeCMDPLParameterCRCEnd
BB01AD00 0100AF7E

0xA9 Insert working channel

Inserting the working channel allows the user to independently set the frequency hopping channel list. After executing this command, the reader will randomly select the channel hopping frequency from the channel list set by the user. The command is defined as follows:

Command
HTypeCMDPLCH CountCH ListCRCEnd
BB00A900 060501 02 03 04 05C37E
Successful Response
HTypeCMDPLParameterCRCEnd
BB01A900 0100AB7E

0xB7 Get transmit power

Command
HTypeCMDPLCRCEnd
BB00B700 00B77E
Response
HTypeCMDPLPowerCRCEnd
BB01B700 0207 D0917E

Power: 0x07D0 = Decimal 2000 = 20 dBm

0xB6 Set Transmit Power

Command
HTypeCMDPLPowerCRCEnd
BB00B600 0207 D08F7E

Power range: 15-26 dBm. If < 15 dBm will default to 15 dBm.

Power table
PowerValueCRC
15 dBm05 DC99
16 dBm06 40FE
17 dBm06 A462
18 dBm07 08C7
19 dBm07 6C2B
20 dBm07 D08F
21 dBm08 34F4
22 dBm08 9858
23 dBm08 FCBC
24 dBm09 6021
25 dBm09 C485
26 dBm0A 28EA
Successful Response
HTypeCMDPLParameterCRCEnd
BB01B600 0100B87E

0xB0 Set to transmit continuous wave

Parameter:

  • 0x00: Disable Continuous Wave
  • 0xFF: Enable Continuous Wave
Command
HTypeCMDPLParameterCRCEnd
BB00B000 01FFB07E
Successful Response
HTypeCMDPLParameterCRCEnd
BB01B000 0100B27E

0xF1 Get receiver demodulator parameters

Includes: Mixer gain, IF AMP gain and signal demodulation threshold.

Command
HTypeCMDPLCRCEnd
BB00F100 00F17E
Response
HTypeCMDPLMixer_GIF_GThresholdCRCEnd
BB01F100 04030601 B0B07E

Mixer gain Mixer_G: 0x03 (Mixer gain is 9dB)

IF amplifier gain IF_G: 0x06 (IF AMP gain is 36dB)

Signal demodulation threshold Thrd: 0x01B0 (the smaller the signal demodulation threshold, the lower the return RSSI of the demodulated tag, but the more unstable it is. It cannot be demodulated at all if the value is lower than a certain value; on the contrary, the larger the threshold, the demodulated tag return signal RSSI The larger the distance, the more stable. 0x01B0 is the recommended minimum)

0xF0 Set the receiver demodulator parameters

Mixer Gain IndexMixer Gain Value (dB)
0x000
0x013
0x026
0x039
0x0412
0x0515
0x0616
IF AMP Gain IndexIF AMP Gain Value (dB)
0x0012
0x0118
0x0221
0x0324
0x0427
0x0530
0x0636
0x0740
Command
HTypeCMDPLMixer Gain IndexIF AMP Gain IndexThresholdCRCEnd
BB00F000 04030601 B0AE7E
Successful Response
HTypeCMDPLParameterCRCEnd
BB01F000 01F27E

0xF2 Test the blocking signal at the RF input

Testing the blocking signal at the RF input Scan Jammer is used to detect the magnitude of the blocking signal of each channel of the reader antenna in the current area.

Command
HTypeCMDPLCRCEnd
BB00F200 00F27E
Response
HTypeCMDPLCH_LCH_HJMRCRCEnd
BB01F200 160013F2 F1 F0 EF EC EA E8 EA EC EE F0 F1 F5 F5 F5 F6 F5 F5 F5 F5EA7E

If there are a total of 20 channels in the 900MHz frequency band in China, and the scanning of the radio frequency input blocking signal Scan Jammer channel is executed correctly

Test start channel CH_L: 0x00 (Test start channel Index is 0)

Test end channel CH_H: 0x13 (Test end channel Index is 19)

Channel blocking signal JMR: 0xF2F1F0EFECEAE8EAECEEF0F1F5F5F5F6F5F5F5F5 (blocking signal for each channel
JMR is represented by a signed Byte, where 0xF2 is -14dBm).

0xF3 Test channel RSSI

Command
HTypeCMDPLCRCEnd
BB00F300 00F37E
Response
HTypeCMDPLCH_LCH_HRSSICRCEnd
BB01F300 160013BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BAA57E

If there are 20 channels in 900MHz Based Frequency, this is the returned RSSI for each channel.

Each channel RSSI is represented by a signed Byte, where 0xBA is -70 dBm.

NXP Custom Commands

0xE1 NXP ReadProtect/Reset ReadProtect Command

NXP G2X tags support ReadProtect/Reset ReadProtect commands. When the tag executes the ReadProtect command successfully, the ProtectEPC and ProtectTID bits of the tag will be set to ‘1’ and the tag will enter the data protection state. If the label returns to the normal state from the data protection state, the Reset ReadProtect command needs to be executed. Before this instruction, the Select parameter should be set to select the specified label for operation.

ParameterLengthExplanation
Access Password4 BytesAccess Password of the RFID Tag
Set / Reset1 Byte0x00: Set Read Protect<br />0x01: Reset Read Protect
Command

To set read protect to the selected tag with 0x0000FFFF access password:

HTypeCMDPLAccess PasswordSet / ResetCRCEnd
BB00E100 0500 00 FF FF00E47E
Successful Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB01E100 100E30 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70003D7E
Successful Reset Read Protect Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB01E200 100E30 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70003E7E
0x2A Tag Not Found when Setting Read Protect
HTypeCMDPLParameterCRCEnd
BB01FF00 012A2B7E

0x2A error code means the tag is not in range, or there is an error of the EPC code.

0x2B Tag not Detected when Resetting Read Protect
HTypeCMDPLParameterCRCEnd
BB01FF00 012B2C7E
0x16 Wrong Access Password Error
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70757E

0xE3 NXP Change EAS

NXP G2X tags support the Change EAS command. When the tag executes the Change EAS command successfully, the PSF bit of the tag will change to ‘1’ or ‘0’ accordingly. When the PSF position of the tag is ‘1’, the tag will respond to the EAS_Alarm instruction, otherwise the tag will not respond to the EAS_Alarm instruction. Before this instruction, the Select parameter should be set to select the specified label for operation.

Command

To set PSF bit to 1 (Tag will response to EAS_Alarm):

HTypeCMDPLAccess PasswordPSFCRCEnd
BB00E300 0500 00 FF FF01E77E
Successful Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB01E300 100E30 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70003F7E
0x1B Tag Not Found Error
HTypeCMDPLParameterCRCEnd
BB01FF00 011B1C7E
0x16 Wrong Access Password Error
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70757E

0xE4 NXP EAS_Alarm

Tags with PSF bit set to 1 will respond to this instruction by returning 64-bit EAS Alarm code.

Command
HTypeCMDPLCRCEnd
BB00E400 00E47E
Successful Response
HTypeCMDPLEAS Alarm CodeCRCEnd
BB01E400 0869 0A EC 7C D2 15 D8 F9807E
0x1D No Tag Responding
HTypeCMDPLParameterCRCEnd
BB01FF00 011D1E7E

0xE0 NXP ChangeConfig

Some series of NXP G2X tags (such as G2iM and G2iM+) support the ChangeConfig command, which can be used to read or modify the 16bits Config-Word of NXP G2X tags. The Config-Word of the NXP G2X tag is located at the address 20h (word address) of EPC Memory Bank and can be read by a normal Read command. When the tag is in the Secured state (safe state), the Config-Word of the tag can be rewritten. It should be noted that rewriting Config-Word means flipping the corresponding data bit of Config-Word, that is, writing the corresponding bit of ‘1’ flipping (‘1 ‘Becomes ‘0’, ‘0’ becomes ‘1’), the corresponding bit written in ‘0’ remains unchanged. Before this instruction, the Select parameter should be set to select the specified label for operation.

Config parameter: when 0x0000 means read.

Command
HTypeCMDPLAccess PasswordConfigCRCEnd
BB00E000 0600 00 FF FF00 00E47E
Successful Response
HTypeCMDPLPC + EPC LengthPCEPCConfigCRCEnd
BB01E000 110E30 0030 75 1F EB 70 5C 59 04 E3 D5 0D 7000 417E7E
0x1A No Tag Responding
HTypeCMDPLParameterCRCEnd
BB01FF00 011A1B7E
0x16 Wrong Access Password Error
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70757E

Impinj Monza Custom Commands

0xE5 Impinj Monza QT Command

Impinj Monza 4 QT tags support the QT command, which can modify the QT Control word of the tag. Setting the QT_SR bit can shorten the operation distance of the tag in the Open and Secured states or when it is about to enter the Open and Secured states. Modifying the QT_MEM bit can switch the label to use Public Memory Map (Public Memory Map) or Private Memory Map (Private Memory Map). Before this instruction, the Select parameter should be set to select the specified label for operation.

ParameterLengthExplanation
Access Password4 BytesAccess password of the tag
Read / Write1 Byte0x00: Read<br />0x01: Write
Persistence1 Byte0x00: Write to volatile memory<br />0x01: Write to NVM memory
Payload2 ByteQT Control: QT_SR and QT_MEM
Command

To write to NVM memory with QT_SR 0x40 and QT_MEM 0x00:

HTypeCMDPLAccess PasswordRead / WritePersistencePayloadCRCEnd
BB00E500 0800 00 FF FF010140 002D7E
0xE5 Read Successful Response
HTypeCMDPLPC + EPC LengthPCEPCQT ControlCRCEnd
BB01E500 110E30 0030 75 1F EB 70 5C 59 04 E3 D5 0D 7000 00427E
0xE6 Write Successful Response
HTypeCMDPLPC + EPC LengthPCEPCPa rameterCRCEnd
BB01E600 100E30 0030 75 1F EB 70 5C 59 04 E3 D5 0D 7000427E
0x2E Tag Not Found Error
HTypeCMDPLParameterCRCEnd
BB01FF00 012E2F7E
0x16 Wrong Access Password Error
HTypeCMDPLError CodePC + EPC LengthPCEPCCRCEnd
BB01FF00 10160E34 0030 75 1F EB 70 5C 59 04 E3 D5 0D 70757E