Indy Demo Tool - A simple GUI to interact with Indy RS500, RS1000, and RS2000 Surface-Mount Modules

The Indy Demo Tool is a graphical user interface to interact with the Indy RS500, RS1000, and RS2000 products.  This GUI will allow you to quickly connect to the surface-mount modules and start reading tags.  For help getting started with the tool and the module development kits, check out the RS500 Development Kit Quick Start Guide or RS2000 Development Kit Quick Start Guide.

Indy Demo Tool is a GUI which helps to quickly start using the Impinj RS500 and RS2000 development boards.

Please follow the Quick Start Guide for RS500/RS2000 for instructions on how to install the Indy Demo Tool and connect to the development board.

The Indy Demo Tool GUI is also documented in the Indy Demo Tool section of the ITK-C documentation.

This page contains a guide on how to use the various tabs of the Indy Demo Tool.

Indy Demo Tool Main Page :


  1. The top part of the GUI has 5 buttons: Connect, Disconnect, Reset, COM and Scan
    1. Press "Scan" to scan all the available COM ports and find the connected COM port
    2. Press "Connect" to connect to the selected COM port
    3. Press "Disconnect" to disconnect from the connected COM port
    4. Press "Reset" to reset the system
  2. The bottom part of the GUI is divided into two panes. The left pane gives the different tabs after connecting to the board and the right pane keeps the logs (Event log and Device log)

After the connection to the COM port has been made, following tabs will open :

Inventory :

This tab helps to do basic inventorying of the tags which lie in the range of the antenna connected


  1. Inventory Settings
    1. RF Mode - Enter the RF mode to be used. Table below shows the details of the available RF modes. 

      RF mode Description RF Parameters
      0 Auto (Default Mode 1) N/A
      1 Dense Reader Mode profile for FCC operation 25 us Tari, M4, 250 kHz
      2 Dense Reader Mode profile for ETSI operation 25 us Tari, M4, 300 kHz
      3 Very fast mode with reduced sensitivity and noise immunity 6.25 us Tari, FM0, 400 kHz
      4 Very sensitive mode with reduced speed and reduced noise immunity 25 us Tari, FM0, 40 kHz
    2. Stop Tag Count - Enter the number of tags after which inventorying should stop
    3. Stop Duration (ms) - Enter the time in milliseconds after which inventorying should stop
    4. Stop Round Count - Enter the number of rounds of inventorying to be done
    5. Tag Population Estimate - Enter the estimate of the population of the tags. Closer the tag population estimate to the actual number of tags, better the tag read rate.
    6. Session
      1. There are 2 states in which tags can be - A and B. Duration (persistence) of ‘B’ state depends on the session used and the tag power state. There are 4 possible values of session :
        1. In Session 0, tag persistence is infinite for energized & none de-energized 
        2. In Session 1, tag energized or de-energized, the persistence is 0.5 to 5s
        3. In Sessions 2 and 3, tag energized, persistence is infinite
        4. In Sessions 2 and 3, tag de-energized, minimum persistence is 2s
    7. Search Mode
      1. Enter 1 for Dual Target - Reader reads all ‘A’ tags then moves all ‘A’ tags to ‘B’. Reader reads all ‘B’ tags then moves all ‘B’ tags to ‘A’.
      2. Enter 2 for Single Target - Reader reads all ‘A’ tags then moves ‘A’ tags to ‘B’. Reader reads tags once. Reader only reads ‘A’ tags and allows ‘B’ tags to stay quiet.
    8. Antenna sequence - Enter the sequence of antennas through which the reader will cycle. Separate the antenna numbers by a comma(,)
    9. FastID 
      1. FastID is a feature unique to Impinj tags and hence will work only on the Impinj based Monza tags (except Monza 4E)
      2. Enable this so that the tags return TID + EPC instead of EPC only
    10. Tag Focus (session = 1 and search mode = 2) 
      1. TagFocus is a feature unique to the Impinj tags and hence will work only on the Impinj based Monza tags
      2. Enable this to capture more hard-to-read tags by suppressing those that have already been read
    11. All tag report fields - Enable this to display all tag report fields like CRC, RSSI, phase etc. 
    12. Enable channel activity packets - Enable this to display the frequency, forward power and reverse power
    13. Tag type identifier(Via TID read) - Enable this to display the tag type based on the TID of the tag
      Note - All the inventory settings mentioned above will not be applied unless "Apply Inventory Settings" is pressed.
  2.  Inventory Control
    1. Press "Start" to start inventorying tags
    2. Press "Start (Tag Operation)" to begin inventorying tags with Tag Operation enabled
    3. Press "Stop" to stop inventorying tags

Write EPC :

This tab helps to write desired EPCs to the tags

  1. Enter the EPC desired to be written to the tag in the place provided
  2. Press "Random" if random EPC is desired to be written to the tag
  3. Press "Write" to actually write the EPC to the tag
  4. Enable "Increment EPC" if it is desired to automatically increase EPC by 1 after an EPC write occurs (Useful for sequential EPC writes)

Access :

This tab enables to perform operations like read, write, kill, lock, block permalock, QT

  1. Access password 
    1. Access password is words 2-3 of the reserved memory bank
    2. If access password is non-zero, reader must issue password to move tag into secured state. If unused, all the bits are zero
    3. Enter access password (hex) to access the tag in the secured state 
  2. Read
    1. Select memory bank from reserved/user/TID/EPC
    2. Enter Word Pointer to point to the desired location of the memory bank chosen
    3. Enter Word Count to specify the number of words to be read
    4. Press "Read" to read data
  3. Write
    1. Select memory bank from reserved/user/TID/EPC
    2. Enter Word Pointer to point to the desired location of the memory bank chosen
    3. Enter Word Count to specify the number of words to be written
    4. Enter data to be written in hex. Separate every word by a comma(,)
    5. Press "Write" to write data
  4. Kill 
    1. Kill password is words 0-1 of the reserved memory bank
    2. If kill password is non-zero, reader must issue kill password to kill the tag permanently
    3. Enter kill password(hex) and press "Kill" to kill the tag permanently
  5. Lock 
    1. Lock is used to lock kill and/or access passwords, lock the EPC and TID memory banks and make the lock status for the passwords, EPC memory, TID memory permanent
    2. Enter the required payload (hex) and press "Lock" to enable lock 
  6. Block Permalock - Monza 4QT and Monza X tags allow BlockPermalock where user memory is divided into number of blocks and each block can be permalocked independently
    1. Select Action to specify the required action (Read/BlockPermalock)
    2. Select Membank from reserved/user/TID/EPC (For BlockPermalock, user memory needs to be selected)
    3. Enter pointer which specifies the starting address for mask, in units of 16 blocks. For example, BlockPtr=00h indicates block 0, BlockPtr=01h indicates block 16, BlockPtr=02h indicates block 32
    4. Enter Range which specifies the range of mask, starting at BlockPtr and ending ((16×Range)–1) blocks later
    5. Enter Mask where mask bit = 0 indicates retention of the current permalock setting and mask bit = 1 indicates permalocking the corresponding memory block
    6. Press "BlockPermalock" to permalock selected memory block
      Note : Make sure that you are in the private profile mode for Block Permalock to work
  7. QT - Through QT technology, a tag owner/user can maintain two data profiles (one public, one private), allowing confidentiality of business-sensitive data while assuring consumers of privacy
    1. Select Action - The Read/Write field indicates whether the tag reads or writes QT control data. Read means read the QT control bits in cache. Write means write the QT control bits
    2. Select Persistence required - If Read/Write = 1, the persistence field indicates whether the QT control is written to nonvolatile (NVM) or volatile memory. Temporary means write to volatile memory and Permanent means write to NVM memory
    3. Select Range - The Short-Range feature adds a layer of physical security by preventing readers farther than roughly one meter from the tag from switching the tag from Public to Private (or vice versa). Short means tag reduces range if in or about to be in open or secured state and normal means tag does not reduce range
    4. Select Memory Map - Enable public/private profile
    5. Select Tag Operation from none/read/write
      To enable public profile : Make the following selections and press "QT". Check that user memory cannot be read in public profile.

      To enable private profile : Make the following selections and press "QT". Check that user memory can be read in private profile.

      Note : When you press "QT" , QT data will be displayed. QT Data is always 0001 when Action is Write indicating a successful Write. In case the action is read, QT Data displayed is the payload and depends on the Range and Memory Map selected while reading.
      Note : In order to get rid of the error "INPUT ERROR: Write Count (1) does not match Write Data Length(0)", make Word Count in the "Write" section as 1. This is because we are trying to write a QT command.

Tx Control :

This tab enables to change the basic RF related parameters

  1. Region and RF Mode 
    1. Region allows to select the region where the device is being used because the RF standards in different countries vary
    2. RF mode allows to select one of the RF modes which can be used
  2. CW
    1. An Interrogator receives information from a Tag by transmitting a continuous-wave (CW) RF signal to the tag and the tag responds by modulating the reflection coefficient of its antenna, thereby backscattering an information signal to the Interrogator
    2. CW is mainly used for test purposes
    3. Press "ON" and "OFF" to turn CW on and off respectively
  3. PRBS
    1. PRBS is mainly used for testing purposes
    2. Press "ON" and "OFF" to turn PRBS on and off respectively
  4. Set Power
    1. Set the reader antenna power in cdBm (1dBm = 100cdBm)
  5. Set Frequency
    1. Set the frequency of operation in kHz
    2. Press "Disable Frequency", "Continuous" or "Hopping" to make required changes to the frequency
  6. RF Switch
    1. Select which antenna/SAW filter to be connected

Set/Get : 

This tab enables to set/get keys and all the general information regarding the device, keys, errors and temperature.

  1. Set/Get/GetKey Info
    1. Select the desired key, fill in the other parameters (BankIndex/ValueIndex/Value) and press "Set" or "Get" to set or get the key value
    2. "Value" is only valid for "Set", where the key needs to be set to a particular value
    3. Press "Get Key Info" to get all the information of the selected key
  2. Press "Retrieve Device Info" to collect all the device-specific data like bootstrap version, application image version, Product ID, serial number, lot date code etc.
  3. Press "Retrieve All Keys" to get snapshot of all the keys
  4. Error information
    1. Press "Get Error Info" to get the information of the errors (if any)
    2. Press "Clear Error" to clear the errors (if any)
  5. Press "Get Temperature" to get the external temperature, internal temperature and PA temperature.

Image Loader :

This tab is used to load firmware image/stored settings to the device

  1. To load firmware image : 
    1. Click "Open"
    2. Select the BIN file from where it is saved
    3. Press "Load Image" to load the firmware image
  2. To create and load stored settings : 
    1. To create stored settings use these options :
      1. Press "Save Stored Settings to XML" to save the current XML of stored settings and open the XML with a text editor like Notepad to edit the stored settings XML OR press "Create Example Stored Setting XML File" to create a reference stored settings XML.
      2. Press "Make Settings Image (BIN) from XML" to convert XML file to BIN file
    2. To load stored settings 
      1. Click "Open"
      2. Select the BIN file from where it is saved
      3. Press "Load Image" to load the stored settings

Note : Press "Factory Reset" to erase all user configured stored settings

IO : 

This tab enables to use the IOs, Health/Status LEDs, DAC and ADC

  1. User GPIO 
    1. Disable or enable (as input or output) the different GPIOs. 
    2. If enabled, they can be made either high or low
  2. Health/Status State 
    1. Enable/Disable the Health/Status pins and see the corresponding changes in the Health/Status LEDs.
  3. User DAC 
    1. Enter the value (Resolution of DAC is 12 bits so value can be set between 0 and 4095) and press "Set" to set the value
  4. User ADC 
    1. Press "Read" to read the value in the ADC (Resolution of ADC is 12 bits so value read will be between 0 and 4095)

Test Command :

This tab is more for Impinj Engineering use but in some cases can be useful for customer applications if the application required is available as a test command but not yet implemented as a feature. Details of the use of this tab will be provided by Impinj based on the application.


Was this article helpful?
3 out of 3 found this helpful



Article is closed for comments.