Alien Technology ALR9800 RFID Reader User Manual Guide Reader Interface
Alien Technology Corporation RFID Reader Guide Reader Interface
Contents
- 1. Manual 1
- 2. Manual 2
- 3. Manual 3
Manual 3

ALR-9800
ALR-9780
ALR-8780
ALR-9770
ALR-9640
ALIEN TECHNOLOGY® 
READER 
INTERFACE 
GUIDE 
All Fixed Readers 
July 12, 2005 

Legal Notices 
Copyright © 2005 Alien Technology Corporation. All rights reserved. 
Alien Technology Corporation has intellectual property rights relating to 
technology embodied in the products described in this document, including 
without limitation certain patents or patent pending applications in the U.S. or 
other countries. 
This document and the products to which it pertains are distributed under 
licenses restricting their use, copying, distribution and decompilation. No part of 
this product documentation may be reproduced in any form or by any means 
without the prior written consent of Alien Technology Corporation and its 
licensors, if any. Third party software is copyrighted and licensed from Licensors. 
Alien, Alien Technology, the Alien logo, Nanoblock, Fluidic Self Assembly, FSA, 
Gen2Ready, Squiggle, Nanoscanner and other graphics, logos, and service 
names used in this document are trademarks of Alien Technology Corporation in 
the U.S. and other countries. All other trademarks are the property of their 
respective owners. U.S. Government approval required when exporting the 
product described in this documentation. 
Federal Acquisitions: Commercial Software -- Government Users Subject to 
Standard License Terms and Conditions. U.S. Government: If this Software is 
being acquired by or on behalf of the U.S. Government or by a U.S. Government 
prime contractor or subcontractor (at any tier), then the Government's rights in 
the Software and accompanying documentation shall be only as set forth in this 
license; this is in accordance with 48 C.F.R. 227.7201 through 227.7202-4 (for 
Department of Defense (DoD) acquisitions) and with 48 C.F.R. 2.101 and 12.212 
(for non-DoD acquisitions). 
DOCUMENTATION IS PROVIDED “AS IS” AND ALL EXPRESS OR IMPLIED 
CONDITIONS, REPRESENTATIONS AND WARANTEES, INCLUDING ANY 
IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A 
PARTICULAR PURPOSE OR NON-INFRINGMENT ARE HEREBY 
DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE 
HELD TO BE LEGALLY INVALID. 

  TABLE OF CONTENTS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
i
Alien Technology® 
Reader Interface Guide 
All Fixed Readers 
July 12, 2005 
Table of Contents 
CHAPTER 1 INTRODUCTION AND READER SETUP............................................................................... 1 
Audience ....................................................................................................................................................... 1 
Type Conventions ......................................................................................................................................... 1 
Requirements................................................................................................................................................ 2 
Communicating with the Reader................................................................................................................... 3 
Serial Communication ................................................................................................................................... 3 
Serial Configuration ................................................................................................................................ 3 
Network Communication ............................................................................................................................... 6 
Determine the Reader's Network Settings ............................................................................................. 6 
ALR-9800 and ALR-9770................................................................................................................. 6 
All Other Readers............................................................................................................................. 6 
Connecting via TCP/IP ........................................................................................................................... 6 
TCP/IP Configuration.............................................................................................................................. 7 
CHAPTER 2 READER FUNDAMENTALS ..................................................................................................9 
Introduction ................................................................................................................................................... 9 
Reader Discovery and the Reader Heartbeat............................................................................................... 9 
DHCP and Automatic Discovery............................................................................................................. 9 
Serial Interrogation ............................................................................................................................... 10 
Network Heartbeats.............................................................................................................................. 10 
Heartbeat XML Tags ...................................................................................................................... 11 
Heartbeats and Software ............................................................................................................... 11 
TagList Concepts ........................................................................................................................................ 11 
PersistTime........................................................................................................................................... 12 
Tag Details............................................................................................................................................ 12 
TagList Size .......................................................................................................................................... 12 
Reading Tags over the Network ................................................................................................................. 12 
Interactive Mode.......................................................................................................................................... 13 
Autonomous Mode ...................................................................................................................................... 13 
A Note about AutoMode on the ALR-9770 ....................................................................................14 
Defining the Autonomous Read Operation........................................................................................... 14 
Enter Autonomous Mode  (Not shown on the state diagram.)....................................................... 15 
Waiting State.................................................................................................................................. 15 
Start Working Trigger ..................................................................................................................... 15 
Working State................................................................................................................................. 15 
Stop Working Trigger/Timer ........................................................................................................... 16 
Evaluation ...................................................................................................................................... 16 
True/False Pause........................................................................................................................... 16 
Notification ..................................................................................................................................... 16 
Autonomous Mode Examples............................................................................................................... 16 
Example 1 - Background Reading .................................................................................................16 
Example 2 - Triggered Reading ..................................................................................................... 17 
Example 3 - Triggered Reading with Notification........................................................................... 17 
Notification Mode ........................................................................................................................................ 17 

TABLE OF CONTENTS   
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
ii 
NotifyTime............................................................................................................................................. 17 
NotifyTrigger ......................................................................................................................................... 18 
NotifyAddress ....................................................................................................................................... 18 
NotifyFormat ......................................................................................................................................... 18 
Listening for Tags over the Network ........................................................................................................... 20 
CHAPTER 3 TAG FUNDAMENTALS ........................................................................................................ 21 
Introduction ................................................................................................................................................. 21 
Alien RFID Tags.......................................................................................................................................... 21 
Alien NanoBlock Tags .......................................................................................................................... 21 
Battery Assisted Passive (BAP) Tags .................................................................................................. 21 
Acquisition Modes ....................................................................................................................................... 22 
Global Scroll ......................................................................................................................................... 22 
Inventory ............................................................................................................................................... 22 
Acquire Parameters.............................................................................................................................. 23 
Masks and Tag Memory Structure.............................................................................................................. 23 
Class I Tag Memory ............................................................................................................................. 24 
Addressing a Subset of Tags ............................................................................................................... 24 
Persistent Sleep and Wake......................................................................................................................... 25 
Sleep, Wake, and Masks...................................................................................................................... 25 
CHAPTER 4 ALIEN READER PROTOCOL ..............................................................................................26 
Reader Operation Overview........................................................................................................................ 26 
Overview of Commands.............................................................................................................................. 27 
Interactive Mode............................................................................................................................. 27 
Autonomous Mode ......................................................................................................................... 27 
Command Format................................................................................................................................. 27 
Suppressing Command Prompts.......................................................................................................... 28 
Interactive Command Format ........................................................................................................ 28 
Non-Interactive Command Format................................................................................................. 28 
Get and Set Shortcuts .......................................................................................................................... 28 
XML Messages ..................................................................................................................................... 28 
Command List ............................................................................................................................................. 29 
General Commands ....................................................................................................................... 29 
Network Configuration Commands ................................................................................................ 30 
Time Commands............................................................................................................................ 30 
External IO Commands.................................................................................................................. 31 
TagList Commands ........................................................................................................................ 31 
Acquisition Commands .................................................................................................................. 32 
Autonomous Mode Commands ..................................................................................................... 33 
Notify Mode Commands................................................................................................................. 34 
General Commands .................................................................................................................................... 34 
Help (h) ................................................................................................................................................. 34 
Info (i).................................................................................................................................................... 35 
!............................................................................................................................................................. 35 
Save...................................................................................................................................................... 35 
Q (Quit) ................................................................................................................................................. 35 
Function ................................................................................................................................................ 35 
ReaderName ........................................................................................................................................ 36 
ReaderType .......................................................................................................................................... 36 
ReaderVersion...................................................................................................................................... 36 
ReaderNumber ..................................................................................................................................... 37 
Uptime .................................................................................................................................................. 37 
Username ............................................................................................................................................. 37 
Password .............................................................................................................................................. 37 
MaxAntenna.......................................................................................................................................... 38 

  TABLE OF CONTENTS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
iii
AntennaSequence ................................................................................................................................ 38 
RFAttenuation....................................................................................................................................... 39 
FactorySettings..................................................................................................................................... 40 
Reboot .................................................................................................................................................. 40 
Network Configuration Commands ............................................................................................................. 41 
MACAddress......................................................................................................................................... 41 
DHCP.................................................................................................................................................... 41 
IPAddress ............................................................................................................................................. 41 
Gateway................................................................................................................................................ 42 
Netmask................................................................................................................................................ 42 
DNS ...................................................................................................................................................... 43 
NetworkTimeout.................................................................................................................................... 43 
CommandPort....................................................................................................................................... 44 
HeartbeatPort ....................................................................................................................................... 44 
HeartbeatTime...................................................................................................................................... 45 
HeartbeatAddress................................................................................................................................. 45 
HeartbeatCount .................................................................................................................................... 46 
Time Commands......................................................................................................................................... 46 
TimeServer ........................................................................................................................................... 46 
TimeZone.............................................................................................................................................. 47 
Time...................................................................................................................................................... 48 
External I/O Commands.............................................................................................................................. 48 
ExternalInput......................................................................................................................................... 48 
ExternalOutput...................................................................................................................................... 49 
InitExternalOutput................................................................................................................................. 49 
InvertExternalInput ............................................................................................................................... 50 
InvertExternalOutput............................................................................................................................. 50 
TagList Commands ..................................................................................................................................... 51 
Get TagList (t)....................................................................................................................................... 51 
PersistTime........................................................................................................................................... 52 
TagListFormat....................................................................................................................................... 52 
TagListCustomFormat .......................................................................................................................... 54 
TagListAntennaCombine ...................................................................................................................... 55 
Clear TagList ........................................................................................................................................ 56 
Acquisition Commands ............................................................................................................................... 56 
AcquireMode......................................................................................................................................... 56 
Inventory ........................................................................................................................................ 57 
Global Scroll................................................................................................................................... 57 
TagType................................................................................................................................................ 57 
AcqCycles............................................................................................................................................. 58 
AcqC1Cycles ........................................................................................................................................ 59 
AcqEnterWakeCount ............................................................................................................................ 59 
AcqC1EnterWakeCount ....................................................................................................................... 59 
AcqCount .............................................................................................................................................. 60 
AcqC1Count ......................................................................................................................................... 60 
AcqSleepCount..................................................................................................................................... 60 
AcqC1SleepCount ................................................................................................................................ 61 
AcqExitWakeCount............................................................................................................................... 61 
AcqC1ExitWakeCount .......................................................................................................................... 61 
AcqG2Cycles ........................................................................................................................................ 61 
AcqG2Count ......................................................................................................................................... 62 
AcqG2Q ................................................................................................................................................ 62 
AcqC0Cycles ........................................................................................................................................ 63 
AcqC0Count ......................................................................................................................................... 63 
Wake..................................................................................................................................................... 64 
Sleep..................................................................................................................................................... 64 

TABLE OF CONTENTS   
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
iv
Mask ..................................................................................................................................................... 64 
Autonomous Mode Commands .................................................................................................................. 65 
AutoMode ............................................................................................................................................. 65 
AutoWaitOutput .................................................................................................................................... 66 
AutoStartTrigger ................................................................................................................................... 66 
AutoStartPause..................................................................................................................................... 66 
AutoWorkOutput ................................................................................................................................... 67 
AutoAction ............................................................................................................................................ 67 
AutoStopTrigger.................................................................................................................................... 68 
AutoStopTimer...................................................................................................................................... 68 
AutoStopTimer and the ALR-9770................................................................................................. 69 
AutoTrueOutput .................................................................................................................................... 70 
AutoTruePause..................................................................................................................................... 71 
AutoFalseOutput................................................................................................................................... 71 
AutoFalsePause ................................................................................................................................... 71 
AutoModeStatus ................................................................................................................................... 72 
AutoModeReset.................................................................................................................................... 72 
AutoModeTriggerNow........................................................................................................................... 72 
Notify Mode Commands.............................................................................................................................. 73 
NotifyMode............................................................................................................................................ 73 
NotifyAddress ....................................................................................................................................... 73 
NotifyTime............................................................................................................................................. 74 
NotifyTrigger ......................................................................................................................................... 74 
NotifyFormat ......................................................................................................................................... 75 
NotifyHeader......................................................................................................................................... 76 
NotifyKeepAliveTime ............................................................................................................................ 76 
MailServer............................................................................................................................................. 77 
MailFrom............................................................................................................................................... 77 
NotifyRetryCount .................................................................................................................................. 77 
NotifyRetryPause.................................................................................................................................. 78 
NotifyNow ............................................................................................................................................. 78 
CHAPTER 5 TAG PROGRAMMING.......................................................................................................... 79 
Enabling The Programmer .......................................................................................................................... 79 
Tag Memory Structure ................................................................................................................................ 79 
Class I Tags (96-bit) ............................................................................................................................. 80 
Class I Tags (128-bit) ........................................................................................................................... 80 
Class BPT Tags.................................................................................................................................... 81 
Programming Distance & Power Levels ..................................................................................................... 81 
Programming Power............................................................................................................................. 81 
Programming Range ............................................................................................................................ 82 
Programming Problems........................................................................................................................ 82 
Programming Slept Tags...................................................................................................................... 82 
Programming Commands Summary........................................................................................................... 83 
Program and Erase Functions .................................................................................................................... 83 
Program Tag......................................................................................................................................... 83 
Class I Tags ................................................................................................................................... 84 
Class BPT Tags ............................................................................................................................. 84 
Erase Tag ............................................................................................................................................. 84 
ProgAntenna......................................................................................................................................... 85 
ProgReadAttempts ............................................................................................................................... 85 
ProgEraseAttempts .............................................................................................................................. 85 
ProgAttempts ........................................................................................................................................ 86 
Lock and Kill Functions (Class I Only) ........................................................................................................ 86 
Lock Tag ............................................................................................................................................... 86 
Kill Tag.................................................................................................................................................. 87 

  TABLE OF CONTENTS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
v
Acquire vs. Verify ........................................................................................................................................ 88 
Verify Tag ............................................................................................................................................. 88 
Programming Tags in AutoMode ................................................................................................................ 89 
ProgramID ............................................................................................................................................ 89 
ProgramPassCode ............................................................................................................................... 90 
ProgIncrementOnFail ........................................................................................................................... 90 
Autonomous Mode Program................................................................................................................. 91 
Autonomous Mode Program and Lock................................................................................................. 91 
Autonomous Mode Erase ..................................................................................................................... 91 
Autonomous Mode Kill.......................................................................................................................... 92 
APPENDIX A DTDS FOR XML DATA STRUCTURES ............................................................................. 93 
Heartbeat DTD ............................................................................................................................................ 93 
TagList DTD ................................................................................................................................................ 93 
Notification DTD .......................................................................................................................................... 93 
APPENDIX B UPGRADING READER FIRMWARE .................................................................................. 94 
ALR-9780, ALR-8780, ALR-9640 ............................................................................................................... 94 
ALR-9800 .................................................................................................................................................... 94 
ALR-9770 .................................................................................................................................................... 94 

CHAPTER 1  INTRODUCTION 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
1
CHAPTER 1 
Introduction and Reader Setup 
This Reader Interface Guide provides instructions for installing and operating the 
following Alien Technology® RFID readers: 
  ALR-9800 (Multi-Protocol) 
  ALR-9780 (US 4-port) 
  ALR-8780 (EU 4-port) 
  ALR-9770 (Dual-Protocol) 
  ALR-9640 (Smart Antenna) 
This guide also details the protocol used between a host and these readers for 
system configuration and the acquisition of data by application software. 
This document is designed for use by RFID system integrators and software 
developers - those who wish to develop software products and extended systems 
that take full advantage of the RFID Reader's capabilities. 
For an overview of RFID technology and a glossary of terms, please refer to the 
RFID Primer included with your RFID Reader kit. 
Audience 
For the purposes of this document, we assume the readers of the Reader 
Interface Guide: 
  are competent PC users 
  may be IT specialists, network specialists or programmers 
  have minimal previous knowledge of RFID technology 
  are experienced in software development and/or hardware systems 
integration 
Additionally, it is assumed that: 
  Users installing the reader via direct serial communication are skilled in 
the application of RS-232 serial protocol. 
  Users installing the reader for network communication are skilled in basic 
network configuration. 
  Programmers are competent in at least one programming or scripting 
language and have the ability to issue ASCII-based commands with that 
language. 
Type Conventions 
  Regular text appears in a plain, sans-serif font. 

INTRODUCTION  CHAPTER 1 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
2
  External files and documents are referenced in italic text. 
  Specific characters and commands to be typed are shown within 
quotation marks, and/or in fixed-width font. Example: At the prompt 
type “set DHCP=ON”. 
  Values to be provided and typed in by the user are shown within 
brackets in upper and lowercase. Example: At the prompt type “set 
IPaddress=[IP address value]” or “set 
IPaddress=xxx.xxx.xxx.xxx”. The actual command typed in 
would appear as: “set IPaddress=10.1.60.5”. 
  Blocks of sample code or commands appear: 
indented, in a fixed-width serif font. 
  Keys to be pressed are shown in brackets and all caps. Example: Press 
the [ENTER] key. 
  Upon entering any command instruction, you must press [ENTER] to 
send the command. 
  RFID Reader commands are not case sensitive. Although, for clarity, the 
commands may be shown in upper and lower case in this document, you 
may type them in all lowercase characters, if you prefer. 
  A space is required between the command (verb) such as “get” or “set” 
and the specific parameters, as in the example “get IPaddress.” 
However, no space is required between the parameter elements such as 
“IP” and “address.” 
Requirements 
In order to fully interface with the RFID Reader you will need the following: 
  a PC running Windows 98 or higher, with CD-ROM drive and an 
available RS-232 serial port 
  standard 120 VAC power 
  host software (Alien demo software or your own custom software) 
  RFID Tags (AIDC Class I compliant) 
Serial communication requires: 
  a text-based serial communications program (such as HyperTerminal) 
running on any computer 
Ethernet communication requires: 
  an Ethernet network  
  a Telnet communication program 

CHAPTER 1  INTRODUCTION 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
3
Communicating with the Reader 
This section of the Reader Interface Guide describes how to connect the reader 
on a host computer, as well as how to issue commands and interact with the 
reader using two different communication methods: serial (RS-232) and Telnet 
(TCP/IP). 
Whether using direct serial communication with the reader or using one of the 
network communication options, you may still need serial communications for 
initial reader setup. 
The CD provided with an RFID Reader Developer’s Kit also includes extensive 
examples of code developed by Alien for the RFID Reader that use the Java, 
Visual Basic, and .NET programming languages. These examples serve as 
models for developing new software for the reader. 
Serial Communication  
This method is helpful for installing a new RFID Reader. Serial communication 
requires no pre-configuration and can be performed easily with most computers. 
This method enables real-time operation of the reader via a serial 
communications (COM) port. Serial communication is the simplest means by 
which to interface with the reader and implement the Alien Reader Protocol. 
The reader is configured to use DHCP to acquire its network settings, and while 
this method of network configuration is simple and convenient, the problem exists 
that in order to communicate with the reader, you have to know its IP address. 
Alien readers have a heartbeat mechanism to assist in discovery of readers on 
the network, but this mechanism requires a host application (such as the 
Gateway demonstration software) to intercept the heartbeat messages and 
report them back to you. In these circumstances, the serial interface can be used 
to determine the reader's network address. 
The serial port of the ALR-9770 and ALR-9800 readers serve as a console 
display to the reader only. Communication using the Alien Reader Protocol is 
provided only through the TCP/IP interface. The serial port is still useful in 
determining the network settings of the reader, when other options are not 
available. A serial command interface for these readers may be provided as a 
future upgrade. 
Serial Configuration 
Whether you will ultimately be operating the reader directly via serial 
communications or via a network connection, you will need to install the reader 
initially using the serial port instructions. 
NOTE: Example screens shown in this section are from HyperTerminal. 
1.  Ensure the reader is properly connected to power and at least one antenna. 
See the Hardware Setup Guide for more information. 
2.  Connect one end of the serial cable to the reader’s RS-232 port and the 
other end to either COM1 or COM2 port on the host computer. 
3.  Launch the desired serial communications program (such as HyperTerminal 
which is supplied with Microsoft Windows). 

INTRODUCTION  CHAPTER 1 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
4
4.  Enter (or verify) the following settings to configure the serial communications 
program: 
Baud Rate  : 115200 
Data Bits  : 8 
Parity   : None 
Stop Bits  : 1 
Flow Control  : None 
Once configured, the software should allow you to communicate with the 
RFID Reader. HyperTerminal example configuration screens are shown 
below: 
5.  Power up the reader, and observe the information reported over the serial 
port. Perhaps the most important bits of information are the network settings, 
since you need to know this in order to communicate with the reader using 
TCP/IP. 
The ALR-9800 displays a block of text similar to the following, toward the end 
of the bootup sequence: 
============================================= 
--------------------------------------------- 
Network Settings: 
    MAC Address : 00:80:66:10:2D:12 
    DHCP        : 1 
    IP Address  : 10.9.8.10 
    Netmask     : 255.255.255.0 
    Gateway     : 10.9.8.2 
    DNS         : 10.9.8.1 
    TimeServer  : time-a.timefreq.bldrdoc.gov 
    TimeZone    : -7 
--------------------------------------------- 
============================================= 
Similarly, the ALR-9770 displays a block of text similar to the following when 
it boots up: 

CHAPTER 1  INTRODUCTION 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
5
ixp1      Link encap:Ethernet  HWaddr 00:0A:55:00:01:10 
          inet addr:10.9.8.10  Bcast:10.255.255.255  Mask:255.255.255.0 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
          RX packets:602 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:256 
For all other readers, the bootup trace displays text such as the following: 
Boot> Booting Alien RFID Reader 
Boot> Boot Level 1 (Console Communication) : Success 
Boot> Boot Level 2 (Reader Communication) : Success 
Boot> Boot Level 3 (Command Set) : Success 
Boot> Boot Level 4 (Tag Manager) : Memory for 1000 Tags 
Boot> Boot Level 5 (Initializing Network Interface) : ... 
Boot> Boot Level 6 (Network) : Success - IP Address is 10.9.8.10 
Boot> Boot Level 7 (Telnet Interface) : Success - Port 23 Ready 
Both traces indicate that the reader can be contacted over TCP/IP at the 
address 10.9.8.10, on port 23. 
6.  If your reader supports the Alien Reader Protocol over serial the serial 
interface, you will see the "Alien >" command prompt. At the command 
prompt, you may now type any command followed by the [ENTER] key to 
submit the command. 
  The following basic commands are helpful in verifying the reader-host 
interface: 
•  "Help" (or “h”) – provides a list of all commands available  
•  "Info" (or “i”) – provides a list of current settings for the reader 
•  "get TagList" (or "t") – scans field immediately for tags and reports the 
results 
  NOTE: RFID Reader commands are case insensitive and may be typed in all 
lowercase characters, if preferred. 

INTRODUCTION  CHAPTER 1 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
6
  For a detailed explanation of all commands available, please refer to the 
chapter titled Alien Reader Protocol. 
Network Communication 
TCP/IP communication requires a network connection via the reader’s Ethernet 
port and allows the reader to operate like a Telnet server. 
This mode offers the same form of command line interaction with the RFID 
Reader as the serial interface, but requires the RFID Reader to be configured for 
and running on a network in order to use it. 
By default, all RFID Readers are pre-configured to use DHCP when presented 
with an Ethernet connection. However, you must first establish a direct serial 
connection in order to learn the reader’s IP Address, or be able to detect 
"heartbeat" messages sent out over the network by the reader. 
Determine the Reader's Network Settings 
Once your readers are set up and configured, you should either keep a record of 
their addresses, or use some other mechanism for finding them, such as the 
reader's Heartbeat messages (described later). Following are instructions for 
querying the reader for this information. 
ALR-9800 AND ALR-9770 
All of the relevant network settings for the ALR-9800 and ALR-9770 readers are 
displayed in the bootup sequence (see previous topic on Serial Communication), 
notably, the IP Address and Subnet Mask. 
ALL OTHER READERS 
There are five network commands that are used for querying the reader for its 
network configuration. 
  get DHCP 
  get IPAddress 
  get Netmask 
  get Gateway 
  get DNS 
Once you have the IPAddress and Netmask of the reader, you can connect to it 
using TCP/IP. 
Connecting via TCP/IP 
The reader's TCP/IP interface mimics a basic telnet interface, so you can use 
any telnet client to connect to the reader. Windows users can use the telnet 
command at the command prompt or "Start -> Run" window: 
telnet <ipaddress> <command port> 
For instance, in the earlier example, the command would be: 
telnet 10.9.8.10 23 

CHAPTER 1  INTRODUCTION 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
7
To do this programmatically, simply open a TCP socket to the reader on its 
command port (default is 23) and begin reading. Refer to chapter 4, Alien Reader 
Protocol, for details on how to properly terminate command strings, detect the 
end of a reader's response, and disable the "Alien >" prompt text from the 
returned data. Default settings are: 
Username = alien  
Password = password 
You are now ready to interact with the reader. For telnet operation, you use the 
same text-based commands as in direct serial communication. The only 
difference is in the use of the “q” command to quit the telnet session and 
disconnect the session. The reader automatically disconnects an idle TCP/IP 
connection, if there has been no activity longer than the NetworkTimeout setting.   
Reader commands and instructions on their use are provided later in the chapter 
titled, Alien Reader Protocol. 
TCP/IP Configuration 
To configure the system for network operation, you will use the commands 
shown under the "NETWORK" heading of the reader's "Help" display. 
There are five network commands that are used for network configuration: 
  get|set DHCP 
  get|set IPAddress 
  get|set Netmask 
  get|set Gateway 
  get|set DNS 
1.  To view the command list, type “h” or “help”.  
If DHCP is supported at your site: 
2. Type “set DHCP=ON”. DHCP automatically configures the rest of the 
network parameters the next time the reader boots. 
3.  Skip to step 7. 
If DHCP is not supported at your site: 
4. Type “set DHCP=OFF”. The reader returns the message “DHCP = OFF”. 
5.  Contact your system administrator for the following parameter values: 
IPAddress 
Netmask (also known as Subnet Mask) 
Gateway (optional) 
DNS (optional) 
6.  Type each of the 4 commands below with the assigned values: 

INTRODUCTION  CHAPTER 1 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
8
  set IPaddress = xxx.xxx.xxx.xxx 
  set Netmask = xxx.xxx.xxx.xxx 
  set Gateway = xxx.xxx.xxx.xxx (optional) 
  set DNS = xxx.xxx.xxx.xxx (optional) 
As each value is accepted, the reader replies with the accepted value. 
7. Type “Reboot” to reboot the reader and apply the new network settings. 
The network settings can be immediately applied in the ALR-9800 by using 
the "NetworkReset" command. This causes the network interfaces to be shut 
down and restarted with the new settings. Note that both the "Reboot" and 
"NetworkReset" commands will drop any active TCP/IP connections. 

CHAPTER 2  READER FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
9
CHAPTER 2 
Reader Fundamentals 
This chapter provides an overview of the major features found in an Alien RFID 
Reader. Specific instructions for setting up a reader are provided in the previous 
chapter. Reader commands and their uses are covered in the next chapter. 
Introduction 
The most basic function of the RFID Reader is to read RFID tags and to give a 
user or application access to a list of these tags. The RFID Reader is designed to 
perform this function either connected to a host via serial cable, or on a network.  
To assist in the administration of networked operation, the reader has two 
important features designed to simplify network management: 
  Reader "heartbeats" allow network applications to easily discover 
readers on a network. 
  Autonomous Mode allows unattended readers to look for tags and send 
notification messages to listening services on the network when certain 
conditions arise.  
These important concepts, along with the basics of communicating with the 
reader, are discussed in this chapter. 
Reader Discovery and the Reader Heartbeat 
One of the problems common to many network appliances is simply discovering 
the address of the device on the network. To operate these devices over the 
network, users must know the device’s IP address.  
If an IP address is hard-coded into the device, this problem is solved, and often a 
label on the device can be used to indicate the IP address.  
However, many systems do not use hard-coded IP addresses, requiring the 
network to assign an address each time the device is booted. This is called 
DHCP, which stands for Dynamic Host Configuration Protocol.  
DHCP and Automatic Discovery 
The DHCP mode of configuration eliminates the need for the user to perform 
network configuration for the device. The device simply is plugged into the 
network socket, booted, and immediately becomes a citizen of the network, 
acquiring its network settings directly from the DHCP server..  
However, the user still needs to learn the IP address of the device. All that is 
known at this point is that the device does have an IP address and has booted 
itself on the network. The actual IP address the device is using is still not known.  

READER FUNDAMENTALS  CHAPTER 2 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
10
Serial Interrogation 
One of the simplest methods to find out the reader’s IP address is to connect via 
the RS-232 port and type the command get IPaddress. The reader 
responds with the IP address currently in use. 
However, this requires a physical connection between a host computer and the 
reader—a connection that in many cases is simply not practical to set up. 
Additionally, as noted previously, the ALR-9800 and ALR-9770 readers do not 
provide a serial command interface at this time. 
Network Heartbeats 
Another way to find out a reader’s IP address is to listen for its heartbeat 
messages over the network.  
After a reader has booted successfully onto a network it periodically broadcasts a 
heartbeat message over the network. This heartbeat can be intercepted by 
network applications, and provides enough information about the reader to locate 
it on the network and begin communication with it. 
In network parlance, the heartbeat message is sent via UDP (Universal 
Datagram Protocol) packets to all network addresses on the reader’s subnet.  
There are three relevant configuration options available via the reader’s 
command line to affect this heartbeat: 
  set | get HeartbeatTime: This command specifies the time interval 
separating successive heartbeat messages sent out over the network. 
The time is specified in seconds, with a value of zero turning off the 
heartbeats. The default value is 30 seconds, i.e. send out a heartbeat 
message every 30 seconds. 
  set | get HeartbeatPort. This command specifies the port number that 
the UDP heartbeat messages are addressed to. This is the port number 
that must be listened to by interested parties on the network. The default 
value for this setting is 3988, i.e. send out a heartbeat message to UDP 
port 3988 of every machine on the subnet. 
  set | get HeartbeatAddress. This command specifies a particular IP 
Address that the UDP heartbeat messages are addressed to. The default 
value is 255.255.255.255, which is a special "multicast" addressed which 
allows any machine on the subnet to receive the heartbeats. Any other 
HeartbeatAddress results in the heartbeats going only to the machine at 
that address. 
  set | get HeartbeatCount. This command is implemented only on the 
ALR-9800, and allows you to specify the total number of heartbeat 
messages to send. This allows for the immediate discovery of readers as 
they come online, but doesn't continuously load the network with 
unnecessary traffic. 
The format of the heartbeat is a small XML text-based message, containing 
information about the reader (name and type), the reader’s network connection 
(IP address and command port) and the length of time until the next heartbeat 
will be sent out. 

CHAPTER 2  READER FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
11
<Alien-RFID-Reader-Heartbeat> 
  <ReaderName>Alien RFID Reader</ReaderName> 
 <ReaderType> 
    Alien RFID Tag Reader, Model: ALR-9780  
    (Four Antenna / EPC Class 1 / 915 Mhz) 
 </ReaderType> 
 <IPAddress>10.1.60.5</IPAddress> 
 <CommandPort>23</CommandPort> 
 <HeartbeatTime>30</HeartbeatTime> 
 <MACAddress>01:02:03:04:05:06</MACAddress> 
</Alien-RFID-Reader-Heartbeat> 
HEARTBEAT XML TAGS 
ReaderName is the user-defined name associated with the reader. This name 
can be set by a user to help identify which reader is which. 
For example, multiple readers in a warehouse may be named “loading bay 1”, 
“loading bay 2” etc., thus providing a clear indication as to the physical location of 
the reader. 
ReaderType details the specific type of reader sending out the heartbeat. This 
information is hard-coded into the reader’s firmware and is not user-configurable. 
IPAddress and CommandPort elements detail the location of the reader on the 
network. The IP address is simply the network address of the reader. The 
command port is the port number on which the reader is listening for incoming 
user commands. Typically, this is port 23, the standard telnet port, allowing a 
user to communicate with the reader over the network by typing “telnet 
[IPAddress]” into the command line of most computers. 
HeartbeatTime is the time until the next heartbeat. This time (in seconds) 
enables any application software to detect when a reader is powered-down or the 
network connection breaks; if a new heartbeat is not received after the expected 
time elapses, then such an interruption to normal service can be detected. 
MACAddress gives the unique identifier assigned to the reader's network 
interface hardware by the manufacturer. It is provided in the ALR-9800 and ALR-
9774 heartbeat messages only. 
HEARTBEATS AND SOFTWARE 
The RFID Developer’s Kit CD that may accompany the reader provides source 
code and software libraries to listen for these network heartbeats, in the Java, 
.NET, and Visual Basic languages.  
The Alien RFID Gateway application, bundled with all readers, uses the Java 
version of these libraries to build its active reader list on the main screen. The 
latest Gateway version at the time of this writing is v2.14.13. Alien recommends 
users download the install the latest version of Gateway software. 
TagList Concepts 
During normal operation, the reader always has a concept of "what's out there" 
by maintaining an internal list of the tags that are active. Active tags are those 
read by the reader at least once within a predefined interval. Any new tags 
presented to the reader are added to the list, and any tags that have not been 
seen for a period of time (the PersistTime) are removed from the list. 

READER FUNDAMENTALS  CHAPTER 2 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
12
At any time, a programmatic call can be made to the reader to retrieve this list of 
tags. 
PersistTime 
The “persist time” defines the duration between the time a tag was last read and 
the time it is automatically purged from the TagList. Setting this value to a small 
time (~1 second) will cause the TagList to contain only what the reader has seen 
in the last second, i.e., a fair representation of what the reader sees at any one 
time. Setting the persist time to a long duration allows a history of tags to be built 
up. For example, setting the persist time to 3600 seconds allows a list to be built 
up detailing all the tags that were read over the last hour. 
Setting PersistTime to –1 has the special effect of keeping tags on the list 
indefinitely until the TagList is delivered to a host, at which point the TagList is 
cleared. This is the default value, and the only value allowed on the ALR-9770. 
Tag Details 
Each entry in the TagList contains a number of sub fields: the Tag's unique ID, 
the read count (the number of times the tag has been read in the current 
session), the discovery time (the time the tag was first seen), the last observed 
time, the antenna (the antenna ID that the tag was last read from), and others. 
TagList Size 
The ALR-9800's TagList can hold up to 6000 tag entries. Other Alien RFID 
readers can handle up to 1000 entries. 
Reading Tags over the Network 
The Alien RFID reader provides two methods with which to read tags: Interactive 
Mode and Autonomous Mode. 
  Interactive Mode - the controlling application issues commands to the 
reader to read tags. This command will always immediately return with a 
list of tags in the reader's field of view.  
  Autonomous Mode - the reader constantly reads tags, and may initiate 
a conversation with a network listener when certain events arise. 
8000 0100 8820 FFA4
8000 0100 8820 3F02
8000 0400 0232 3F06
8020 0150 2057 3F12
8000 0200 8020 3F16
8000 0100 8820 3F09
New tags detected are added to the 
Ta
g
List.
Reader TagList... 
A
ll tags listed are active. 
Tags not read for a while are 
removed from the list. 

CHAPTER 2  READER FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
13
While both methods are equally useful, the choice will ultimately be determined 
by the needs of the controlling application. 
Although it may be easier and require less coding to work in Interactive Mode, a 
little investment in programming effort lets the user set up Autonomous Mode to 
provide a more scalable system for multiple readers. In addition, readers that 
spend less time communicating with the host can spend more time looking for 
tags. 
Interactive Mode 
Reading tags in Interactive Mode is as simple as issuing a single command to 
the reader. This command is get TagList. This causes the reader to initiate 
a tag search, and report back the current TagList. Depending on the PersistTime 
and recent tag activity, the returned data may include tag read data from 
previous reads. Following is an example of what the default TagList format 
("Text") looks like. 
Tag:041C 1820 2812 4080, Disc:2003/01/21 02:24:00, Last:2003/01/21 02:24:00, Count:1, Ant:0 
Tag:1155 8B14 5661 D40B, Disc:2003/01/21 04:14:47, Last:2003/01/21 04:24:00, Count:1, Ant:0 
The format of the TagList can be specified using the set TagListFormat 
command. One of the options is XML format, which would return the same 
TagList as: 
<Alien-RFID-Tag-List> 
<Alien-RFID-Tag> 
  <TagID>041C 1820 2812 4080</TagID> 
 <DiscoveryTime>2003/01/21 02:24:00</DiscoveryTime> 
 <LastSeenTime>2003/01/21 02:24:00</LastSeenTime> 
 <ReadCount>1</ReadCount> 
 <Antenna>0</Antenna> 
</Alien-RFID-Tag> 
<Alien-RFID-Tag> 
  <TagID>1155 8B14 5661 D40B </TagID> 
 <DiscoveryTime>2003/01/21 02:24:00</DiscoveryTime> 
 <LastSeenTime>2003/01/21 02:24:00</LastSeenTime> 
 <ReadCount>1</ReadCount> 
 <Antenna>0</Antenna> 
</Alien-RFID-Tag> 
</Alien-RFID-Tag-List> 
Additional formats include "Terse", and "Custom". See the TagListFormat section 
in Chapter 4, Alien Reader Protocol for details on all of the TagList formats. 
Autonomous Mode 
Autonomous Mode is a configuration and operation mode that enables 
automated monitoring and handling of tag data. You first issue a series of 
configuration commands to the reader which specify how and when to read tags, 
and optionally what to do with the tag data. 
Once configured in this mode, the reader can be left to operate on its own. An 
application on a host computer can then be set up to listen for notification 
messages from the reader containing any tag data that it has read. 

READER FUNDAMENTALS  CHAPTER 2 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
14
One of the major benefits to this mode of operation is that many readers can be 
configured to send tag messages to a single host. Thus, a single application can 
listen for and process data from multiple readers over the network. 
A NOTE ABOUT AUTOMODE ON THE ALR-9770 
The ALR-9770 reader implements a simplified version of the AutoMode found on 
other Alien readers. Digital I/O hasn't been implemented, so the use of start and 
stop triggers (discussed on the following pages) doesn't apply. Also, the ALR-
9770 lacks the Notify engine, so there is no asynchronous notification 
mechanism. 
Defining the Autonomous Read Operation 
Autonomous Mode functionality is summarized in the state diagram shown 
below. Fundamentally, a reader operating in Autonomous Mode moves between 
several states: Waiting, Working, Evaluation, and Notification. Waiting, Working, 
and Evaluation states have associated with them an optional digital output state 
that is set upon entering the state. Movement from one state to the next is 
initiated by an expiration of a timer, a triggered event on the digital input lines, or 
changes to the TagList. 
Each element of the State Diagram is described below. Associated with each 
element are one or more commands that are used to configure the reader. 
Autonomous Mode State Diagram 
Wait
(AutoWaitOutput)
AutoStartTrigger?
AutoAction
(AutoWorkOutput)
AutoStopTimer Expired
or AutoStopTrigger?
Evaluation
(New Tag? Programmed?)
True Evaluation
(AutoTrueOutput)
False Evaluation
(AutoFalseOutput)
AutoTruePause 
Expired?
AutoFalsePause 
Expired?
Notification 
Needed?
Issue 
Notification
no
no
no
no
AutoStartPause Expired?
(ALR-9800)
no
no

CHAPTER 2  READER FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
15
ENTER AUTONOMOUS MODE  (Not shown on the state diagram.)  
The user puts the reader into Autonomous Mode with the set AutoMode 
command. set AutoMode=On puts the Reader into Autonomous Mode. Set 
AutoMode=Off turns off Autonomous Mode. 
WAITING STATE 
Upon entering Autonomous Mode, the reader automatically enters the Waiting 
State. While waiting for a Start Working Trigger (see below) the reader holds the 
digital output lines at a value set by the AutoWaitOutput command. For 
example, set AutoWaitOutput=1 causes digital output line 1 to go high 
while the reader is in the Waiting state. 
START WORKING TRIGGER 
The receipt of a trigger pattern on the digital input lines causes the reader to 
move from the Waiting state to the Working state. The start condition is set by 
the AutoStartTrigger command. The AutoStartTrigger command 
takes two parameters, a rising edge pattern and a falling edge pattern. Each 
pattern is a single integer which is a bitmap of the desired input triggers, where 
input pin #1 is represented by bit 0, input pin #2 is represented by bit 1, etc. 
The table below illustrates the bitmap values that correspond to different pin 
combinations. This table holds for both input as well as output pin bitmaps. 
Digital 
Input 
Value 
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
Pin #1  - ✔ - ✔ - ✔ - ✔ - ✔ - ✔ - ✔ - ✔ 
Pin #2  - - ✔ ✔ - - ✔ ✔ - - ✔ ✔ - - ✔ ✔ 
Pin #3  - - - - ✔ ✔ ✔ ✔ - - - - ✔ ✔ ✔ ✔ 
Pin #4  - - - - - - - - ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ 
The command, set AutoStartTrigger=2,0 causes the reader to enter 
the working state on receipt of a rising edge on pin 2, while set 
AutoStartTrigger=0,3 causes the reader to enter the working state after 
the receipt of a falling edge on pins one or two. set 
AutoStartTrigger=0,0 causes the reader to immediately drop into the 
Working state. 
The ALR-9800 has an additional property, AutoStartPause, which causes the 
reader to pause the specified number of milliseconds after receiving a start 
trigger before transitioning to the working state.  
WORKING STATE 
In the working state, the reader holds the digital output lines at the value defined 
by the AutoWorkOutput command. set AutoWorkOutput=3 holds the 
first two output lines high while the reader is working. The action the reader 
performs while in the working state is determined by the AutoAction 
command. set AutoAction=Acquire causes the reader to repeatedly 
acquire TagList data using the parameters set in the AcquireMode and 

READER FUNDAMENTALS  CHAPTER 2 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
16
PersistTime commands. The reader continues working until the Stop 
Working Trigger conditions are met. (see below) 
STOP WORKING TRIGGER/TIMER 
Like the Start Working Trigger, the Stop Working Trigger can be a change on the 
digital input lines, but can also be the expiration of a timer. Use the 
AutoStopTrigger command with a rising, falling edge pattern to set the 
trigger conditions. set AutoStopTrigger=1,0 looks for a rising edge on 
pin 1 before leaving the Working state. In addition, one may use the 
AutoStopTimer command to repeat the Working action for a specified period 
of time. For example, set AutoStopTimer=1300 causes the reader to 
perform the Working action for 1.3 seconds before moving on to the Evaluation 
stage. If both a stop trigger and a stop timer are specified, whichever event 
happens first fill stop the working state. 
EVALUATION 
At the Evaluation decision point, the reader looks to see if new tags have been 
added to the TagList since the last evaluation. If so, it drops to the 
AutoTruePause state, if not, it drops to the AutoFalsePause state. Note: the 
Evaluation looks at the TagList and therefore is very much dependent on the 
value of the PersistTime setting. 
TRUE/FALSE PAUSE 
After evaluation, the Reader sets the output lines to the values specified in the 
AutoTrueOutput and AutoFalseOutput commands. This condition is 
held for AutoTruePause or AutoFalsePause milliseconds before the test 
for Notification begins. For example, set AutoTrueOutput=1 and set 
AutoTruePause=20 cause the reader to hold output pin #1 high (and all 
others low) for 20 milliseconds before proceeding. 
NOTIFICATION 
If NotifyMode is enabled (set NotifyMode=On) and the specified 
NotifyTrigger has occurred, the reader issues an notification message. The 
NotifyTrigger is specified with the set NotifyTrigger command and can 
be set to “Add”, "Remove”, “Change”, “True”, “False”, or "TrueFalse", as 
described in the next topic. 
If a notification is to be issued, the TagList data is sent to the NotifyAddress. 
The reader then returns to the Waiting state. 
Autonomous Mode Examples 
EXAMPLE 1 - BACKGROUND READING 
In this case, we would like the reader to monitor the tag field continuously. The 
application will periodically ask for the TagList. If a new tag is seen, output pin 1 
will be flashed high for 500 msec. Otherwise, output pin 2 will be flashed high for 
500 msec. 

CHAPTER 2  READER FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
17
AutoModeReset 
set AutoAction = Acquire 
set AutoStartTrigger = 0,0 
set AutoStopTimer = 0 
set AutoTrueOutput = 1 
set AutoTruePause = 500 
set AutoFalseOutput = 2 
set AutoFalsePause = 500 
set AutoMode = On 
EXAMPLE 2 - TRIGGERED READING 
Here a forklift will cause an electric eye to send a signal to the reader. We want 
the reader to look for a rising edge on this signal and scan for tags for 1.8 
seconds before going back to the Waiting state. We won't make any changes to 
the output pins. 
AutoModeReset 
set AutoAction = Acquire 
set AutoStartTrigger = 1, 0 
set AutoStopTimer = 1800 
set AutoTruePause = 0 
set AutoFalsePause = 0 
set AutoMode = On 
EXAMPLE 3 - TRIGGERED READING WITH NOTIFICATION 
A trigger is used to start the reading. If a tag is found, send an email message. 
After the email is sent, return to the waiting state. 
AutoModeReset 
set AutoAction = Acquire 
set AutoStartTrigger = 1, 0 
set AutoStopTimer = 0 
set AutoTruePause = 0 
set AutoFalsePause = 0 
set NotifyAddress = borg@mycompany.com 
set MailServer = mail.mycompany.com 
set NotifyTrigger = Add 
set NotifyMode = On 
set AutoMode = On 
Notification Mode 
The last stage in configuring the Autonomous Mode is to tell the reader under 
what conditions to notify listeners about TagLists. Listeners (network applications 
/ people) are notified only when specific conditions arise, such as when new tags 
are read, or when tags disappear from view. 
Note: Notification Mode is not supported on the ALR-9770 reader at this time. 
NotifyTime 
The NotifyTime command instructs the reader to send out a copy of its 
TagList to a listener every n seconds, regardless of whether the TagList has 
changed or not. This is a simple way to force the reader to send out its 
TagList to a listener. 

READER FUNDAMENTALS  CHAPTER 2 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
18
NotifyTrigger 
The NotifyTrigger command specifies a condition that must occur before a 
TagList is sent out to a listener. There are a number of possible triggers that 
can be used: 
Trigger  Trigger Condition  Tag Data Included 
Add  A new tag was read and added to the TagList.  Only the added tags. 
Remove  A tag was removed from the TagList.  Only the removed tags. 
Change  A tag was either added to, or removed from, 
the TagList.  Entire TagList. 
True 
The evaluation task of the autonomous state 
loop evaluates to true 
(typically when a tag is added to the TagList). 
Entire TagList. 
False 
the evaluation task of the autonomous state 
loop evaluates to false 
(typically when no tag is added to the TagList) 
Entire TagList. 
TrueFalse 
the evaluation task of the autonomous state 
loop evaluates to true or false 
(i.e. every autonomous mode cycle) 
Entire TagList. 
NotifyAddress 
You must tell the reader where to send notification messages when it is operating 
in Autonomous Mode.  
The reader can be instructed to send messages to a specific machine on the 
network, or via email to a specific email address. This is configured using the 
command: 
set NotifyAddress = <address> 
The format of <address> indicates the method of delivery: 
NotifyAddress  Description 
hostname:port  Send a message to a specified port on a networked machine. 
The address takes the form “hostname:port.” For example, 
“123.01.02.98:3450” or "listener.alientechnology.com:10002” 
user@domain.com 
Send a message via e-mail to the address specified. The 
address is specified in standard email form, i.e., 
user@domain.com 
NOTE: the MailServer parameter must be configured for this 
to work. 
serial  Send a message to the serial connection. The word “serial” is 
used as the address, and is not case sensitive. 
NotifyFormat 
You can tell the reader the format for any notification that it issues. When a 
notification message is sent out, it contains two parts: 

CHAPTER 2  READER FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
19
  The first part, the header, provides details about the reader that sent the 
message, and the reason the message was sent.  
  The second part is the TagList - either newly added or removed tags, or 
the complete list of tags as seen by the reader, depending on the 
NotifyTrigger. 
The format of the message is configured using a single command: 
set NotifyFormat = format 
The format may be one of the following: 
NotifyFormat  Description 
Text  Plain text messages, one tag ID per line. 
Terse  Plain text messages, one tag ID per line, compact form 
XML  XML text format 
Custom  Same as Text format, except the contents of each tag ID line is 
defined by the TagListCustomFormat parameter 
Text-formatted notifications take the form: 
#Alien RFID Reader Auto Notification Message 
#ReaderName: Spinner Reader 
#ReaderType: Alien RFID Tag Reader, Model: ALR-9780 
             (Four Antenna / Class 1 / 915Mhz) 
#IPAddress: 10.1.70.13 
#CommandPort: 23 
#Time: 2003/01/21 12:48:59 
#Reason: TEST MESSAGE 
Tag:1115 F268 81C3 C012, Disc:2003/01/21 09:00:51, Last:2003/01/21 
09:00:51, Count:1, Ant:0 
Tag:0100 0100 0002 0709,  Disc:2003/01/21 11:00:10, Last:2003/01/21 
11:00:10, Count:1, Ant:0 
#End of Notification Message 
Terse-formatted notifications take the form: 
#Alien RFID Reader Auto Notification Message 
#ReaderName: Spinner Reader 
#ReaderType: Alien RFID Tag Reader, Model: ALR-9780 
             (Four Antenna / Class 1 / 915Mhz) 
#IPAddress: 10.1.70.13 
#CommandPort: 23 
#Time: 2003/01/21 12:48:59 
#Reason: TEST MESSAGE 
1115 F268 81C3 C012,1,0 
0100 0100 0002 0709,1,0 
#End of Notification Message 

READER FUNDAMENTALS  CHAPTER 2 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
20
XML-formatted notifications take the form: 
<Alien-RFID-Reader-Auto-Notification>  
  <ReaderName>Spinner Reader</ReaderName>  
 <ReaderType>  
    Alien RFID Tag Reader, Model: ALR-9780 
   (Four Antenna / Class 1 / 915 MHz)  
 </ReaderType>  
 <IPAddress>10.1.70.13</IPAddress>  
 <CommandPort>23</CommandPort>  
  <Time>2003/01/21 12:49:22</Time>  
  <Reason>TEST MESSAGE</Reason>  
 <Alien-RFID-Tag-List>  
  <Alien-RFID-Tag>  
      <TagID>0102 0304 0506 0709</TagID>  
    <DiscoveryTime>2003/01/17 11:37:01</DiscoveryTime>  
    <LastSeenTime>2003/01/17 11:37:01</LastSeenTime> 
    <Antenna>0</Antenna>  
    <ReadCount>1413726</ReadCount>  
  </Alien-RFID-Tag>  
  <Alien-RFID-Tag>  
      <TagID>2283 1668 ADC3 E804</TagID>  
      <DiscoveryTime>2003/01/19 07:01:19</DiscoveryTime>  
      <LastSeenTime>2003/01/19 07:01:19</LastSeenTime> 
      <Antenna>0</Antenna>  
      <ReadCount>1</ReadCount>  
  </Alien-RFID-Tag>  
 </Alien-RFID-Tag-List>  
</Alien-RFID-Reader-Auto-Notification> 
An example of a custom-formatted notification might be: 
#Alien RFID Reader Auto Notification Message 
#ReaderName: Spinner Reader 
#ReaderType: Alien RFID Tag Reader, Model: ALR-9780 
             (Four Antenna / Class 1 / 915Mhz) 
#IPAddress: 10.1.70.13 
#CommandPort: 23 
#Time: 2003/01/21 12:48:59 
#Reason: TEST MESSAGE 
Tag 1115 F268 81C3 C012 was read 3 times 
Tag 0100 0100 0002 0709 was read 1 times 
#End of Notification Message 
Listening for Tags over the Network 
When a reader has been configured for Autonomous Mode, interactive 
communication with the reader is unnecessary and it can be left to work on its 
own. It is then up to the application to listen for any notification messages from 
the reader.  
Libraries included in the RFID Reader Developer’s Kit provide this functionality in 
Java, .NET, and  Visual Basic environments. In both cases, setting up a listening 
service is a simple coding task, involving less than ten lines of code.

CHAPTER 3  TAG FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
21
CHAPTER 3 
Tag Fundamentals 
Introduction 
RFID tag reading is not just about getting the tag ID from a tag into the reader. 
There are different methods available to perform this basic operation, and 
different parameters and settings that can be altered to tweak the performance of 
this basic operation. 
Alien RFID Tags 
For the purposes of this Reader 
Interface Guide, it is assumed you will 
be using either the Alien beam-
powered tag (Class I) or the Alien long-
range battery-powered tag, both of 
which use modulated backscatter 
communications. 
Alien NanoBlock Tags 
Alien’s offerings in the Class I tag 
category use proprietary NanoBlock™ 
ICs to meet the cost and size 
requirements of the EPCglobal 
specification.  
This is a completely “passive” tag by both common definitions of the term in both 
its means of communication (backscatter) and its power source (beam-powered). 
Thus, if you hear Aliens refer to a “passive tag,” this is the type of tag they are 
talking about. 
Battery Assisted Passive (BAP) Tags 
Alien’s long-range, battery-assisted passive tag would be categorized as a Class 
3 “dynamic tag” under the EPCglobal scheme, though with performance 
enhancements over those of the basic Class 3 tag. 
These battery tags can be configured for any number of specific applications. 
Alien’s Temperature Tag, in particular, allows manufactures and shippers of 
temperature-sensitive and perishable products to track temperature variations 
these products encounter during handling. Such temperature records can help 
pinpoint handling problems and calculate more realistic shelf-life and expiration 
dates. 
Battery tags may be used effectively for supply chain applications as well as 
commercial applications including fleet management, automatic toll collection, 
and equipment tracking. 
Examples of Alien RFID Tag and 
A
ntenna Designs. 

TAG FUNDAMENTALS  CHAPTER 3 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
22
Acquisition Modes 
The AcquireMode property defines the method used to read tags in the field. 
There are two distinct methods for reading tags, and the choice of one method 
over another depends on the application at hand. 
You specify the Acquire Mode by issuing the set AcquireMode command. It 
can take one of two values, "Global Scroll" or "Inventory”. 
Global Scroll 
Global Scroll is the most primitive of tag ID reading operations supported by the 
Alien RFID Reader system. When a global scroll command is issued, the RFID 
Reader sends a single command over the air to all and any tags. That command 
is simply a request for any tag to immediately send back its ID to the RFID 
Reader. 
The simplicity of this command is both its advantage and its downfall: The 
command is very quick to execute as it involves only one round trip between the 
reader and the tag. However, because the command is so simple, problems may 
arise if there is more than one tag in the field. At this point, multiple tags will all 
receive the same command, and will all send back their IDs to the reader at 
virtually the same time. A situation such as this makes it difficult for the reader to 
discern individual IDs among the general noise. Typically one or two of the 
loudest or closest tags will be decoded, but the majority will not be discerned. 
This is analogous to walking into a dark room full of people and shouting out the 
command “if anyone can hear me, shout your name back now”. If there is one 
person in the room with you, you will be able to hear their name. If there are 
multiple people in the room, the results will be noise. Maybe you will be able to 
make out one or two names, but typically not more than that. 
There are many applications where global scroll is the best tag reading method 
to use. These applications typically expect just one or two tags in the field of view 
at any one time, such as conveyor belt or tollbooth applications. For these 
systems, global scroll outperforms a full inventory by a factor of three as far as 
individual read rates are concerned. 
Inventory 
The inventory command is a full-featured system for discerning the IDs of 
multiple tags in the field at the same time. This single high-level command 
transforms itself into a complex series of reader-tag interrogations that eventually 
resolve themselves into a single list of tag IDs seen by the RFID Reader. This 
method of interrogation and evaluation of multiple tags is known as an anti-
collision search. 
Continuing the analogy used in the global scroll description, the anti-collision sort 
works in the following way: You walk into a dark room full of people and instruct 
everyone to stand up. Then you start with the letter ‘A’ and tell anyone whose 
name begins with this letter to shout their name back. You may get zero replies, 
one reply, or multiple noisy replies. If you can clearly make out any individual 
name from the noise, you shout back telling that person to sit down and be quite 
from now on. Next repeat the series of events, this time telling anyone whose 
name begins with ‘AA’ to shout back their name. If you can pick out one name, 
tell that person to sit down and be quite. You repeat this until no names are 
heard at all, each time adding a letter such as ‘AB’, ‘AC’. When it gets to the point 

CHAPTER 3  TAG FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
23
that there are no more names to be heard, you move on to the letter ‘B’ and 
repeat the series. By the time you’ve been through the letter ‘Z’, you should have 
been able to get everyone’s name, and everyone should be sitting down. At this 
point the sort has been finished. 
Obviously this sort algorithm is far more complex than the global scroll algorithm, 
requiring many more reader-tag instructions. However the Alien RFID Reader 
considerably optimizes this basic sort method, and in doing so still provides a 
very fast and efficient sort algorithm. 
Acquire Parameters 
When the reader scans for tags, it can automatically perform a complex 
sequence of repeated wakes, sleeps, and reads. This sequence is defined by the 
acquire parameters, and by adjusting each value you can configure the Reader 
to perform optimally, depending on the particular use case. 
When the reader does an acquire action, it performs a total number of acquire 
cycles specified by the AcqCycles parameter. Each cycle consists of a number 
of Wakes (given by AcqEnterWakeCount) on each antenna, then a number 
of reads (given by AcqCount) and Sleeps (given by AcqSleepCount) on 
each antenna. Finally, after all of the cycles have completed, a number of Wakes 
(given by AcqExitWakeCount) are issued on each antenna. 
The Wakes and Acquires all act on the current Tag Mask. The Sleeps act only on 
tags as they are found. 
The acquire parameters are demonstrated by the following pseudo-code: 
foreach cycle in AcqCycles 
  foreach wake in AcqEnterWakeCount  
    foreach antenna in AntennaSequence 
   Wake (using current mask) 
  next antenna 
  next wake  
  foreach count in AcqCount  
    foreach antenna in AntennaSequence 
   DoAcquisition (using currentMask) 
   foreach sleep in AcqSleepCount 
    Sleep(TagsFound) 
   next sleep 
  next antenna 
 next count 
next cycle 
foreach wake in AcqExitWakeCount 
  foreach antenna in AntennaSequence  
  Wake(currentMask) 
 next antenna 
next wake  
Masks and Tag Memory Structure 
Many commands aimed at Alien RFID tags require the setting of a mask, which 
directs the commands only at the tags who's ID matches the mask. This 

TAG FUNDAMENTALS  CHAPTER 3 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
24
mechanism allows commands to be sent to one specific tag, a selective group of 
tags, or the whole field of tags.   
To understand the use of masks, a basic understanding of tag memory structure 
is first required. 
Class I Tag Memory 
Class I tags from Alien contain 96 bits of programmable memory, of which 64 bits 
are user-programmable. The remaining 32 bits are controlled by the reader to 
record state and checksum information inside the tag.  
 Checksum EPC Code (or User ID Code)   Lock  PC 
B
yte  0 1  0 1 2 3 4 5 6 7  0  0 
B
it  0-7  8-15 0-7 8-15 16-23 24-31 32-39 40-47 48-55 56-63  0-7  0-7 
Class I Tag Memory Structure 
The 64-bit ID Code (either a fully qualified EPC code or user-defined ID Code) is 
address from left to right, where the leftmost bit (the Most Significant Bit) is bit 0, 
and the rightmost bit (the Least Significant Bit) is bit 63. There is no restriction on 
the data that resides in this portion of the tag. 
The checksum is calculated over the 64 bits of the ID Code only. The checksum 
is calculated and programmed into the tag automatically by the reader. This 
checksum is calculated using the CCITT-16 standard.  
The Lock and PassCode (PC) bytes stored at the end of tag memory are used to 
lock a tag and kill a locked tag. Each of these codes takes exactly one byte. The 
user can control the value of the PassCode, passing it in as a parameter to the 
Lock command. The reader takes full control of the Lock byte, allowing it to flag 
the tag as either locked or unlocked. 
For further details on programming tag IDs and tag memory, please see the Tag 
Programming chapter. 
Addressing a Subset of Tags 
One of the more useful applications of the mask command is to address a subset 
of tags in the field. This is achieved using partial masks. 
For example, the following mask command can be issued to address only tag IDs 
that start with the numbers "8000 0040": 
set Mask = 32, 0, 80 00 00 40 
The first value is the length of the mask - 32 bits (4 bytes x 8 bits/byte). The 
second value is the starting position in the ID - bit 0. Finally, a sequence of hex 
bytes is given specifying the mask – 80 00 00 40. 
Subsequent commands that use a mask will now only be recognized by tags that 
start with this tag ID. This can be useful if, for example, the reader is scanning 
food items but is only interested in finding a certain brand of breakfast cereal. By 
setting the mask to identify only the breakfast cereal tag IDs, any acquire 
command on the food items will only return the items of interest. This 
methodology works particularly well when combined with the EPC code strategy, 

CHAPTER 3  TAG FUNDAMENTALS 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
25
where each product type and manufacturer code use well-defined memory codes 
that can be masked. 
Another example is to search for all Class I tags whose last three bits of a 64-bit 
EPC code are set to 1. The mask settings for this would be: 
set Mask = 3, 61, E0 
In other words, length = 3 bits, starting at bit 61, and matching value E0hex. The 
mask value is specified as E0hex (11100000binary) and not 07hex (111binary) because 
07hex is interpreted as 00000111binary, and when the bit pattern is applied as a 
mask, the bits are applied from left to right (most-significant-bit to least-
significant-bit). 
Persistent Sleep and Wake 
Tags have the ability to be put to sleep and awakened on command. Once tags 
have been put to sleep they will ignore any subsequent commands, even if 
addressed directly to them. The only command that these slept tags will respond 
to is wake, which will bring them back to life and make them respond to all 
commands again. 
The Sleep and Wake commands can act together in a powerful way to help 
address multiple tags in the field.  
By default the inventory and global scroll commands will read tags in the field, 
and leave them in a wakened state. This means that the very next time an 
acquire action is made, the same tags will answer back to the reader, resulting in 
an identical TagList. 
However it is possible to sleep tags are they are found. Both the inventory and 
global scroll modes support this action. In this scenario, as a tag is discovered by 
the reader, it is told to sleep. The very next time an acquire command is issued, 
the reader will scan the field of tags, but as they are all asleep, they will not 
answer and the TagList returned will be empty. 
The effects of the sleep-as-found mode can be reverted at any time by issuing a 
Wake command. This will immediately wake up all tags in the field of view, 
making them ready for subsequent acquire commands. 
This is a useful mode to use when dealing with very large numbers of tags in the 
field at once (>100 tags). Using these modes, the acquire command can discern 
as many tags as it can in one pass, leaving these tags asleep as it finds them. 
Then any subsequent acquire commands will now only be dealing with tags it 
missed in previous rounds, or tags that have entered the field since the last 
round. Thus a large population of tags can be sorted in smaller, more 
manageable rounds. 
Sleep, Wake, and Masks 
The Sleep and Wake commands always work with the current Mask setting. 
Therefore it is possible to Sleep a subset of tags before performing an acquire, or 
to Sleep all tags then Wake a subset before acquire. Combining Sleep, Wake, 
Masks and Acquire Modes offers up many interesting possibilities for tag reading 
that will address virtually all problems in the field.

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
26
CHAPTER 4 
Alien Reader Protocol 
The Alien Reader Protocol is a text-based communications protocol for 
configuring and operating an Alien RFID Reader. This chapter describes the 
programming interface that links the Alien RFID Reader to the outside world. 
For an overview of the reader system and instructions on setting up reader 
operation via a host computer, see the chapters entitled: Reader Fundamentals 
and Tag Fundamentals. 
Reader Operation Overview 
As detailed in the previous chapter, you may interact with the reader and 
configure its operation using either of two text-based command line methods: 
  direct serial (RS-232) – if supported by the reader 
  telnet connection (TCP/IP) 
For the purposes of these instructions, the serial and telnet operations are 
considered essentially identical. In both cases, the screens look similar and will 
thus be considered identical for the purposes of the instructions that follow. 
Telnet Exceptions:  
  In telnet operation you must issue the command “q” to quit the session. 
  Accessing the reader via telnet requires an authorized user name and 
password (both of which can be changed with commands in the General 
command set). 
Telnet connection 
Direct serial connection 
via H
yp
erTerminal

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
27
Overview of Commands 
There are two distinct categories of reader activities: those initiated by the host 
(Interactive Mode), and those initiated by the reader itself (Autonomous Mode). 
INTERACTIVE MODE 
Interactive Mode activities are initiated by a program or user who issues 
commands to the reader from a separate host computer. The host always 
initiates the transaction with a request, and the reader responds with an 
immediate reply. The host should wait for a reply before initiating another 
command. 
Interactive commands are used to configure and operate the reader, as well as to 
interrogate tags and retrieve the stored TagList on demand.  
AUTONOMOUS MODE  
Autonomous Mode activities instruct the reader to perform certain tasks without 
outside intervention, according to conditions set by the programmer. 
These commands typically tell the reader to read tags based on trigger events 
(external digital inputs or internal timers) and then send notification messages to 
a host system, depending on various TagList-based triggers. For example, the 
reader can be instructed to search the field until it sees a tag, then to read the 
new tag and e-mail the event to a specified e-mail address. 
Command Format 
All commands between the host system and the reader are human readable, 
ASCII text-based messages. For example, a command to set the name of the 
reader using the "set ReaderName" command takes the form: 
Alien >set ReaderName = My Alien Reader[CR][LF] 
All commands to the reader are single-line ASCII strings, terminated by a 
carriage-return / line-feed pair, written as [CR][LF]. The [CR] character is ASCII 
code 0x0D, while the [LF] character is ASCII code 0x0A. These characters are 
sometimes written as "\r" and "\n" respectively. 
All responses from the reader are either single-line or multi-line ASCII strings, 
terminated by [CR][LF][0], where [0] is ASCII code 0x00. When a responses is 
comprised of multiple text lines, each line is separated by a single [CR][LF] 
sequence.  
An example of a command and single-line response is: 
Alien >get ReaderName[CR][LF] 
ReaderName = Alien Reader[CR][LF][0] 
An example of a command and multi-line response is: 
Alien >get ReaderVersion[CR][LF] 
Ent. SW Rev: 03.00.10 : Jun 08 2004 : 10:54:30[CR][LF] 
Country Code: 01, Reader Type: 03, Firmware Rev: 2.1.4[CR][LF][0] 
Commands are not case sensitive: 
 “
set readername” is equivalent to “sET ReADerNaME”. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
28
Suppressing Command Prompts 
By default, the reader responds to all commands using the interactive console-
style interface. Consequently replies are always followed by a command prompt 
indicating that the reader is ready for more user input. Often, the command 
prompt is not required, especially when client software is written that 
programmatically communicates with the reader. 
Since the command prompt is sent after the null-terminated response, this 
prompt text would be interpreted as the beginning of the next reader response. 
To accommodate this, command prompts can be suppressed by prepending a 
0x01 character, written as [1], to the command string. For example: 
INTERACTIVE COMMAND FORMAT 
Alien >get ReaderName[CR][LF] 
ReaderName = Alien Reader[CR][LF][0] 
[CR][LF]Alien > 
NON-INTERACTIVE COMMAND FORMAT 
[1]get ReaderName[CR][LF] 
ReaderName = Alien Reader[CR][LF][0] 
Get and Set Shortcuts 
As a typing convenience, you may also use the following shortened command 
syntax: 
Standard Syntax  Shortened Syntax 
Get <attributeName>  <attributeName>? 
Set <attributeName> = <attributeValue>  <attributeName> = <attributeValue> 
Examples: 
Alien >get ReaderName 
ReaderName = Alien RFID Reader 
Alien >ReaderName? 
ReaderName = Alien RFID Reader 
Alien >set ReaderName = Alice 
ReaderName = Alice 
Alien >ReaderName = Alice 
ReaderName = Alice 
XML Messages 
There are a few cases where text-based replies and messages are formatted in 
XML format for easier computer parsing. Complete Document Type Definitions 
(DTDs) for each XML document are provided in this document as an appendix, 
as well as on the Developer's Kit CD. 
The following messages are sent in XML format: 
  Heartbeat Messages 
  Notification Messages (if NotifyFormat = XML) 
  The "get TagList" commands (if TagListFormat = XML) 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
29
Command List 
GENERAL COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
Help (or “h”)  List all reader commands available.  ✔ ✔ ✔ ✔ ✔
Info (or (“i”)  List all current reader settings.  ✔ ✔ ✔ ✔ ✔
!  (exclamation mark)  Repeats the last command issued.  ✔ ✔ ✔ ✔ ✔
Save  Save current settings to flash memory  ✔ ✔ ✔ ✔ - 
Quit ("q")  Quit session (telnet only)  ✔ ✔ ✔ ✔ ✔
get Function 
set Function 
Used to enable and disable classes of commands 
(programming, for example)  ✔ ✔ ✔ ✔ ✔
get ReaderName 
set ReaderName 
Allows an arbitrary name to be associated with and 
retrieved from the reader.  ✔ ✔ ✔ ✔ ✔
get ReaderType  Get a description of the reader type.  ✔ ✔ ✔ ✔ ✔
get ReaderVersion  Get the reader software/hardware versions.  ✔ ✔ ✔ ✔ ✔
get ReaderNumber 
set ReaderNumber 
Get and Set an arbitrary number (1-255) to be 
associated with the reader.  ✔ ✔ ✔ ✔ ✔
get Uptime  Returns the number of seconds that have elapsed 
since the reader was last booted.  ✔ ✔ ✔ ✔ ✔
get Username 
set Username 
Get and Set the Username used for the Network based 
access control.  ✔ ✔ ✔ ✔ ✔
get Password 
set Password 
Get and Set the Password used for the Network based 
access control.  ✔ ✔ ✔ ✔ ✔
get MaxAntenna  Returns the maximum addressible antenna port 
number (total number of antennas is MaxAntenna+1)  ✔ ✔ ✔ ✔ ✔
get AntennaSequence 
set AntennaSequence 
Get and Set the antenna port sequence the reader 
should use.  ✔ ✔ ✔ ✔ ✔
get RFAttenuation 
set RFAttenuation 
Get and Set the amount of digital attenuation to apply 
to the emitted RF.  ✔ ✔ ✔ ✔  
FactorySettings  Reset the reader to its original factory settings.  ✔ ✔ ✔ ✔  
Reboot  Reboot the reader.  ✔ ✔ ✔ ✔ ✔

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
30
NETWORK CONFIGURATION COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
get MACAddress  Returns the reader's MAC (Media Access Control) 
address – an identifier unique to every reader.  ✔ ✔ ✔ ✔ ✔
get DHCP 
set DHCP 
Turn DHCP on or off. If DHCP is on, the reader 
automatically configures itself for the network on power-
up. 
✔ ✔ ✔ ✔ ✔
get IPAddress 
set IPAddress 
Set and Get the network ID (IP Address) of the reader. 
If DHCP is enabled this will be set automatically.  ✔ ✔ ✔ ✔ ✔
get Gateway 
set Gateway 
Set and Get the network gateway. If DHCP is enabled 
this will be set automatically.  ✔ ✔ ✔ ✔ ✔
get Netmask 
set Netmask 
Set and Get the subnet mask. If DHCP is enabled this 
will be set automatically.  ✔ ✔ ✔ ✔ ✔
get DNS  
set DNS 
Set and Get the domain name server. If DHCP is 
enabled this will be set automatically.  ✔ ✔ ✔ ✔ ✔
get NetworkTimeout 
set NetworkTimeout 
The amount of time before the reader closes a network 
socket after inbound communication ceases.  ✔ ✔ ✔ ✔ ✔
get CommandPort 
set CommandPort 
The reader reacts to commands over the network only 
if they are directed at a specific Command Port.  ✔ ✔ ✔ ✔  
Ping  Tests a network connection to another device.  ✔✔✔✔  
NetworkReset  Applies network changes immediately, without 
rebooting.  ✔       
get HeartbeatAddress 
set HeartbeatAddress 
Set and Get the IP address to deliver heartbeat 
message to. The default value is 255.255.255.255 
(multicast). 
✔ ✔ ✔ ✔ ✔
get HeartbeatPort 
set HeartbeatPort 
The reader periodically sends out heartbeat messages 
to network devices on its subnet to this port.  ✔ ✔ ✔ ✔ ✔
get HeartbeatTime 
set HeartbeatTime 
Set and Get the time interval, in seconds, between 
successive heartbeats.  ✔ ✔ ✔ ✔ ✔
get HeartbeatCount 
set HeartbeatCount 
Set and Get the total number of heartbeats to send out 
after booting.  ✔       
TIME COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
get TimeServer 
set TimeServer 
Get and Set the location of a network time server.  ✔ ✔ ✔ ✔ ✔
get TimeZone 
set TimeZone 
Get and Set the time zone offset from UTC for the real 
time clock.  ✔ ✔ ✔ ✔ ✔
get Time 
set Time 
Get and Set the real time clock on the reader in Local 
time.  ✔ ✔ ✔ ✔ ✔

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
31
EXTERNAL IO COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
get ExternalInput  Get the External Input pin values.  ✔✔✔✔  
get ExternalOutput 
set ExternalOutput 
Get and Set the External Output pin values.  ✔✔✔✔  
get InitExternalOutput 
set InitExternalOutput 
Get and Set the External Output state the apply during 
and after the reader boots.  ✔✔✔✔  
get InvertExternalOutput 
set InvertExternalOutput 
Turn on or off inversion of the External Outputs. When 
inverted, setting an output high drives its voltage low.  ✔✔✔✔  
get InvertExternalInput 
set InvertExternalInput 
Turn on or off inversion of the External Inputs. When 
inverted, driving an input voltage high indicates low.  ✔✔✔✔  
TAGLIST COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
get TagList (t)  Get the current list of active tags from the reader.  ✔✔✔✔✔
get PersistTime 
set PersistTime 
Get and Set the persistence time for tags in the 
TagList.  ✔✔✔✔✔
get TagListFormat 
set TagListFormat 
Set and Get the format for TagLists.  ✔✔✔✔✔
get TagListAntennaCombine 
set TagListAntennaCombine 
Specify whether to combine reads of a tag from 
different antennas into one TagList entry.  ✔✔✔✔✔
get TagListCustomFormat 
set TagListCustomFormat 
Specify a custom format for text based TagLists.  ✔✔✔✔✔
Clear TagList  Clear the list of active tags on the reader.  ✔✔✔✔✔

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
32
ACQUISITION COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
get AcquireMode 
set AcquireMode 
Specify how the RFID Reader reads tags.  ✔✔✔✔✔
get AcqCycles 
set AcqCycles 
Specify the number of acquisition cycles to perform 
during each Class1/Gen1 tag read action.  ✔✔✔✔  
get AcqCount 
set AcqCount 
Specify the number of reads to perform in each 
Class1/Gen1 read cycle.  ✔✔✔✔  
get AcqEnterWakeCount 
set AcqEnterWakeCount 
Specify the number of times to Wake tags before each 
Class1/Gen1 acquisition cycle.  ✔✔✔✔  
get AcqExitWakeCount 
set AcqExitWakeCount 
Specify the number of times to Wake tags at the end of 
each Class1/Gen1 acquisition cycle.  ✔✔✔✔  
get AcqSleepCount 
set AcqSleepCount 
Specify the number of  times Class1/Gen1 tags are 
slept, as they are read.  ✔✔✔✔  
get AcqC1Cycles 
set AcqC1Cycles 
Same as AcqCycles.  ✔       
get AcqC1Count 
set AcqC1Count 
Same as AcqCount.  ✔       
get AcqC1EnterWakeCount 
set AcqC1EnterWakeCount 
Same as AcqEnterWakeCount.  ✔       
get AcqC1ExitWakeCount 
set AcqC1ExitWakeCount 
Same as AcqExitWakeCount.  ✔       
get AcqC1SleepCount 
set AcqC1SleepCount 
Same as AcqSleepCount.  ✔       
get AcqG2Cycles 
set AcqG2Cycles 
Specify the number of acquisition cycles to perform 
during each Class1/Gen2 tag read action.  ✔       
get AcqG2Count 
set AcqG2Count 
Specify the number of reads to perform in each 
Class1/Gen2 read cycle.  ✔       
get AcqG2Q 
set AcqG2Q 
Specify the starting "Q" value to use in each 
Class1/Gen2 read cycle.  ✔       
get AcqC0Cycles 
set AcqC0Cycles 
Specify the number of acquisition cycles to perform 
during each Class0 tag read action.  ✔       
get AcqC0Count 
set AcqC0Count 
Specify the number of reads to perform in each Class0 
read cycle.  ✔       
get TagType 
set TagType 
Get and Set a flag indicating which tag types to look for 
– may improve reader performance.  ✔✔✔✔✔
Wake  Wake tags addressed by the Mask settings  ✔✔✔✔  
Sleep  Sleep tags addressed by the Mask settings  ✔✔✔✔  
get Mask 
set Mask 
Get and Set the current tag mask as an array of bytes. 
ALR-9800 also accepts "AcqMask".  ✔✔✔✔  

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
33
AUTONOMOUS MODE COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
get AutoMode 
set AutoMode 
Switch auto mode on and off.  ✔✔✔✔✔
get AutoWaitOutput 
set AutoWaitOutput 
Specify the value of the output pins while in wait mode.  ✔✔✔✔  
get AutoStartTrigger 
set AutoStartTrigger 
Get and Set the trigger that sends the auto mode state 
into working state.   ✔✔✔✔  
get AutoStartPause 
set AutoStartPause 
Get and Set the time to wait after receiving a start 
trigger before starting AutoMode  ✔       
get AutoWorkOutput 
set AutoWorkOutput 
Specify the value of the output pins while in work mode.  ✔✔✔✔  
get AutoAction 
set AutoAction 
Get and Set the action to perform in auto mode.  ✔✔✔✔  
get AutoStopTrigger 
set AutoStopTrigger 
Set and Get the external trigger that will move the auto 
mode state from work mode to evaluate mode.  ✔✔✔✔  
get AutoStopTimer 
set AutoStopTimer 
Set and Get the timer that will move the auto mode 
state from work mode to evaluate mode.  ✔✔✔✔ *
get AutoTrueOutput 
set AutoTrueOutput 
Specify the value of the output pins when the auto 
mode evaluation returns a True condition.  ✔✔✔✔  
get AutoTruePause 
set AutoTruePause 
Set and Get the pause time after the auto mode 
evaluation returns a True condition.  ✔✔✔✔  
get AutoFalseOutput 
set AutoFalseOutput 
Specify the value of the output pins when the auto 
mode evaluation returns a False condition.  ✔✔✔✔  
get AutoFalsePause 
set AutoFalsePause 
Set and Get the pause time after the auto mode 
evaluation returns a False condition.  ✔✔✔✔  
AutoModeTriggerNow  Force a trigger event to occur.  ✔✔✔✔  
AutoModeReset  Reset all auto mode values to their default states.  ✔✔✔✔✔
get AutoModeStatus  Get the current status of auto mode.   ✔✔✔  
* The ALR-9770 also uses the AutoStopTimer value as a time limit on individual 
read operations. See the AutoStopTimer discussion on the following pages for 
more information. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
34
NOTIFY MODE COMMANDS 
Command  Description 
9800 
9780 
8780 
9640 
9770 
get NotifyMode 
set NotifyMode 
Switch notify mode on and off.  ✔ ✔ ✔ ✔  
get NotifyFormat 
set NotifyFormat 
Get and Set the format for TagLists pushed out in notify 
mode.  ✔ ✔ ✔ ✔  
get NotifyHeader 
set NotifyHeader 
Turns on and off the additional header (and footer) lines 
in notification messages.  ✔ ✔ ✔ ✔  
get NotifyAddress 
set NotifyAddress 
Get and Set the address to push TagLists to.   ✔✔✔✔  
get NotifyTime 
set NotifyTime 
Get and Set the time interval for automatically pushing 
TagLists.  ✔✔✔✔  
get NotifyTrigger 
set NotifyTrigger 
Get and Set the trigger for pushing TagLists.  ✔✔✔✔  
get NotifyKeepAliveTime 
set NotifyKeepAliveTime 
The amount of time the reader keeps it's notification 
TCP socket open without communication activity.   ✔✔✔  
get MailServer 
set MailServer 
Set and Get an SMTP mail server. This is only required 
if notification email messages are sent out.  ✔✔✔✔  
get MailFrom 
set MailFrom 
Set and Get the email address of the RFID Reader.   ✔✔✔✔  
get NotifyRetryCount 
set NotifyRetryCount 
Get and Set the number of times a failed network 
notification is repeated.  ✔✔✔✔  
get NotifyRetryPause 
set NotifyRetryPause 
Get and Set the delay between failed network 
notification retries.  ✔✔✔✔  
NotifyNow  Force a message via the notification system.  ✔✔✔✔  
The following sections describe each command category - detailing each 
command, its use and the response formats. 
NOTE:  RFID Reader commands are not case sensitive, that is, you can use 
upper or lower case, or any combination thereof, and the reader will understand 
the command. Capitalization of commands is used in this document and in actual 
command responses solely for the purpose of readability. 
General Commands 
General commands cover basic reader, antenna functions and help & 
information. 
Help (h) 
9800 | 9780 | 8780 | 9640 | 9774 
This command lists all reader commands available. You may also type just the 
letter “h” to send this command. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
35
Info (i) 
9800 | 9780 | 8780 | 9640 | 9774 
This provides a list of current reader settings. You may also type just the letter “i” 
to send this command. 
! 
9800 | 9780 | 8780 | 9640 | 9774 
This command (exclamation mark) asks the reader to repeat the last command 
issued. 
Save 
9800 | 9780 | 8780 | 9640 | 9774 
The Save command writes the current settings to flash memory. This ensures 
that if the reader loses power it will restart in the same state. 
Save Example 
Command 
Response 
>Save 
All settings have been saved to flash! 
Q (Quit) 
9800 | 9780 | 8780 | 9640 | 9774 
 (For Telnet operation only) The Quit command allows you to exit the current 
Telnet session. 
Function 
9800 | 9780 | 8780 | 9640 | 9774 
The standard operating mode of a reader is to read tags. Additional functionality 
exists in the reader to program, lock, erase, and kill tags, but these functions 
must first be enabled. This is done by changing the reader's "Function" attribute 
from "Reader" to "Programmer". Doing so enables these additional programming 
commands, as can be evidenced by observing the new programming commands 
in the Help display (see above). 
To once again disable the programming commands, change the "Function" 
attribute back to "Reader". 
Function Examples 
Command 
Response 
>get Function 
Function = Reader 
Command 
Response 
>set Function = Programmer 
Function = Programmer 
Command 
Response 
>set Function = Reader 
Function = Reader 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
36
ReaderName 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be assigned an arbitrary text name to aid identification in 
multiple-reader environments. This name can be retrieved and changed at any 
time throughout reader operation.  
ReaderName Examples 
Command 
Response 
>get ReaderName 
ReaderName = My First Alien Reader 
Command 
Response 
>set ReaderName = My Second Alien Reader 
ReaderName = My Second Alien Reader 
ReaderType 
9800 | 9780 | 8780 | 9640 | 9774 
The reader type can be retrieved using this command. The resulting text will be a 
single-line reply describing the model number of the reader and related 
information. 
ReaderType Example 
Command 
Response 
>get ReaderType 
ReaderType = Alien RFID Tag Reader, Model: ALR-9780 
(Four Antenna / Class 1 / 915 MHz) 
Command 
Response 
>get ReaderType 
ReaderType = Alien RFID Tag Reader, Model: ALR-9800 
(Four Antenna / Multi-Protocol / 915 MHz) 
ReaderVersion 
9800 | 9780 | 8780 | 9640 | 9774 
The reader version can be retrieved using this command. The resulting text is a 
multi-line reply. Each line of the reply describes the version number of a major 
reader component, as well as some additional locality information. 
  This command is not available when AutoMode is on. The reader 
responds with "Error 27: Invalid context. Command cannot be issued 
while AutoMode is ON". 
ReaderVersion Example 
Command 
Response 
>get ReaderVersion 
Ent. SW Rev: 3.2.02 
Country Code: 01, Reader Type: 03, Firmware Rev: 2.2.21 
Command 
Response 
>get ReaderVersion  (ALR-9770) 
ReaderVersion = Firmware Rev: 2.1.12 (Alien Technology 
v1.04.04, 02/14/05) 
OS Version: Linux 2.4.22-uc0 2005-01-26T12:00:35-0500 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
37
ReaderNumber 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be assigned an arbitrary number to aid identification in multiple-
reader environments. This number can be retrieved and changed at any time 
throughout reader operation. 
  Allowed values for ReaderNumber are 1-255. 
  The default ReaderNumber value is 255. 
ReaderNumber Examples 
Command 
Response 
>get ReaderNumber 
ReaderNumber = 255 
Command 
Response 
>set ReaderNumber = 15 
ReaderNumber = 15 
Uptime 
9800 | 9780 | 8780 | 9640 | 9774 
The Uptime command returns the elapsed time, in seconds, since the last time 
the reader was rebooted. 
Uptime Example 
Command 
Response 
>get Uptime 
Uptime (secs) = 702048 
Username 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be operated over the network. When operated in this mode it 
uses a simple username/password authentication scheme to stop unwelcome 
visitors accessing it. This command allows the username to be defined and 
obtained. 
  A username/password pair is not required when operating the reader via 
serial connection. 
  The default username setting is “alien”  NOTE: The username is case 
sensitive and must be entered in all lowercase. 
Username Examples 
Command 
Response 
>get Username 
Username = alien 
Command 
Response 
>set Username = hal 
Username = hal 
Password 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be operated over the network. When operated in this mode it 
uses a simple username/password authentication scheme to stop unwelcome 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
38
visitors accessing it. This command allows the password to be defined and 
obtained. 
  A username/password pair is not required when operating the reader via 
serial connection. 
  The default password setting is “password” NOTE: The password is case 
sensitive and must be entered in all lowercase. 
Password Examples 
Command 
Response 
>get Password 
Password = password 
Command 
Response 
>set Password = 1234fab 
Password = 1234fab 
MaxAntenna 
9800 | 9780 | 8780 | 9640 | 9774 
To determine the maximum addressible antenna port of the reader, use the get 
MaxAntenna command. Antenna ports are numbered starting at zero, so the 
actual number of ports is one more than the MaxAntenna value. A reader with 
four antenna ports returns a MaxAntenna of 3. Similarly, a reader with only two 
antenna ports returns a MaxAntenna of 1. 
  This command is not available when AutoMode is on. The reader 
responds with "Error 27: Invalid context. Command cannot be issued 
while AutoMode is ON". 
MaxAntenna Example 
Command 
Response 
>get MaxAntenna 
MaxAntenna = 3 
AntennaSequence 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can support the use of multiple antennas. This command allows the 
user to select which antenna port(s) to use and in what sequence.  
  If using only one antenna, you will assign just one antenna port 
number. 
  To instruct the reader to cycle through the antenna list during tag 
reads, enter the port designations for all antennas to be used and the 
order in which they should be used. 
  Multiple antennas are specified by passing in a comma-separated list 
as the argument. The default AntennaSequence is 0. 
  This command is not available when AutoMode is on. The reader 
responds with "Error 27: Invalid context. Command cannot be issued 
while AutoMode is ON". 
  Multi-Static antenna readers, such as the ALR-9800 and newer ALR-
8780 readers pair up two antennas as send/receive pairs - #0 and #1 
form one antenna pair, and #2 and #3 form another pair. In these cases, 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
39
the antenna number specified in the AntennaSequence is always the 
transmit antenna. The receive antenna is taken to be the remaining 
antenna of the pair. 
  The ALR-9770 reader recognizes only those antennas that are present 
when the reader boots up. If the antenna configuration is changed, the 
ALR-9770 must be restarted before it will be aware of the new 
configuration. 
AntennaSequence Examples 
Command 
Response 
>get AntennaSequence 
AntennaSequence = 0 
To always use antenna 1: 
Command 
Response 
>set AntennaSequence = 1    
AntennaSequence = 1    
To cycle between 
antenna 0 and antenna 1: 
Command 
Response 
>set AntennaSequence = 0, 1    
AntennaSequence = 0, 1 
To weight antenna 0 more 
than antenna 1: 
Command 
Response 
>set AntennaSequence = 0, 0, 0, 1 
AntennaSequence = 0, 0, 0, 1 
RFAttenuation 
9800 | 9780 | 8780 | 9640 | 9774 
Alien RFID readers output 1 watt of RF power at each antenna. While this power 
is sufficient to provide good penetration and range, these attributes are not 
always desireable. If multiple readers are in the same vicinity, their signals may 
interfere with each other. Also, in situations where tagged product is close 
together, but only on product should be read at a time (a conveyor belt, for 
example), then penetrating power and long range are your enemies. 
Attenuating RF reduces its power, and there are two ways to do this. The first 
method involves placing attenuators inline in the antenna cable. This method is 
quick but is not flexible and, more importantly, reduces both the emitted RF 
power as well as the return signal from the tag, which is already very weak. This 
would impair the reader's ability to detect tags. 
The second method uses software-controlled digital attenuation, built into Alien 
readers. Using the software-controlled digital attenuation reduces the emitted 
power but not the return signal. The RFAttenuation value ranges from 0 (no 
attenuation, maximum power) to 160 (maximum attenuation, minimum power), in 
increments of 10 - each "decade" representing an additional 1 dB of RF 
attenuation. 
  The default value for RFAttenuation is 0. 
  RFAttenuation can range from 0 to 160. 
  Increasing RFAttenuation by 10 reduces RF power by 1 dB. 
  Changes take effect immediately. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
40
RFAttenuation Examples 
Command 
Response 
>get RFAttenuation 
RFAttenuation = 0 
Command 
Response 
>set RFAttenuation = 30 
RFAttenuation = 30 
FactorySettings 
9800 | 9780 | 8780 | 9640 | 9774 
The FactorySettings command will reset all reader settings to their factory default 
values, and then reboot the reader. The reboot is required in order for the new 
settings (especially network values) to take effect. 
FactorySettings Examples 
Command 
Response 
>FactorySettings 
All settings have been reset ! 
Rebooting System... 
Reboot 
9800 | 9780 | 8780 | 9640 | 9774 
The Reboot command causes the reader to immediately close all network 
connections and reboot. 
  It is recommended that you reboot the reader any time network 
configuration parameters are changed. 
  The ALR-9770 reader may also be rebooted via its web interface. 
Browse to the reader’s IP address in a web browser, click the Restart link 
on the left side of the page and follow the provided instructions. 
Reboot Examples 
Command 
Response 
>Reboot 
Rebooting System... 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
41
Network Configuration Commands 
These commands allow you to configure and retrieve settings related to reader 
communications with the network. 
MACAddress 
9800 | 9780 | 8780 | 9640 | 9774 
The MAC (Media Access Control) Address is a unique, hardcoded value that 
identifies each device with a network interface. The reader's MAC Address can 
be retrieved with the get MACAddress command. 
The value returned is a sequence of six hex bytes, separated by colons. 
MACAddress Example 
Command 
Response 
>get MACAddress 
MACAddress = 00:90:c2:c3:14:38 
DHCP 
9800 | 9780 | 8780 | 9640 | 9774 
The reader supports automatic network configuration using the widely available 
DHCP protocol. If DHCP is available at the reader installation site, this protocol 
can be switched on. If DHCP is not available or not desired the use of this 
protocol can be switched off.  
  Valid command parameters are ON and OFF. 
  The default setting is ON. 
  After making changes with this command, you must save and reboot the 
reader to implement the changes. 
DHCP Examples 
Command 
Response 
>get DHCP 
DHCP = ON 
Command 
Response 
>set DHCP = OFF 
DHCP = OFF 
IPAddress 
9800 | 9780 | 8780 | 9640 | 9774 
If DHCP is not used for automatic configuration, the reader must be manually 
configured for use on a network. The IPAddress command allows you to assign 
and retrieve the host’s IP address. 
  DHCP must be off in order to change the IPAddress. 
  After making changes with this command, you must save and reboot the 
reader to implement the changes. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
42
IPAddress Examples 
Command 
Response 
>get IPAddress 
IPAddress = 12.34.56.78 
Command 
Response 
>set IPAddress =34.55.33.12 
IPAddress = 34.55.33.12 
Gateway 
9800 | 9780 | 8780 | 9640 | 9774 
If DHCP is not used for automatic configuration, the reader must be manually 
configured for use on a network. The gateway command allows the network 
gateway to be assigned and retrieved. 
  Gateway must be specified as a numerical IP address. 
  DHCP must be off in order to change the Gateway. 
  After making changes with this command, you must save and reboot the 
reader to implement the changes. 
Gateway Examples 
Command 
Response 
>get Gateway 
Gateway = 34.56.78.90 
Command 
Response 
>set Gateway=12.56.23.01 
Gateway = 12.56.23.01 
Netmask 
9800 | 9780 | 8780 | 9640 | 9774 
If DHCP is not used for automatic configuration, the reader must be manually 
configured for use on a network. The subnet mask command pair allow the 
subnet mask to be assigned and retrieved.  
  A subnet mask must be specified as a numerical IP address. 
  DHCP must be off in order to change the Netmask. 
  After making changes with this command, you must save and reboot the 
reader to implement the changes. 
Netmask Examples 
Command 
Response 
>get Netmask 
Netmask = 255.255.255.128 
Command 
Response 
>set Netmask=255.255.255.0 
Netmask = 255.255.255.0 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
43
DNS 
9800 | 9780 | 8780 | 9640 | 9774 
If DHCP is not used for automatic configuration, the reader must be manually 
configured for use on a network. The DNS command pair allow the DNS server 
location to be assigned and retrieved.  
  A DNS server must be specified as a numerical IP address. 
  DHCP must be off in order to change the DNS. 
  After making changes with this command, you must save and reboot the 
reader to implement the changes. 
DNS Examples 
Command 
Response 
>get DNS 
DNS = 12.34.56.78 
Command 
Response 
>set DNS=45.224.124.34 
DNS = 45.224.124.34 
NetworkTimeout 
9800 | 9780 | 8780 | 9640 | 9774 
When the reader receives a command on its Command port, it opens a TCP 
socket and waits for data to arrive. If inbound communication ceases, rather than 
hold the socket open indefinitely the reader waits a period of time then 
automatically closes the connection, ignoring any partial command it may have 
already received. This time period is the NetworkTimeout. 
  The NetworkTimeout is specified in seconds 
  The default value is 90 seconds 
NOTE: Changes made with this command will take effect immediately. 
NetworkTimeout Examples 
Command 
Response 
>get NetworkTimeout 
NetworkTimeout = 90  
Command 
Response 
>set NetworkTimeout = 120 
NetworkTimeout = 120 
Example Behavior 
(using Telnet) 
>set NetworkTimeout = 5 
NetworkTimeout = 5 
>(wait more than 5 seconds) 
Connection Timeout. 
Closing Connection…Bye! 
(Telnet session ends) 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
44
CommandPort 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be configured and operated over the network using standard 
network sockets. The CommandPort settings are used to assign and retrieve the 
exact port number used by the reader for this network connectivity. 
  The default setting for this command is 23 (the standard Telnet port) 
  Changes to this setting do not affect serial communication and/or Web 
communication with the reader. 
CommandPort Examples 
Command 
Response 
>get CommandPort 
CommandPort = 23 
Command 
Response 
>set CommandPort=10004 
CommandPort = 10004 
HeartbeatPort 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be configured to periodically send out a heartbeat message to 
the network. This heartbeat takes the form of a single UDP packet (Universal 
Datagram Packet) broadcast out to the entire subnet or a particular address.  
The Set HeartbeatPort command allows you to configure the actual port number 
that this packet is sent out to.  
Listening for this heartbeat can be used to initially locate a reader on a network 
and subsequently make sure that the reader is still alive.  
  The default port setting for this command is 3988 
  Changes made with this command take effect immediately. 
The format of the UDP packet is a single XML document detailing the reader:  
<Alien-RFID-Reader-Heartbeat> 
  <ReaderName>Alien RFID Reader</ReaderName> 
 <ReaderType> 
    Alien RFID Tag Reader, Model: ALR-9780 
    (Four Antenna / Class 1 / 915Mhz) 
 </ReaderType> 
 <IPAddress>10.1.60.5</IPAddress> 
 <CommandPort>23</CommandPort> 
 <HeartbeatTime>30</HeartbeatTime> 
</Alien-RFID-Reader-Heartbeat> 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
45
HeartbeatPort Examples 
Command 
Response 
>get HeartbeatPort 
HeartbeatPort = 3004 
Command 
Response 
>set HeartbeatPort=10002 
HeartbeatPort = 10002 
HeartbeatTime 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be configured to periodically send out a heartbeat message to 
the network. This heartbeat takes the form of a single UDP packet (Universal 
Datagram Packet) broadcast out to the entire subnet or a particular address.  
The time interval between heartbeats can be assigned and retrieved using this 
command. 
  All intervals are specified in seconds.  
  A setting of zero (seconds) will suspend the output of any further 
heartbeats. 
  The default setting for this command is 30 seconds. 
  Changes made with this command take effect immediately. 
HeartbeatTime Examples 
Command 
Response 
>get HeartbeatTime 
HeartbeatTime = 30 
Command 
Response 
>set HeartbeatTime=60 
HeartbeatTime = 60 
HeartbeatAddress 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can be configured to periodically send out a heartbeat message to 
the network. This heartbeat takes the form of a single UDP packet (Universal 
Datagram Packet) broadcast out to the entire subnet or a particular address.  
The address of the host to receive these packets is defined by the 
HeartbeatAddress command. 
  The default value 255.255.255.255 is a special "multicast" address, 
which enables all devices on the subnet to receive the packets.  
  Changes made with this command take effect immediately. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
46
HeartbeatAddress Examples 
Command 
Response 
>get HeartbeatAddress 
HeartbeatAddress = 255.255.255.255 
Command 
Response 
>set HeartbeatAddress =10.1.70.17 
HeartbeatAddress = 10.1.70.17 
HeartbeatCount 
9800 | 9780 | 8780 | 9640 | 9774 
The HeartbeatCount property specifies how many heartbeat messages the 
reader broadcasts after it boots. After this point the reader stops sending 
heartbeat messages until the HeartbeatCount is changed, or the reader is 
rebooted.  
  The range of values for HeartbeatCount is –1 to 65535. 
  The default value of  –1 indicates that the reader should send heartbeat 
messages indefinitely.  
HeartbeatAddress Examples 
Command 
Response 
>get HeartbeatCount 
HeartbeatCount = -1 
Command 
Response 
>set HeartbeatCount = 5 
HeartbeatCount = 5 
Time Commands 
The time at which tags are read by a reader is particularly important for many 
applications. For this reason, the reader has three time commands to ensure that 
the onboard real-time clock is always set accurately. 
TimeServer 
9800 | 9780 | 8780 | 9640 | 9774 
The reader uses the Internet to accurately set its internal clock every time it is 
rebooted. The protocol it uses is called the Daytime Protocol (RFC-867) which 
typically returns the time in UTC format.  
In order to use this feature, a TimeServer must be specified. This is the network 
address of a machine that is constantly running the Daytime Protocol. In the US 
there are a number of machines owned and operated by the Government 
explicitly providing the time and date to Internet users.  
  By default the reader is configured to connect to one of these machines 
on boot-up to get the current time. 
  For a more in-depth description of this server, and a list of other publicly 
accessible Daytime Protocol Servers, see: 
http://www.boulder.nist.gov/timefreq/service/its.htm 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
47
  The default setting for this command is 132.163.4.101, a primary NIST 
network time server. Some alternative time servers are: 
time-a.nist.gov  /  129.6.15.28 
time-b.nist.gov  /  129.6.15.29 
time.nist.gov  /  192.43.244.18 
  After making changes with this command, you must save and reboot the 
reader to implement the changes. 
TimeServer Examples 
Command 
Response 
>get TimeServer 
TimeServer = 129.6.15.28 
Command 
Response 
>set TimeServer = 129.6.15.28 
TimeServer = 129.6.15.28 
TimeZone 
9800 | 9780 | 8780 | 9640 | 9774 
These commands allow the current time zone to be assigned to or retrieved from 
the reader. The time zone specifies the number of hours that must be added to or 
subtracted from UTC (Coordinated Universal Time; also known as GMT or Zulu) 
to determine a local time reference.  
For example, to convert from UTC to Pacific Standard Time, set the TimeZone to 
–8. To convert from UTC to Pacific Daylight Time, set the TimeZone to –7.  
  The default setting for this command is -7 hours (Pacific Daylight Time) 
because PDT is UTC time minus 7 hours. 
  For more information about time zones, servers and UTC, refer to the 
Website listed under the Get/Set TimeServer command. 
  Changes made with this command will take effect immediately. 
The TimeZone parameter is only useful if the TimeServer is used to automatically 
set the system clock. In this case, the TimeServer always retrieves the time in 
UTC format and will need to be offset to reflect local time using this parameter. 
TimeZone Examples 
Command 
Response 
>get TimeZone 
TimeZone = -8   
Command 
Response 
>set TimeZone = 3 
TimeZone = 3 
The TimeServer is only used once when the reader is booted up. A message in 
the boot sequence (sent out to the serial console) indicates success or failure of 
this option.  
For example, a successful boot sequence will report the following messages to 
the serial console: 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
48
Booting Alien RFID Reader 
Boot> Boot Level 1 (Console Communication) : Success 
Boot> Boot Level 2 (Reader Communication) : Success 
Boot> Boot Level 3 (Command Set) : Success 
Boot> Boot Level 4 (Tag Manager) : Memory for 1000 Tags 
Boot> Boot Level 5 (Initializing Network Interface) : ... 
Boot> Boot Level 6 (Network) : Success - IP Address is 10.1.60.114 
Boot> Boot Level 7 (Telnet Interface) : Success - Port 23 Ready 
Boot> Boot Level 8 (Network Time Service) : Success - Time Set to 
2003/12/04 12:32:59 
Boot> Ready 
Time 
9800 | 9780 | 8780 | 9640 | 9774 
These commands allow the current time to be assigned to or retrieved from the 
reader. 
  Times used by this command are always specified in local time, as 
defined by the TimeZone command.  
  Times are always specified by the format YYYY/MM/DD hh:mm:ss. 
  Changes made with this command will take effect immediately. 
Time Examples 
Command 
Response 
>get Time 
Time = 2002/6/3 9:23:01  
Command 
Response 
>set Time = 2002/6/3 19:23:01 
Time = 2002/6/3 19:23:01 
External I/O Commands 
These commands allow you to configure and retrieve data from the reader’s 
external input/output pins. 
ExternalInput 
9800 | 9780 | 8780 | 9640 | 9774 
The reader monitors four external input pins, which can subsequently be 
controlled by external proximity detectors and other input devices such as 
“magic-eyes” and magnetic switches. This command allows these external input 
pin values to be obtained. Please refer to the Hardware Setup Guide for pinout 
diagrams. 
  The command returns a single byte result that represents the bitmap of 
the external input pin states. Bit 0 represents the state of input #1, bit 1 
represents the state of input #2, etc. 
  The ALR-9640's input states are inverted, as compared to the other fixed 
readers. This can be rectified by using the InvertExternalInput command. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
49
ExternalInput Examples 
Command 
Response 
>get ExternalInput 
ExternalInput = 2  (i.e., binary "10") 
ExternalOutput 
9800 | 9780 | 8780 | 9640 | 9774 
The reader controls four external output pins, which can subsequently be used to 
control external devices such a doors/gates, security lights, etc. Please refer to 
the Hardware Setup Guide for pinout diagrams. 
With this command you can get or set the external output pin states. The single 
parameter/return value is an integer bitmap representing the states of the 
external output pins.  
  Bit 0 represents the state of output #1, bit 1 represents the state of 
output #2, etc. 
  For example,  to set pin 1 to high and pin 0 on low, use the bitmap of 
2decimal, which translates to 10binary. 
  The ALR-9640's output states are inverted, as compared to the other 
fixed readers. This can be rectified by using the InvertExternalOutput 
command. 
ExternalOutput Examples 
Command 
Response 
>set ExternalOutput = 2 
ExternalOutput = 2 
Command 
Response 
>get ExternalOutput 
ExternalOutput = 2 
InitExternalOutput 
9800 | 9780 | 8780 | 9640 | 9774 
When the reader is powered up, it sets the external output pins to states defined 
by the InitExternalOutput attribute. This gives you the flexibility to choose which 
output pins should default to high, and which output pins should default to low – a 
very important consideration if there are mechanical devices controlled by the 
readers I/O port. 
With this command you can get or set the initial external output pin states. The 
single parameter/return value is an integer bitmap representing the states of the 
external output pins during and after a startup.  
  Bit 0 represents the desired state of output #1, bit 1 represents the 
desired state of output #2, etc. 
  For example,  to set pin 1 to high and pin 0 on low, use the bitmap of 
2decimal, which translates to 0010binary. 
  Changes made with this command take effect during the next reboot. 
  The bitmap that you specify is applied directly to the outputs upon 
startup, without any inversion that may have been set with 
InvertExternalOutput. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
50
InitExternalOutput Examples 
Command 
Response 
>set InitExternalOutput = 7 (0111binary = #1, 2, 3 high, #4 low) 
InitExternalOutput = 7 
Command 
Response 
>get InitExternalOutput 
InitExternalOutput = 7 
InvertExternalInput 
9800 | 9780 | 8780 | 9640 | 9774 
In the default configuration, a high voltage applied to an externa input results in 
an external input reading of "1", or "on". Depending on the electronics of the 
connected device, a high voltage applied to the pin may actually be the result of 
the device being "inactivate" instead of "activate". To accommodate this case and 
avoid possible confusion when examining bitmaps of external input states, 
turning on InvertExternalInput reverses the "sense" of all the external inputs, 
effectively resulting an external input value to be "1" when the pin voltage is 
driven low, and vice versa.. 
  Valid command values are ON and OFF. 
  The default setting is OFF. 
InvertExternalInput Examples 
Command 
Response 
>get ExternalInput 
ExternalInput = 0 
Command 
Response 
>set InvertExternalInput = ON 
InvertExternalInput = ON 
Command 
Response 
>get InvertExternalInput 
InvertExternalInput = ON 
Command 
Response 
>get ExternalInput 
ExternalInput = 15 (inverted value - inputs  haven't changed) 
InvertExternalOutput 
9800 | 9780 | 8780 | 9640 | 9774 
In the default configuration, setting an external output to "1", or "on", causes the 
voltage on that output pin to go high. Depending on the electronics of the 
connected device, a high voltage on the pin may cause that device to "activate" 
or vice versa. To accommodate this case and avoid possible confusion when 
specifying bitmaps of desired external output states, turning on 
InvertExternalOutput reverses the "sense" of all the external outputs, effectively 
causing to pin voltage to go high when the external output is set to "0", and vice 
versa. 
  Valid command values are ON and OFF. 
  The default setting is OFF. 
  When ON, the inversion of output states is applied both in setting and 
getting the pin states. It is therefore a transparent change, unless test the 
voltage on the output pins. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
51
  The state of InvertExternalOutput has no effect on the InitExternalOutput 
during bootup. The pin state defined by InitExternalOutput is applied to 
the output pins regardless of the InvertExternalOutput setting. 
InvertExternalOutput Examples 
Command 
Response 
>get ExternalOutput 
ExternalOutput = 0 
Command 
Response 
>set InvertExternalOutput = ON 
InvertExternalOutput = ON 
Command 
Response 
>get InvertExternalOutput 
InvertExternalOutput = ON 
Command 
Response 
>get ExternalOutput 
ExternalOutput = 15 (inverted value - outputs haven't changed) 
TagList Commands 
TagList commands allow you to retrieve immediate listings of tags that have 
been read and saved by the reader, and to assign and retrieve TagList functional 
parameters. 
Get TagList (t) 
9800 | 9780 | 8780 | 9640 | 9774 
You can retrieve the reader’s stored TagList with the Get TagList command.  
  The maximum number of tags that can be stored in the TagList is 6000 
for the ALR-9800, and 1000 for all other models. 
  "Get TagList" and "t" can be used interchangeably. 
Using the Get TagList to retrieve the stored list only once: 
  If the reader is not in Autonomous Mode, the reader immediately 
performs a full tag search (read and report) and displays its current 
internal TagList. The reply is a multi-line response, with each line listing 
an active tag. If the TagList is empty, the message “(No Tags)” is 
returned.  
  If the reader is in Autonomous Mode,  the reader just returns its 
current internal TagList.  
The format of the data returned by this command is specified using the Set 
TagListFormat command, described below. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
52
TagList Examples 
Command 
Response 
>get TagList 
Tag:8000 8004 0000 003B, Disc:2003/12/04 12:35:11, 
Last:2003/12/04 12:35:11, Count:3, Ant:0 
Tag:8000 8004 9999 0004, Disc:2003/12/04 12:35:11, 
Last:2003/12/04 12:35:11, Count:3, Ant:0 
Command 
Response 
>get TagList 
(No Tags) 
PersistTime 
9800 | 9780 | 8780 | 9640 | 9774 
The PersistTime specifies the length of time a tag’s data will remain in the 
reader’s internal list of active tags. 
  Persist times are specified in seconds.  
  Setting the persist time to a positive number (1-n) establishes a persist 
time of the desired number of seconds 
  A zero persist time (0) guarantees that tags are not stored in the TagList. 
However issuing a get TagList command in Interactive Mode 
returns any tags immediately found even though they won’t be stored in 
the TagList. 
  This command is not available when AutoMode is on. The reader 
responds with "Error 27: Invalid context. Command cannot be issued 
while AutoMode is ON". 
  Setting the persist time to -1 causes the history to build indefinitely until a 
get TagList command is issued; at this point the TagList is returned, 
and then immediately cleared. This is the default setting. 
  The ALR-9770 reader currently only supports a PersistTime of -1. 
The maximum number of tags that can be stored in the TagList is 1000 (the ALR-
9800 can store 6000 tags). Once this tag limit is reached, older tag entries are 
replaced by newer ones. 
PersistTime Examples 
Command 
Response 
>get PersistTime 
PersistTime = -1 
Command 
Response 
>set PersistTime=300 
PersistTime = 300 
TagListFormat 
9800 | 9780 | 8780 | 9640 | 9774 
The Get and Set TagListFormat commands specify the formatting of TagLists. 
The command itself takes a text string as its argument, and can be one of the 
following: 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
53
TagListFormat  Description 
Text  TagLists displayed as plain text messages, one tag ID per 
line. 
Terse  TagLists displayed as plain text messages, one tag ID per 
line, but just ID, count, and antenna, with no labels. 
XML  TagLists are displayed  in XML text format 
Custom  TagLists are displayed in the format described by 
TagListCustomFormat. 
  Text-formatted TagLists take the following form: 
Tag:1115 F268 81C3 C012, Disc:2003/01/21 09:00:51, Last:2003/01/21 
09:00:51, Count:4, Ant:0  
Tag:0100 0100 0002 0709, Disc:2003/01/21 11:00:10, Last:2003/01/21 
11:00:10, Count:6, Ant:0  
Tag:1054 A334 54E1 7409, Disc:2003/01/21 11:50:03, Last:2003/01/21 
11:50:03, Count:2, Ant:0 
The ALR-9800 has an additional field at the end of the Text-formatted 
TagList, specifying the air protocol used to find the tag. The protocol is given 
as a single number: 0 = Class 0, 1 = Class1/Gen1, 2 = Class1/Gen2. 
Tag:0000 0000 0000 0000 0000 0000, Disc: ..., Ant:0, Proto:0 
Tag:A5A5 FFFF 8000 8004 AB12 CD1A, Disc: ..., Ant:0, Proto:1 
Tag:3000 2141 60C0 0400 0000 6013, Disc: ..., Ant:0, Proto:2 
  Terse-formatted TagLists take the following form: 
1115 F268 81C3 C012,4,0  
0100 0100 0002 0709,6,0  
1054 A334 54E1 7409,2,0  
The fields given in the Terse format are: TagID, Reads, Antenna. 
  XML-formatted TagLists take the form: 
<Alien-RFID-Tag-List>  
<Alien-RFID-Tag>  
  <TagID>0102 0304 0506 0709</TagID>  
  <DiscoveryTime>2003/01/17 11:30:01</DiscoveryTime>  
  <LastSeenTime>2003/01/17 11:37:01</LastSeenTime> 
  <Antenna>0</Antenna>  
  <ReadCount>14</ReadCount>  
</Alien-RFID-Tag>  
<Alien-RFID-Tag>  
  <TagID>2283 1668 ADC3 E804</TagID>  
  <DiscoveryTime>2003/01/19 07:01:19</DiscoveryTime>  
  <LastSeenTime>2003/01/19 07:01:19</LastSeenTime >  
  <Antenna>0</Antenna>  
  <ReadCount>1</ReadCount>  
</Alien-RFID-Tag>  
</Alien-RFID-Tag-List>  
The ALR-9800 has an additional element, specifying the air protocol used to 
find the tag. The protocol is given as a brief text string, as follows: 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
54
<Alien-RFID-Tag-List> 
<Alien-RFID-Tag> 
  <TagID>0000 0000 0000 0000 0000 0000</TagID> 
  <DiscoveryTime>2005/05/31 17:39:13</DiscoveryTime> 
  <LastSeenTime>2005/05/31 17:39:13</LastSeenTime> 
  <Antenna>1</Antenna> 
  <ReadCount>22</ReadCount> 
  <Protocol>Class 0</Protocol> 
</Alien-RFID-Tag> 
<Alien-RFID-Tag> 
  <TagID>A5A5 FFFF 8000 8004 6546 6091</TagID> 
  <DiscoveryTime>2005/05/31 17:39:13</DiscoveryTime> 
  <LastSeenTime>2005/05/31 17:39:13</LastSeenTime> 
  <Antenna>0</Antenna> 
  <ReadCount>3</ReadCount> 
  <Protocol>Class 1 Gen 1</Protocol> 
</Alien-RFID-Tag> 
<Alien-RFID-Tag> 
  <TagID>3000 2141 60C0 0400 0000 6013</TagID> 
  <DiscoveryTime>2005/05/31 17:39:13</DiscoveryTime> 
  <LastSeenTime>2005/05/31 17:39:14</LastSeenTime> 
  <Antenna>1</Antenna> 
  <ReadCount>19</ReadCount> 
  <Protocol>Class 1 Gen 2</Protocol> 
</Alien-RFID-Tag> 
</Alien-RFID-Tag-List> 
In all cases the following information is reported per tag: 
  TagID: the 64-bit or 96-bit tag ID. 
  Disc: the time the tag was first read by the reader in the current session. 
  Last: the most recent time the tag was read by the reader in the current 
session. 
  Count: the number of times the tag has been read in the current session. 
  Ant: the antenna port number where the tag was LAST seen. Since the 
ALR-9800 uses separate transmit and receive antennas, the reported 
antenna is the transmit antenna. 
TagListFormat Examples 
Command 
Response 
>get TagListFormat 
TagListFormat = Text 
Command 
Response 
>set TagListFormat = XML 
TagListFormat = XML 
TagListCustomFormat 
9800 | 9780 | 8780 | 9640 | 9774 
The TagListCustomFormat command allows a customized TagList to be defined. 
Once the format has been defined it can be applied by issuing the command 
set TagListFormat = Custom 
The TagListCustomFormat command takes a single text line argument that 
defines how each tag should be represented on-screen. This argument can be 
made up of a mixture of text and tokens, as defined in the table below. The 
maximum length of a custom TagList format definition is 255 characters. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
55
When the RFID Reader is required to print a TagList, the tokens in the custom 
format are replaced with the actual values for each tag. 
Tokens  Description 
%i  Tag ID with a white space between each pair of bytes i.e., 
8000 00FE 8010 2AB7 
%k  Tag ID with no spaces between i.e., 
800000FE80102AB7 
%d  Discovery date of tag, in format YY/MM/DD 
%t  Discovery time of tag, in format hh:mm:ss 
%D  Last Seen date of tag, in format YY/MM/DD 
%T  Last Seen time of tag, in format hh:mm:ss 
%r  Read Count of tags, i.e., how many times the tag has been 
read 
%a  Antenna the tag was last seen at (for the ALR-9800, this is 
the transmit antenna) 
%A  (ALR-9800 only) Receive Antenna where the tag was last 
seen 
%p  (ALR-9800 only) Integer value indicating the tag's protocol 
(0 = Class0, 1 = Class1/Gen1, 2 = Class2/Gen2) 
%P  (ALR-9800 only) String representation of the tag's protocol 
TagListCustomFormat Examples 
Command 
Response 
Get TagList 
>set TagListCustomFormat = Here is a tag %i 
TagListFormat = Here is a tag %i 
Here is a tag 8000 0000 0000 0808 
Here is a tag 102F ED3D 0303 0001 
Command 
Response 
Get TagList 
>set TagListCustomFormat = Tag %k, read %r times from 
antenna %a 
TagListFormat = Tag %k, read %r times from antenna %a 
Tag 8000000000000808, read 3 times from antenna 0 
Tag 102FED3D03030001, read 120 times from antenna 1 
TagListAntennaCombine 
9800 | 9780 | 8780 | 9640 | 9774 
The TagListAntennaCombine command turns on or off the antenna combine 
mode. When TagListAntennaCombine is ON, the reader combines tag IDs into a 
single TagList even if the Ids are read by different antennas. Setting this value to 
OFF forces the TagList to keep multiple copies of a tag ID for each antenna 
where it is seen. 
For example, reading a tag that is visible to both antenna 0 and antenna 1, with 
an AntennaSequence of "0,1", would give the following TagList: 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
56
TagListAntennaCombine = ON 
Tag:8000 8004 2665 8426, Count:2, Ant:1 
TagListAntennaCombine = OFF 
Tag:8000 8004 2665 8426, Count:1, Ant:0 
Tag:8000 8004 2665 8426, Count:1, Ant:1 
  Valid command parameters are ON and OFF 
  The default setting is ON 
TagListAntennaCombine Examples 
Command 
Response 
>get TagListAntennaCombine 
TagListAntennaCombine = ON 
Command 
Response 
>set TagListAntennaCombine = off 
TagListAntennaCombine = OFF 
Clear TagList 
9800 | 9780 | 8780 | 9640 | 9774 
The Clear TagList command instructs the reader to immediately clear its internal 
TagList.  
Clear TagList Examples 
Command 
Response 
>Clear TagList 
TagList has been reset! 
Acquisition Commands 
Acquisition commands allow you to configure the reader's parameters that 
govern how it utilizes the various air protocols to best read a particular tag 
population. 
AcquireMode 
9800 | 9780 | 8780 | 9640 | 9774 
When the reader is called upon to read a tag it does so using the current 
AcquireMode. Currently the allowable modes are as follows:  
AcquireMode  Description 
Inventory  Perform full inventory of multiple tags. 
Global Scroll  Perform fast search for single tag 
The default setting is Inventory. For a detailed description of the different modes, 
please refer to the earlier chapter titled "Tag Fundamentals". 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
57
INVENTORY 
The Inventory acquire mode performs a full anti-collision search on tags in the 
reader’s field of view. This method will locate and distinguish multiple tags in front 
of the reader at the same time.  
GLOBAL SCROLL 
The Global Scroll acquire mode instructs the reader to read a single tag 
repeatedly. This is a very fast tag reading method that is most effective when 
only one tag at a time is expected to be within reader range, as in conveyor belt 
applications. Under such circumstances, the performance for single tag reading 
is considerably faster than repeatedly doing a full tag search using the Inventory 
mode.  
NOTE: If multiple tags are in range of the reader when this mode is used, the 
reader will either select one of the tags (usually the “strongest’” or “loudest”) to 
read and report, or will read none of the tags.  
NOTE: Changes made with this command will take effect immediately. 
AcquireMode Examples 
Command 
Response 
>set AcquireMode = Global Scroll 
AcquireMode = Global Scroll 
Command 
Response 
>set AcquireMode = Inventory 
AcquireMode = Inventory 
TagType 
9800 | 9780 | 8780 | 9640 | 9774 
There are currently five types of tags supported by Alien RFID readers, each 
implementing one of the three EPCglobal air protocols. 
By allowing the reader to ignore certain tag types, the reader can focus its 
attention and spend more time acquire tags at a higher speed. This is 
accomplished by setting the TagType property. The TagType value is a bitmap, 
where each bit enables a certain tag type, as summarized in the following table. 
TagType 
Bit 
Tag 
Enabled 
Air 
Protocol 
9800 
9780 
8780 
9640 
9770 
Bit 1  "Quark"  ✔ ✔ * ✔ ✔
Bit 2  "Omega"  ✔ ✔ * ✔ ✔
Bit 3  "Lepton" 
Class 1 / Gen 1 
✔ ✔ ✔ ✔ ✔
Bit 4  C0  Class 0  ✔ - - - 
✔
Bit 5  C1G2  Class 1 / Gen 2  ✔ - - - - 
Bit 6  reserved         
Bit 7  reserved         
Bit 8  reserved         

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
58
So, a TagType of 3 (011decimal) indicates that the reader is looking only for 
"Quark" and "Omega" tag types. Similarly, a TagType of 7 indicates it is looking 
for all Class 1 / Gen 1 tag types, and a TagType of 4 indicates it is only looking 
for "Lepton" tags. To enable Class 0 tags only, ensure bit #4 is on, which 
corresponds to a TagType of 8. Similarly, TagType of 16 enables Class 1 / Gen 2 
tags.  
  The allowable range of values for TagType depends on the capabilities 
of the reader. For the ALR-9780, 8780, and 9640 the range is 1-7. For 
the ALR-9770 the range is 1-15, and for the ALR-9800 the range is 1-31. 
  The ALR-8780 is only designed to read Lepton tags, so a TagType of 4 
should be used for this reader. 
TagType Examples 
Command 
Response 
>set TagType = 3 
TagType = 3 
Command 
Response 
>get TagType 
TagType = 3 
AcqCycles 
9800 | 9780 | 8780 | 9640 | 9774 
AcqCycles takes a single integer parameter between 1 and 255. It is the number 
of acquisition cycles that are performed each time the reader scans for Class1 / 
Gen1 tags. 
Note: While this attribute has a maximum value of 255 (as do the other 
acquisition settings), setting them to high values can result in very long 
acquisition times, which may cause the reader to appear non-responsive. For 
example, setting both AcqCycles and AcqCount to 255 causes the reader to 
perform more than 65,000 acquisitions when it is directed to look for Class1 / 
Gen1 tags. The default value for AcqCycles is 1. 
An acquisition cycle consists of a sequence of repeated wakes, reads, and 
sleeps, depending on the AcqEnterWakeCount, AcqCount, and AcqSleepCount 
parameters (below). 
The AcqCycles parameter controls the "outer loop" of the acquisition cycle, 
described in the "Tag Reading Fundamentals" chapter. Its value has a significant 
impact on the time the reader takes to perform each scan for Class1 / Gen1 tags. 
NOTE: Changes made with this command will take effect immediately. 
AcqCycles Examples 
Command 
Response 
>get AcqCycles 
AcqCycles = 1 
Command 
Response 
>set AcqCycles = 5 
AcqCycles = 5 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
59
AcqC1Cycles 
9800 | 9780 | 8780 | 9640 | 9774 
AcqC1Cycles is an alias for the AcqCycles command. The ALR-9800, being a 
multi-protocol reader, must explicitly call out the specific air protocol to which 
each acquisition parameter applies. 
AcqC1Cycles Examples 
Command 
Response 
>get AcqC1Cycles 
AcqC1Cycles = 1 
Command 
Response 
>set AcqC1Cycles = 5 
AcqC1Cycles = 5 
AcqEnterWakeCount 
9800 | 9780 | 8780 | 9640 | 9774 
AcqEnterWakeCount takes a single integer parameter between 0 and 255. It is 
the number of Wake commands that are issued at the start of each Class1 / 
Gen1 acquisition cycle. The default value for AcqEnterWakeCount is 3. 
The Wake commands act on tags matching the current Tag Mask. 
For example, if AcqEnterWakeCount is set to 10, then ten Wake commands are 
issued at the start of each acquisition cycle. 
If AcqEnterWakeCount is set to zero, no Wake commands are issued. 
NOTE: Changes made with this command will take effect immediately. 
AcqEnterWakeCount Examples 
Command 
Response 
>set AcqEnterWakeCount = 0 
AcqEnterWakeCount = 0 
Command 
Response 
>get AcqEnterWakeCount 
AcqEnterWakeCount = 0 
AcqC1EnterWakeCount 
9800 | 9780 | 8780 | 9640 | 9774 
AcqC1EnterWakeCount is an alias for the AcqEnterWakeCount command. The 
ALR-9800, being a multi-protocol reader, must explicitly call out the specific air 
protocol to which each acquisition parameter applies. 
AcqC1EnterWakeCount Examples 
Command 
Response 
>get AcqC1EnterWakeCount 
AcqC1EnterWakeCount = 1 
Command 
Response 
>set AcqC1EnterWakeCount = 5 
AcqC1EnterWakeCount = 5 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
60
AcqCount 
9800 | 9780 | 8780 | 9640 | 9774 
AcqCount takes a single integer parameter between 1 and 255. It is the number 
of reads (Global Scroll or Inventory) that are performed in each Class1 / Gen1 
acquisition cycle. The default value for AcqCount is 3. 
For example, if AcqCount is set to 10, then ten acquisition commands are issued 
during each acquisition cycle. 
NOTE: Changes made with this command will take effect immediately. 
AcqCount Examples 
Command 
Response 
>set AcqCount = 10 
AcqCount = 10 
Command 
Response 
>get AcqCount 
AcqCount = 10 
AcqC1Count 
9800 | 9780 | 8780 | 9640 | 9774 
AcqC1Count is an alias for the AcqCount command. The ALR-9800, being a 
multi-protocol reader, must explicitly call out the specific air protocol to which 
each acquisition parameter applies. 
AcqC1Count Examples 
Command 
Response 
>get AcqC1Count 
AcqC1Count = 1 
Command 
Response 
>set AcqC1Count = 5 
AcqC1Count = 5 
AcqSleepCount 
9800 | 9780 | 8780 | 9640 | 9774 
AcqSleepCount takes a single integer parameter between 0 and 255. It is the 
number of Sleep commands that are issued after the reader scans for tags in 
each Class1 / Gen1 acquisition cycle. The default value for AcqSleepCount is 1. 
The Sleeps act on the tags that were read in the current acquisition cycle. 
For example, if AcqSleepCount is set to 5, then five Sleep commands are issued 
during each acquisition cycle. 
NOTE: Changes made with this command will take effect immediately. 
AcqSleepCount Examples 
Command 
Response 
>set AcqSleepCount = 5 
AcqSleepCount = 5 
Command 
Response 
>get AcqSleepCount 
AcqSleepCount = 5 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
61
AcqC1SleepCount 
9800 | 9780 | 8780 | 9640 | 9774 
AcqC1SleepCount is an alias for the AcqSleepCount command. The ALR-9800, 
being a multi-protocol reader, must explicitly call out the specific air protocol to 
which each acquisition parameter applies. 
AcqC1SleepCount Examples 
Command 
Response 
>get AcqC1SleepCount 
AcqC1SleepCount = 1 
Command 
Response 
>set AcqC1SleepCount = 2 
AcqC1SleepCount =2 
AcqExitWakeCount 
9800 | 9780 | 8780 | 9640 | 9774 
AcqExitWakeCount takes a single integer parameter between 0 and 255. It is the 
number of Wakes that are issued at the end of all the Class1 / Gen1 acquisition 
cycles. The default value for AcqExitWakeCount is 0. 
For example, if AcqExitWakeCount is set to 10, then ten Wake commands are 
issued after each acquisition cycle. 
NOTE: Changes made with this command will take effect immediately. 
AcqExitWakeCount Examples 
Command 
Response 
>set AcqExitWakeCount = 10 
AcqExitWakeCount = 10 
Command 
Response 
>get AcqExitWakeCount 
AcqExitWakeCount = 10 
AcqC1ExitWakeCount 
9800 | 9780 | 8780 | 9640 | 9774 
AcqC1ExitWakeCount is an alias for the AcqExitWakeCount command. The 
ALR-9800, being a multi-protocol reader, must explicitly call out the specific air 
protocol to which each acquisition parameter applies. 
AcqC1ExitWakeCount Examples 
Command 
Response 
>get AcqC1ExitWakeCount 
AcqC1EnterWakeCount = 0 
Command 
Response 
>set AcqC1ExitWakeCount = 3 
AcqC1ExitWakeCount = 3 
AcqG2Cycles 
9800 | 9780 | 8780 | 9640 | 9774 
AcqG2Cycles takes a single integer parameter between 1 and 255. It is the 
number of acquisition cycles that are performed each time the reader scans for 
Class1 / Gen2 tags. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
62
Note: While this attribute has a maximum value of 255 (as do the other 
acquisition settings), setting them to high values can result in very long 
acquisition times, which may cause the reader to appear non-responsive. For 
example, setting both AcqG2Cycles and AcqG2Count to 255 causes the reader 
to perform more than 65,000 acquisitions when it is directed to look for Class1 / 
Gen2 tags. 
The AcqG2Cycles parameter controls the "outer loop" of the Class1 / Gen2 
acquisition cycle, described in the "Tag Reading Fundamentals" chapter. Its 
value has a significant impact on the time the reader takes to perform each scan 
for tags. 
NOTE: Changes made with this command will take effect immediately. 
AcqG2Cycles Examples 
Command 
Response 
>get AcqG2Cycles 
AcqG2Cycles = 1 
Command 
Response 
>set AcqG2Cycles = 2 
AcqG2Cycles = 2 
AcqG2Count 
9800 | 9780 | 8780 | 9640 | 9774 
AcqG2Count takes a single integer parameter between 1 and 255. It is the 
number of reads (Global Scroll or Inventory) that are performed in each Class1 / 
Gen2 acquisition cycle. 
For example, if AcqG2Count is set to 10, then ten acquisition commands are 
issued during each acquisition cycle. 
NOTE: Changes made with this command will take effect immediately. 
AcqG2Count Examples 
Command 
Response 
>set AcqG2Count = 10 
AcqG2Count = 10 
Command 
Response 
>get AcqG2Count 
AcqG2Count = 10 
AcqG2Q 
9800 | 9780 | 8780 | 9640 | 9774 
AcqG2Q takes a single integer parameter between 0 and 5. It is the starting "Q" 
value used to tune the performance of the Class1/Gen2 air protocol. 
For example, if AcqG2Q is set to 3, then the reader starts looking for tags with Q 
= 3. The reader may tune the active Q value up or down during an inventory, but 
always starts with this value. 
Small Gen2 tag populations benefit from a small Q value (0-1), while larger Gen2 
tag populations benefit from a higher Q value (2-5). 
NOTE: Changes made with this command will take effect immediately. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
63
AcqG2Q Examples 
Command 
Response 
>set AcqG2Q = 1 
AcqG2Q = 1 
Command 
Response 
>get AcqG2Q 
AcqG2Q = 1 
AcqC0Cycles 
9800 | 9780 | 8780 | 9640 | 9774 
AcqC0Cycles takes a single integer parameter between 1 and 255. It is the 
number of acquisition cycles that are performed each time the reader scans for 
Class0 tags. 
Note: While this attribute has a maximum value of 255 (as do the other 
acquisition settings), setting them to high values can result in very long 
acquisition times, which may cause the reader to appear non-responsive. For 
example, setting both AcqC0Cycles and AcqC0Count to 255 causes the reader 
to perform more than 65,000 acquisitions when it is directed to look for Class0 
tags. 
The AcqC0Cycles parameter controls the "outer loop" of the acquisition cycle, 
described in the "Tag Reading Fundamentals" chapter. Its value has a significant 
impact on the time the reader takes to perform each scan for tags. 
NOTE: Changes made with this command will take effect immediately. 
AcqC0Cycles Examples 
Command 
Response 
>get AcqC0Cycles 
AcqC0Cycles = 1 
Command 
Response 
>set AcqC0Cycles = 2 
AcqC0Cycles = 2 
AcqC0Count 
9800 | 9780 | 8780 | 9640 | 9774 
AcqC0Count takes a single integer parameter between 1 and 255. It is the 
number of reads (Global Scroll or Inventory) that are performed in each Class0 
acquisition cycle. 
For example, if AcqC0Count is set to 10, then ten acquisition commands are 
issued during each acquisition cycle. 
NOTE: Changes made with this command will take effect immediately. 
AcqC0Count Examples 
Command 
Response 
>set AcqC0Count = 10 
AcqC0Count = 10 
Command 
Response 
>get AcqC0Count 
AcqC0Count = 10 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
64
Wake 
9800 | 9780 | 8780 | 9640 | 9774 
The Wake command will request all tags in the field to wake up. This command 
is directed by the Mask settings, allowing all tags to be awakened or a subset 
only. 
Wake Examples 
Command 
Response 
>Wake 
Wake = OK 
Sleep 
9800 | 9780 | 8780 | 9640 | 9774 
The Sleep command will request all tags in the field to sleep. A sleeping tag will 
ignore any commands sent to it except the Wake command. This command is 
directed by the Mask settings, allowing all tags to be slept or a subset only. 
Sleep Examples 
Command 
Response 
>Sleep 
Sleep = OK 
Mask 
9800 | 9780 | 8780 | 9640 | 9774 
The Get and Set Mask commands will control the current mask that the reader 
uses. Masks are important in both addressing tags and interrogating them. For a 
detailed description of Masks, please refer to the earlier chapter entitled "Tag 
Reading Fundamentals". 
The Set Mask command takes three parameters: 
  Bit Length of Mask, as a decimal number 
  Bit Pointer of Mask, as a decimal number 
  Array of Hex Bytes separated by white spaces 
Note: For the purposes of setting ID masks, tag IDs start at bit 0.  
The Get Mask command takes no parameters but returns the three parameters 
described above. 
Note: Setting the mask to ‘All’ will address all tags currently in the RF field. i.e., 
“set mask= all" 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
65
Mask Examples 
Command 
Response 
>set Mask = all 
Mask (BitLen, BitPtr, XX XX) = All Tags 
Command 
Response 
>set Mask = 8, 0, 03 
Mask (BitLen, BitPtr, XX XX) = 8, 0, 03 
Command 
Response 
>set Mask = 16, 0, 00 03 
Mask (BitLen, BitPtr, XX XX) = 16, 0, 00 03 
Command 
Response 
>get Mask 
Mask (BitLen, BitPtr, XX XX) = 16, 0, 00 03 
If the mask length is not evenly divisible by eight, then the last byte of the mask 
contains the remainder bits, and they are read from that byte from most-
significant-bit to least-significant-bit. For example, to set a mask looking for three 
ones at position 0 in the tag ID, the following would be used: 
 set Mask = 3, 0, E0 
Notice that the mask value specified is E0hex (11100000binary) and not 07hex 
(00000111binary). Matching only three bits off 07hex of would match all zeroes. 
Autonomous Mode Commands 
Autonomous Mode is an operation mode that enables hands-free monitoring of 
tags. Setup requires that you issue a series of configuration commands to the 
reader. These commands detail how and when to read tags, and then when tags 
are found, whom to tell. Once configured, the reader can be left to operate on its 
own.  
For a detailed description of the Autonomous Mode system please refer to 
Chapter 2 of this guide. 
AutoMode 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoMode command turns on or off the auto mode.  
  Valid command parameters are ON and OFF. 
  The default setting is OFF. 
  Changes made with this command take effect immediately. 
AutoMode Examples 
Command 
Response 
>get AutoMode 
AutoMode = ON 
Command 
Response 
>set AutoMode=on 
AutoMode = ON 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
66
AutoWaitOutput 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoWaitOutput specifies the output pin settings to effect while in the wait 
state of Autonomous Mode. The parameter is a bitmap for the four external 
output pins, where a "1" sets a pin to high, and a "0" sets a pin to low. Output pin 
1 is specified by bit 0 in the mask, output pin 2 is specified by bit 1 in the mask, 
etc. 
AutoWaitOutput Examples 
Command 
Response 
>get AutoWaitOutput 
AutoWaitOutput = 0 
Command 
Response 
>set AutoWaitOutput = 3 (sets pins 0 and 1 high) 
AutoWaitOutput = 3 
AutoStartTrigger 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoStartTrigger specifies the external input pins to monitor to cause the 
auto mode to jump from wait state to work state. Triggers can either be a pin 
going from low to high (rising edge) to high to low (falling edge). For each type of 
change, an integer bitmap must be provided to specify the pins to listen for 
changes on.  
The command takes two parameters, a rising edge bitmap and a falling edge 
bitmap.  
AutoStartTrigger Examples 
Command 
Response 
>get AutoStartTrigger 
AutoStartTrigger(rising, falling) = 0, 0 
Command 
Response 
>set AutoStartTrigger =3, 0 
AutoStartTrigger (rising, falling) = 3, 0 
AutoStartPause 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoStartPause is a feature of the ALR-9800 which allows you to tell the 
reader to wait a specified number of milliseconds after receiving a start trigger 
before actually starting. 
This allows you to compensate for situations such as a conveyor, where you wish 
to trigger the reader with a photo-eye, but the photo-eye must be placed some 
distance from the reader. By setting the AutoStartPause to a value close to the 
time between when a package crosses the photo-eye's beam and when it 
reaches the read zone, you eliminate unnecessary RF activity and potential mis-
reads from other tags that may happen to still be in the field. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
67
AutoStartTrigger Examples 
Command 
Response 
>get AutoStartPause 
AutoStartPause = 0 
Command 
Response 
>set AutoStartPause = 150 
AutoStartPause = 150 
AutoWorkOutput 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoWorkOutput specifies the output pin settings to effect while in the work 
state of Autonomous Mode. The parameter is a bitmap for the four external 
output pins, where a "1" sets a pin to high, and a "0" sets a pin to low. Output pin 
1 is specified by bit 0 in the mask, output pin 2 is specified by bit 1 in the mask, 
etc. 
AutoWorkOutput Examples 
Command 
Response 
>get AutoWorkOutput 
AutoWorkOutput =0 
Command 
Response 
>set AutoWorkOutput =3 (sets pins 0 and 1 high) 
AutoWorkOutput =3 
AutoAction 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoAction command specifies the action to perform when running in the 
work mode of auto mode. This can be one of the following options: 
  Acquire (default) 
  None 
Additional AutoAction options are available with the reader is in "Programmer" 
mode (see the Function command): 
  Program 
  Erase 
  Program and Lock 
  Kill 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
68
AutoAction  Description 
None  Perform no action  
Acquire 
Perform an acquire action, as specified by the AcquireMode 
options. This is the default value. 
Program  Programs a tag. Only available when Function = 
Programmer. See programming commands for more 
information. 
Erase  Erases a tag. Only available when Function = Programmer. 
See programming commands for more information. 
Program and Lock  Programs and locks a tag. Only available when Function = 
Programmer. See programming commands for more 
information. 
Kill  Kills a tag. Only available when Function = Programmer. 
See programming commands for more information. 
AutoAction Examples 
Command 
Response 
>get AutoAction 
AutoAction = Acquire 
Command 
Response 
>set AutoAction =Acquire 
AutoAction = Acquire 
AutoStopTrigger 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoStopTrigger specifies the external input pins to monitor to cause the 
auto mode to jump from work state to evaluate state. Triggers can either be a pin 
going from low to high (rising edge) to high to low (falling edge). For each type of 
change, an integer bitmap must be provided to specify the pins to listen for 
changes on.  
The command takes two parameters, a rising edge bitmap and a falling edge 
bitmap. The Reader can only listen for rising edges or falling edges at one time, 
but not both. 
AutoStopTrigger Examples 
Command 
Response 
>get AutoStopTrigger 
AutoStopTrigger(rising, falling) = 0, 0 
Command 
Response 
>set AutoStopTrigger = 3, 0 
AutoStopTrigger (rising, falling) = 3, 0 
AutoStopTimer 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoStopTimer offers an alternative way to jump from work state to evaluate 
state. This is a time based jump, which will happen after the timer period 
specified by this command expires. The parameter is a single time period, 
specified in milliseconds. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
69
If an reader acquisition (which depends mainly on the AcquireCycles and 
AcquireCount attributes) takes longer than the AutoStopTimer value, the 
acquisition will complete before moving to the evaluate state. 
AutoStopTimer Examples 
Command 
Response 
>get AutoStopTimer 
AutoStopTimer(ms) = 0 
Command 
Response 
>set AutoStopTimer = 1000 
AutoStopTimer (ms) = 1000 
AUTOSTOPTIMER AND THE ALR-9770 
In the ALR-9770, the AutoStopTimer plays a dual role – it also specifies the time 
the reader spends performing a single read cycle, whether a single AutoMode 
cycle, or an interactive "get TagList" command. 
The ALR-9770 schedules its allowed tag-acquisition time by first equally dividing 
the AutoStopTimer value among the specified tag protocols, and then dividing 
among the antennas. 
AutoStopTimer 
(ms) 
protocol1 protocol2 
a1  a2  a3  a1  a2  a3 
For all Class 1 tags, the antenna arbitration algorithm is optimized for maximizing 
the read rate of the tags in the field. For Class 0 tags, each antenna is given 
112ms of search time. Thus, time division for antennas within a protocol cannot 
be specified. When specifying the AutoStopTimer for a search over multiple tag 
protocols, it is important to keep in mind the worst case of the multiple protocols. 
To calculate a minimum value for AutoStopTimer, determine which protocol will 
take the longest to read its tag population, then multiply that value by the number 
of protocols and number of antennas. 
AutoStopTimermin =  max( NumTagsClass1*TimePerTagClass1, 
              NumTagsClass0*TimePerTagClass0 
             ) * #Protocols * #Antennas 
  Typical time to read a Class1 tag is 16ms 
  Typical time to read a Class0 tag is 1.4ms 
What happens if the AutoStopTimer is too small? The reader may not search 
using all protocols, and/or it may not have time to search all specified antennas. 
For instance, it is desired to read a mixed population of 20 Class1 and 20 Class0 
tags, on three antennas. If a small timeout is used (250ms), the reader schedules 
its time as follows: 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
70
AutoStopTimer 
(250ms) 
Class 1 
(125ms) 
Class 0 
(224ms) 
a1 
a2 
a3 
a1 
(112ms) 
a2 
(112 ms) 
First, the reader recognizes that it has to use two tag protocols, so it divides the 
allotted 250ms equally among them. It uses the first 125ms to find as many 
Class1 tags as possible on the three antennas. Since Class0 uses a minimum of 
112ms per antenna, it has just enough time to search the first antenna, and start 
looking on the second antenna. The reader does not have time to search the 
third antenna for Class0 tags. (Notice that it does extend the AutoStopTimer long 
enough to finish the current acquisition). 
Using the equation given previously, the minimum value to use for 
AutoStopTimer should be: 
AutoStopTimermin  = max(20*16ms, 20*1.4ms) * 2 * 3 
          = max(320, 28) * 6 
          = 1920 ms 
In this case, the reader schedules its time as follows: 
AutoStopTimer 
(1920ms) 
Class1 
(960ms) 
Class0 
(960ms) 
a1 
a2 
a3 
a1 
320 
ms 
a2 
320 
ms 
a3 
320 
ms 
Now there is plenty of time to read all protocols on all antennas. 
AutoTrueOutput 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoTrueOutput specifies the output pin settings to effect if the evaluate 
mode of Autonomous Mode evaluates to true. The parameter is a bitmap for the 
four external output pins, where a "1" sets a pin to high, and a "0" sets a pin to 
low. Output pin 1 is specified by bit 0 in the mask, output pin 2 is specified by bit 
1 in the mask, etc. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
71
AutoTrueOutput Examples 
Command 
Response 
>get AutoTrueOutput 
AutoTrueOutput = 0 
Command 
Response 
>set AutoTrueOutput = 3 (sets pins 0 and 1 high) 
AutoTrueOutput = 3 
AutoTruePause 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoTruePause specifies a millisecond pause to effect if the autonomous 
evaluation mode evaluates to true. This pause will occur after the 
AutoTrueOutput command has been processed. 
AutoTruePause Examples 
Command 
Response 
>get AutoTruePause 
AutoTruePause(ms) = 0 
Command 
Response 
>set AutoTruePause = 500 
AutoTruePause = 500 
AutoFalseOutput 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoFalseOutput specifies the output pin settings to effect if the evaluate 
mode of Autonomous Mode evaluates to false. The parameter is a bitmap for the 
four external output pins, where a "1" sets a pin to high, and a "0" sets a pin to 
low. Output pin 1 is specified by bit 0 in the mask, output pin 2 is specified by bit 
1 in the mask, etc. 
AutoFalseOutput Examples 
Command 
Response 
>get AutoFalseOutput 
AutoFalseOutput = 0 
Command 
Response 
>set AutoFalseOutput = 3 
AutoFalseOutput = 3 
AutoFalsePause 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoFalsePause specifies a millisecond pause to effect if the autonomous 
evaluation mode evaluates to false. This pause will occur after the 
AutoFalseOutput command has been processed. 
AutoFalsePause Examples 
Command 
Response 
>get AutoFalsePause 
AutoFalsePause (ms) = 0 
Command 
Response 
>set AutoFalsePause = 500 
AutoFalsePause = 500 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
72
AutoModeStatus 
9800 | 9780 | 8780 | 9640 | 9774 
The Get AutoModeStatus command will return an integer representing the 
current state of the auto mode state machine. 
Additionally the status may be followed by an asterisk character (*). If present it 
indicates that a complete auto mode cycle has occurred since the last get 
AutoModeStatus command was issued. Calling this method will always clear the 
* flag. 
The following table details the different states returned: 
AutoModeStatus : States Returned 
0  Auto Mode is OFF 
10  Auto Mode is initializing 
20  Auto Mode is listening for a start trigger 
30  Auto Mode is starting its Action 
40  Auto Mode is processing its Action 
50  Auto Mode is listening for a Stop condition 
60  Auto Mode is entering its evaluation stage 
70  Auto Mode is in its true or false pause stage 
80  Auto Mode is in notify stage 
AutoModeStatus Examples 
Command 
Response 
>get AutoModeStatus 
AutoModeStatus = 0 
Command 
Response 
> Get AutoModeStatus 
AutoModeStatus = 30* 
AutoModeReset 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoModeReset command will reset all auto mode parameters to their 
default values, including setting the auto mode to off.  
AutoModeReset Examples 
Command 
Response 
>AutoModeReset 
All AutoMode settings have been reset ! 
AutoModeTriggerNow 
9800 | 9780 | 8780 | 9640 | 9774 
The AutoModeTriggerNow command will emulate an external IO trigger event to 
effect auto mode. This command will only work if the RFID Reader is already in 
auto mode and is waiting for a start trigger condition. At this point, issuing the 
AutoModeTriggerNow command will be identical to a real external trigger event, 
forcing the auto mode into its action cycle. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
73
AutoModeTriggerNow Examples 
Command 
Response 
>AutoModeTriggerNow 
Auto Mode Triggering Now 
Notify Mode Commands 
The Notify Mode commands are used to set up automated event notification 
either on the expiration of a timer, or triggered off of events that occur with the 
reader is running in Autonomous Mode. 
NotifyMode 
9800 | 9780 | 8780 | 9640 | 9774 
The NotifyMode command turns on or off the notify mode.  
  Valid command parameters are ON and OFF. 
  The default setting is OFF. 
NotifyMode Examples 
Command 
Response 
>get NotifyMode 
NotifyMode = ON 
Command 
Response 
>set NotifyMode = on 
NotifyMode = ON 
NotifyAddress 
9800 | 9780 | 8780 | 9640 | 9774 
The Notify Address command pair specifies where notification messages should 
be sent when they occur and how they should be sent. The form of the address 
determines the method of delivery.  
Currently there are 3 delivery methods supported as shown in the table below: 
NotifyAddress  Description 
user@domain.com 
Send a message via e-mail to the address specified. The 
address is specified in standard email form, i.e., 
user@domain.com 
NOTE: the MailServer parameter must be configured for this 
to work. Optionally the MailFrom parameter can be used. 
hostname:port  Send a message to a specified port on a networked 
machine. The address takes the form “hostname:port.” For 
example, “123.01.02.98:3450” or 
“listener.alientechnology.com:10002” 
serial  Send a message to the serial connection. The word “serial” 
is used as the address. The word is not case sensitive. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
74
NotifyAddress Examples 
Command 
Response 
>get NotifyAddress 
NotifyAddress = 10.1.0.12:4000 
Command 
Response 
>set NotifyAddress = user@msn.com 
NotifyAddress = user@msn.com 
NotifyTime 
9800 | 9780 | 8780 | 9640 | 9774 
The Notify Time commands assign and retrieve the time interval for automatic 
TagList pushing to a listening machine.  
  The time is specified in seconds.  
  If set to zero, the time-based automatic notification is disabled.  
  When set to a positive number of seconds, a standard notification 
message will be sent out each period. 
NotifyTime Examples 
Command 
Response 
>get NotifyTime 
NotifyTime = 30 
Command 
Response 
>set NotifyTime = 30 
NotifyTime = 30 
NotifyTrigger 
9800 | 9780 | 8780 | 9640 | 9774 
The NotifyTrigger command specifies and retrieves the event conditions (other 
than time-based) upon which a notification message is sent out. Notify messages 
can be triggered under any of the following conditions: 
Trigger Name  Meaning 
Add  Send message when new tag is read and added to the 
TagList. 
Remove  Send message when a tag is removed from the TagList. 
Change  Send message when a tag is either added to or removed 
from the TagList. 
True  Send message when the evaluation task of the autonomous 
state loop evaluates to true, typically when tags are added 
to the taglist. 
False  Send message when the evaluation task of the autonomous 
state loop evaluates to false, typically when tags are not 
added to the taglist. 
TrueFalse  Send message when the evaluation task of the autonomous 
state loop evaluates to true or false (i.e. every time). 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
75
NotifyTrigger Examples 
Command 
Response 
>get NotifyTrigger 
NotifyTrigger = Remove 
Command 
Response 
>set NotifyTrigger = add 
NotifyTrigger = Add 
NotifyFormat 
9800 | 9780 | 8780 | 9640 | 9774 
The NotifyFormat parameter specifies the format of any notification message. 
The format may be one of the following: 
NotifyFormat  Description 
Text 
TagLists are sent out as plain text messages, one tag ID per 
line. 
Terse  Similar to the Text format, except TagList data is formatted 
in the terse format. 
XML  TagLists are sent out in XML text format. 
Custom  Similar to the Text format, except TagList data is formatted 
as defined by the TagListCustomFormat command. 
  Text-formatted TagLists take the form: 
#Alien RFID Reader Auto Notification Message  
#ReaderName: Spinner Reader  
#ReaderType: Alien RFID Tag Reader (Class 1 / 915Mhz)  
#IPAddress: 10.1.70.13  
#CommandPort: 23  
#Time: 2003/01/21 12:48:59  
#Reason: TEST MESSAGE  
Tag:8000 8004 0000 003B, Disc:2003/12/04 15:08:59, 
Last:2003/12/04 15:08:59, Count:4, Ant:0 
Tag:8000 8004 9999 0004, Disc:2003/12/04 15:08:59, 
Last:2003/12/04 15:08:59, Count:3, Ant:0  
#End of Notification Message  
  Terse-formatted TagLists take the form: 
#Alien RFID Reader Auto Notification Message  
#ReaderName: Spinner Reader  
#ReaderType: Alien RFID Tag Reader (Class 1 / 915Mhz)  
#IPAddress: 10.1.70.13  
#CommandPort: 23  
#Time: 2003/01/21 12:48:59  
#Reason: TEST MESSAGE  
8000 8004 0000 003B,4,0 
8000 8004 9999 0004,3,0  
#End of Notification Message  
  XML-formatted TagLists take the form: 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
76
<Alien-RFID-Reader-Auto-Notification>  
  <ReaderName>Spinner Reader</ReaderName>  
  <ReaderType> 
      Alien RFID Tag Reader (Class 1 / 915Mhz) 
 </ReaderType>  
  <IPAddress>10.1.70.13</IPAddress>  
  <CommandPort>23</CommandPort>  
  <Time>2003/01/21 12:49:22</Time>  
  <Reason>TEST MESSAGE</Reason>  
 <Alien-RFID-Tag-List>  
  <Alien-RFID-Tag>  
      <TagID>8000 8004 0000 003B </TagID>  
      <DiscoveryTime>2003/12/04 15:08:59</DiscoveryTime>  
      <LastSeenTime>2003/12/04 15:08:59</LastSeenTime> 
   <Antenna>0</Antenna>  
      <ReadCount>4</ReadCount>  
  </Alien-RFID-Tag> 
  <Alien-RFID-Tag>  
      <TagID>8000 8004 9999 0004</TagID>  
      <DiscoveryTime>2003/12/04 15:08:59</DiscoveryTime> 
      <LastSeenTime>2003/12/04 15:08:59</LastSeenTime> 
      <Antenna>0</Antenna>  
      <ReadCount>3</ReadCount>  
  </Alien-RFID-Tag>  
 </Alien-RFID-Tag-List>  
</Alien-RFID-Reader-Auto-Notification> 
NotifyHeader 
9800 | 9780 | 8780 | 9640 | 9774 
The NotifyHeader command turns on or off the header portion of each notification 
message. When the NotifyHeader is turned off, notification messages contain 
only the TagList portion of the message. 
  Valid command parameters are ON and OFF. 
  The default setting is ON. 
NotifyMode Examples 
Command 
Response 
>get NotifyHeader 
NotifyHeader = On 
Command 
Response 
>set NotifyHeader = off 
NotifyHeader = Off 
NotifyKeepAliveTime 
9800 | 9780 | 8780 | 9640 | 9774 
When the reader sends a notification message out over the network, it needs an 
open TCP socket to do so. Opening and closing a socket entails some processor 
and network overhead, and if the notifications are coming out of the reader 
rapidly, this overhead can become a burden that hinders reader responsiveness. 
The NotifyKeepAliveTime attribute sets the amount of time (in seconds) that the 
reader will keep this socket open. For rapid notifications, it may be advantageous 
for the reader to hold the socket open continuously. You do this by setting 
NotifyKeepAliveTime to some value greater than the expected time between 
notifications. 

CHAPTER 4  ALIEN READER PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
77
On the other hand, holding the socket open places a burden on the network. For 
infrequent notifications, it is advantageous to leave the NotifyKeepAliveTime 
small so that the socket is opened only long enough for a single notification to be 
sent out, and is then closed automatically after message delivery. 
  The time can range from 0 to 65535 seconds. 
  The default value is 30 seconds. 
NotifyKeepAliveTime Examples 
Command 
Response 
>get NotifyKeepAliveTime 
NotifyKeepAliveTime (secs) = 30 
Command 
Response 
>set NotifyKeepAliveTime = 90 
NotifyKeepAliveTime (secs) = 90 
MailServer 
9800 | 9780 | 8780 | 9640 | 9774 
The MailServer command pair allow you to define an SMTP (simple mail transfer 
protocol) mail server. This mail server is used only when automatic notification is 
configured (see Notify commands) and is set to use Mail as its delivery method.  
MailServer Examples 
Command 
Response 
>get MailServer 
MailServer = 12.34.56.78 
Command 
Response 
>set MailServer = 45.224.124.34 
MailServer = 45.224.124.34 
MailFrom 
9800 | 9780 | 8780 | 9640 | 9774 
The MailFrom command pair allows you to define the email address associated 
with the RFID Reader. The emails sent out by the RFID Reader will have this 
parameter set in the From: field of the email header.  
MailFrom Examples 
Command 
Response 
>get MailFrom 
MailFrom = AlienRFIDReader 
Command 
Response 
>set MailFrom = reader@mycompany.com 
MailFrom = reader@mycompany.com 
NotifyRetryCount 
9800 | 9780 | 8780 | 9640 | 9774 
If a network notification fails to connect to a host at the specified NotifyAddress, 
the reader will attempt to resend the notification message. Rather than endlessly 
retrying a failed operation (which needlessly consumes reader resources), the 
reader will stop after the number of attempts reaches the NotifyRetryCount. At 
this point the reader turns NotifyMode off. 

ALIEN READER PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
78
  The value can range from 0 to 32767. 
  The default value is 3 retries. 
  The period between retries is given by the NotifyRetryPause (below). 
NotifyRetryCount Examples 
Command 
Response 
>get NotifyRetryCount 
NotifyRetryCount = 3 
Command 
Response 
>set NotifyRetryCount = 0 
NotifyRetryCount = 0 
NotifyRetryPause 
9800 | 9780 | 8780 | 9640 | 9774 
When the reader attempts to send a network notification and fails, it tries again a 
number of times specified by NotifyRetryCount. The time period between these 
retries is specified by the NotifyRetryPause. 
  The value can range from 0 to 32767 seconds. 
  The default value is 10 seconds. 
NotifyRetryPause Examples 
Command 
Response 
>get NotifyRetryPause 
NotifyRetryPause (secs) = 10 
Command 
Response 
>set NotifyRetryPause = 60 
NotifyRetryPause (secs) = 60 
NotifyNow  
9800 | 9780 | 8780 | 9640 | 9774 
The NotifyNow command instructs the reader to send out an immediate 
notification of its TagList to the address currently set by the NotifyAddress 
command. 
NotifyNow Examples 
Command 
Response 
>NotifyNow 
Issuing Notify Trigger... 

CHAPTER 5  TAG PROGRAMMING 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
79
CHAPTER 5 
Tag Programming 
All Alien RFID tags support programmable ID numbers. This chapter describes 
the series of commands required to program EPC-compliant ID codes and user-
defined ID codes into Alien RFID tags, and details some of the physical 
conditions required to carry out successful programming tasks. 
Enabling The Programmer 
By default all Alien RFID Readers are shipped with tag-programming commands 
disabled. Before being able to program tags, these programming commands 
must be enabled. You do this by issuing the following command to the Reader 
via a command-line terminal: 
Alien >set Function = Programmer 
Function = Programmer 
To disable these commands again, issue the following command: 
Alien >set Function = Reader 
Function = Reader 
Once the functions have been enabled, issuing a "Help" command will reveal a 
new suite of commands under the title "Programming" (not all of the commands 
shown are available with all readers): 
>Help 
 . 
 . 
 . 
PROGRAMMING: 
 Get|Set ProgAntenna 
  Set Program Tag 
 Verify Tag 
 Erase Tag 
  Set Lock Tag 
  Set Kill Tag 
  Get|Set ProgramID (for automatic programming) 
  Get|Set ProgramPassCode (for automatic programming) 
 Get|Set ProgReadAttempts 
 Get|Set ProgEraseAttempts 
 Get|Set ProgIncrementOnFail 
 Get|Set ProgAttempts 
Tag Memory Structure 
Knowing the tag memory structure is essential for successfully programming tags 
and using mask commands to acquire subsets of tags. This chapter describes 
the basic memory formats supported by all Alien tag systems. 

TAG PROGRAMMING  CHAPTER 5 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
80
Class I Tags (96-bit) 
"Quark" and "Omega" Class I tags from Alien contain 96 bits of programmable 
memory, of which 64 bits are user-programmable. The remaining 32 bits are 
controlled by the reader to record state and checksum information inside the tag.  
 Checksum EPC Code (or User ID Code)   Lock  PC 
B
yte  0 1  0 1 2 3 4 5 6 7  0  0 
B
it  0-7  8-15  0-7  8-15 16-23 24-31 32-39 40-47 48-55 56-63  0-7  0-7 
Class I 96-bit Tag Memory Structure 
The ID Code memory is address from left to right, where the leftmost bit (the 
Most Significant Bit) is bit 0, and the rightmost bit (the Least Significant Bit) is bit 
63. There is no restriction on the data that resides in this portion of the tag. 
The Checksum is calculated over the 64 bits of the ID Code only. The checksum 
is calculated and programmed into the tag automatically by the reader. This 
checksum is calculated using the CCITT-16 standard.  
The Lock and PassCode (PC) bytes stored at the end of tag memory are used to 
lock a tag and kill a locked tag. Each of these codes takes exactly one byte. The 
user can control the value of the PassCode, passing it in as a parameter to the 
Lock command. The reader takes full control of the Lock byte, allowing it to flag 
the tag as either locked or unlocked. 
Class I Tags (128-bit) 
"Lepton" Class I tags from Alien contain 128 bits of programmable memory, of 
which 96 bits are user-programmable. The remaining 32 bits are controlled by 
the reader to record state and checksum information inside the tag.  
 Checksum EPC Code (or User ID Code)   Lock  PC 
B
yte  0 1  0 1 2 3 … 9 10 11  0  0 
B
it  0-7 8-15  0-7 8-15 16-23 24-31 … 72-79 80-87 88-95  0-7  0-7 
Class I 128-bit Tag Memory Structure 
The ID Code memory is address from left to right, where the leftmost bit (the 
Most Significant Bit) is bit 0, and the rightmost bit (the Least Significant Bit) is bit 
95. There is no restriction on the data that resides in this portion of the tag. 
The Checksum is calculated over the 96 bits of the ID Code only. The checksum 
is calculated and programmed into the tag automatically by the reader. This 
checksum is calculated using the CCITT-16 standard.  
The Lock and PassCode (PC) bytes stored at the end of tag memory are used to 
lock a tag and kill a locked tag. Each of these codes takes exactly one byte. The 
user can control the value of the PassCode, passing it in as a parameter to the 
Lock command. The reader takes full control of the Lock byte, allowing it to flag 
the tag as either locked or unlocked. 

CHAPTER 5  TAG PROGRAMMING 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
81
Class BPT Tags 
Class BPT tags from Alien support 96 bits of programmable ID memory. Unlike 
the Class I tag, all 96 bits are user-addressable and user-programmable. There 
are no prerequisites for the content of this memory space. 
 EPC Code (or User ID Code) 
B
yte  0 1 2 3 4 5 6 7 8 9 10 11 
B
it  0-7  8-15  16-23 24-31 32-39 40-47 48-55 56-63 64-71 72-79 80-87 88-95
Class BPT Tag Memory Structure 
The Class BPT tag does not support Lock or Kill. 
Programming Distance & Power Levels 
Caution:  It is highly recommended that you read and understand this 
section before programming tags. 
The term “programming” as used in this manual refers to the operations that alter 
the tag memory. These include the Erase Tag, Program Tag, Lock Tag and Kill 
Tag commands. These commands are discussed in some detail later in this 
chapter. From the operational and software point of view, programming tag IDs is 
very simple, in most cases requiring just the click of a button or the issuance of 
one command. However, several variables affect programming reliability and 
must be properly addressed in every application. There are three factors under 
your control to assure programming success in any application: application 
software, attenuation, and the physical position of the tags. 
Programming Power 
Programming a tag requires substantially more power than reading a tag. As a 
result, the tag's programming range will be substantially less than its read range.  
Programming commands will affect all tags that receive sufficient power to 
execute the commands. As a result, the tag to be programmed should be 
physically isolated from tags that you do not intend to program. Similarly, you 
should program at the minimum power that will reliably program the tag in the 
given environment, so as not to affect nearby tags. A lower programming power 
requires a shorter physical separation of tags. 
The power received by the tag is determined by the power supplied to the 
antenna, the distance tag is from the antenna, and the level of signal reflections 
from the environment and the object being tagged. Environmental reflections can 
cause local power nulls near the tag, and it will not be programmed due to 
insufficient power. Tag separation from the antenna should be as constant as 
possible, to minimize power variation and to avoid special nulls due to reflection. 
Tag orientation with respect to the antenna should also be controlled. In 
particular, when using a linear antenna the tag should be presented in the same 
orientation as the antenna polarization. The power supplied to the antenna is 
controlled by the use of attenuators to reduce the signal strength. The attenuator 
value is selected based on careful measurements in the environment after other 
variables have been controlled as described above. A variable attenuator is a 
useful tool in setting the final attenuation values. 

TAG PROGRAMMING  CHAPTER 5 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
82
Programming Range 
Alien tags can be programmed over a substantial range. In a free space 
environment with no attenuation and a linear antenna the tag should be set no 
closer than 50 cm (20 in) from the antenna when attempting to program. The tag 
may be placed closer to the antenna but programming reliability may suffer. If 
programming is attempted very close to the antenna, the tag may be 
permanently damaged and rendered un-programmable. Again, your physical 
environment will affect programming results due to power nulls created by 
reflections from the floor, walls, metal structures, etc. When using a circular 
antenna in a free space environment with no attenuator, the tag should be set no 
closer than 50 cm from the antenna when attempting to program. 
Programming Problems 
The most common result of poor programming is that the tag will no longer read 
in Global Scroll or Inventory modes. This is due to the tag memory being erased 
or incompletely programmed. Tags in this state can be read using the Verify Tag 
command and can be programmed using the Program Tag commands. 
Typically, tag erasure without programming success (the Verify Tag command 
will return all 0’s) is caused by insufficient power since the erase process 
requires less energy than the programming process. Power should be increased 
by either decreasing attenuation or moving the tag closer to the antenna and 
repeating the programming process. 
Incompletely programmed tags can be caused by insufficient or excessive 
programming power. Revaluate the tag position and the signal attenuation and 
repeat the programming sequence. 
A step attenuator is a powerful tool in evaluating programming conditions. When 
using the attenuator, set it to the highest value at which you can reliably read the 
tag. You can then step down approximately 10 dB from this value as an estimate 
of the proper attenuation for programming. By varying the attenuator value you 
can optimize programming conditions over the range of the other variables in 
your application. 
Programming Slept Tags 
A common programming mistake is attempting to program a slept tag. A tag may 
be left in a sleep state after reading it, and subsequent attempts to program it 
may fail. This can be remedied by issuing an explicit "Wake" command before 
programming, or by carefully setting the Acquire parameters, AcqSleepCount 
and AcqExitWakeCount. 
When AcqSleepCount is not zero, the reader puts tags to sleep as it reads them, 
making it easier to find other tags in the field. The AcqExitWakeCount property 
allows you to specify a number of Wake commands to be issued after each read 
cycle – waking up the entire tag population that was read in that cycle. If 
AcqExitWakeCount is zero, these Wake commands aren't issued at all, and tags 
may be left in a slept state. 
By either setting AcqSleepCount to zero, or making sure AcqExitWakeCount is 
not zero, you can ensure that tags are not left sleeping. 

CHAPTER 5  TAG PROGRAMMING 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
83
Programming Commands Summary 
Command  Description 
9800 
9780 
8780 
9640 
9770 
Program Tag  Programs a tag with a specified ID.  ✔✔✔✔✔
Erase Tag  Erases a tag.  ✔✔✔✔✔
get ProgAntenna 
set ProgAntenna 
Gets and Sets the antenna on which to issue 
programming commands.  ✔✔✔✔✔
get ProgReadAttempts 
set ProgReadAttempts 
Gets and Sets the number of attempts to verify a tag 
before programming it.  ✔✔✔✔  
get ProgEraseAttempts 
set ProgEraseAttempts 
Gets and Sets the number of attempts to erase a tag 
before programming it.  ✔✔✔✔  
get ProgAttempts 
set ProgAttempts 
Gets and Sets the number of attempts to program a 
tag.  ✔✔✔✔ 
Lock Tag  Locks a tag with a specified PassCode.  ✔✔✔✔ ✔
Kill Tag  Kills a locked tag with a specified PassCode.  ✔✔✔✔ ✔
Verify Tag  Asks a tag to return its entire tag data.  ✔✔✔✔ 
get ProgramID 
set ProgramID 
Gets and Sets the next ID used to program tags while 
in Autonomous Mode (increments upon success).  ✔✔✔✔ 
get ProgramPassCode 
set ProgramPassCode 
Gets and Sets the PassCode used to lock tags while in 
Autonomous Mode.  ✔✔✔✔ 
get ProgIncrementOnFail 
set ProgIncrementOnFail 
Gets and Sets the flag that specifies if the ProgramID 
should increment when a program operation fails.  ✔✔✔✔ 
Program and Erase Functions 
The two most common methods of altering tag memory are the Program Tag and 
Erase Tag commands. These two functions are supported by all Alien RFID tags, 
including Class I and Class BPT systems. 
The Program Tag function programs a user-defined ID into the tag memory. The 
Erase function erases all data in the tag memory, setting all the tag data bytes to 
zero. 
Program Tag 
9800 | 9780 | 8780 | 9640 | 9774 
The Program Tag command allows the user to specify the ID to program into a 
tag. Once the command is issued, the reader verifies the presence of a tag, 
erases it, programs it, then reads back the tag memory to verify that the program 
command worked properly.  
  Tags that are locked cannot be Programmed. 
  The Program Tag command expects you to supply a list of hexadecimal 
bytes separated by spaces, representing the tag memory to program.  

TAG PROGRAMMING  CHAPTER 5 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
84
Program Tag Examples 
Condition  Exactly one tag in field of view. Tag read is strong.  
Program a Class I tag with a new 64-bit ID. 
Command 
Response 
>program tag = 80 00 FF EE 10 00 00 01 
Program Tag = 80 00 FF EE 10 00 00 01 
Condition  Tag on fringe of read range. 
Command 
Response 
>program tag = 80 00 FF EE 10 00 00 01 
Program Tag = Error : No Tag Found. 
Condition  Tag is Locked 
Command 
Response 
>program tag = 80 00 00 00 10 00 00 01 
Program Tag = Error : Tag Is Locked. Cannot Program. 
CLASS I TAGS 
Programming a Class I tag requires 8 or 12 bytes of ID code (depending on tag 
type). The reader automatically calculates the checksum for this ID and programs 
that in addition to the ID code. The lock and PassCode bytes are set to zero. 
CLASS BPT TAGS 
Programming a Class BPT tag requires 12 bytes of ID code. The Class BPT 
does not require a checksum code, and does not support lock and kill. Therefore 
the entire 12 bytes of tag memory are addressable with this command. 
Erase Tag 
9800 | 9780 | 8780 | 9640 | 9774 
The Erase Tag command attempts to erase the memory of a tag in the reader’s 
field of view. A tag affected by this command has its entire tag memory set to 
zero. Once the command is issued, the reader verifies the presence of a tag, 
erases it, then reads back the tag memory to verify that the erase command 
worked properly.  
  The reader erases all tags in the field of the ProgAntenna. 
  Tags that are locked or not programmed cannot be Erased. 
Erase Tag Examples 
Condition  Exactly one tag in field of view. Tag read is strong.  
Erase command will erase memory, setting to all zeros. 
Command 
Response 
>erase tag 
Erase Tag = Success! 
Condition  One or more tags on fringe of read range. 
Command 
Response 
>erase tag 
Erase Tag = Error : No Tag Found. 
Condition  Tag is Locked 
Command 
Response 
>erase tag 
Erase Tag = Error : Tag Is Locked. Cannot Erase. 

CHAPTER 5  TAG PROGRAMMING 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
85
ProgAntenna 
9800 | 9780 | 8780 | 9640 | 9774 
Programming tags requires a controlled, repeatable RF environment (see 
previous section titled, "Programming Distance and Power Levels"), and in most 
cases, programming commands can potentially effect all the tags in the RF field. 
For this reason, rather than using the AntennaSequence to indicate which 
antenna(s) to issue programming commands on, you use the ProgAntenna 
attribute instead. 
All programming commands are issued on the antenna port specified by 
ProgAntenna, regardless of the current AntennaSequence value. 
ProgAntenna Examples 
Command 
Response 
>get ProgAntenna 
ProgAntenna = 0 
Command 
Response 
>set ProgAntenna = 2 
ProgAntenna = 2 
ProgReadAttempts 
9800 | 9780 | 8780 | 9640 | 9774 
When the reader is asked to perform a programming operation, often the first 
step is to verify the presence of a tag in the field. If there is not identifiable tag in 
the field, the reader won't bother continuing with the rest of the operation. The 
ProgReadAttempts attribute specifies the number of attempts the reader should 
make to verify the presence of a tag. 
  The value can range from 1 to 255. 
  The default value is 10. 
ProgReadAttempts is used in the following programming commands: 
  Program Tag 
  Erase Tag 
  Kill Tag 
  Lock Tag 
ProgReadAttempts Examples 
Command 
Response 
>get ProgReadAttempts 
ProgReadAttempts = 10 
Command 
Response 
>set ProgReadAttempts = 5 
ProgReadAttempts = 5 
ProgEraseAttempts 
9800 | 9780 | 8780 | 9640 | 9774 
The ProgEraseAttempts attribute specifies the number of attempts the reader 
should make to erase a tag. This value is used as a parameter in an Erase Tag 

TAG PROGRAMMING  CHAPTER 5 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
86
operation, but is also used in a Program Tag operation, since a tag is erased 
before it is programmed. 
  The value can range from 1 to 255. 
  The default value is 10. 
ProgEraseAttempts is used in the following programming commands: 
  Program Tag 
  Erase Tag 
ProgEraseAttempts Examples 
Command 
Response 
>get ProgEraseAttempts 
ProgEraseAttempts = 10 
Command 
Response 
>set ProgEraseAttempts = 5 
ProgEraseAttempts = 5 
ProgAttempts 
9800 | 9780 | 8780 | 9640 | 9774 
The ProgAttempts attribute specifies the number of attempts the reader should 
make to program a tag during a Program Tag operation. 
  The value can range from 1 to 255. 
  The default value is 3. 
ProgAttempts Examples 
Command 
Response 
>get ProgAttempts 
ProgAttempts = 3 
Command 
Response 
>set ProgAttempts = 5 
ProgAttempts = 5 
Lock and Kill Functions (Class I Only) 
The Class I tags support two additional commands, not yet supported by the 
Class BPT tags. These two functions, called Lock and Kill, provide a rudimentary 
locking scheme to prevent tag memory being overwritten accidentally or on 
purpose. 
Lock Tag 
9800 | 9780 | 8780 | 9640 | 9774 
A tag can be locked to prevent its memory from being changed. Once locked 
there is only one way to change the memory, and that is to Kill the tag. 
  There is no "unlock" command.  

CHAPTER 5  TAG PROGRAMMING 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
87
The Lock Tag command takes one argument: the PassCode, which is a 
hexadecimal byte in the range 00-FF. If the PassCode is not supplied, the 
reader uses 00 be default. This PassCode is required by the Kill command, as 
described below. 
Lock Tag Examples 
Condition  Exactly one tag in field of view. Tag read is strong.  
Lock tag with pass code of 5F. 
Command 
Response 
>lock tag = 5F 
Lock Tag = Success! 
Condition  Tag on fringe of read range, or no valid tags in range 
Command 
Response 
>lock tag = 5F 
Lock Tag = Error : No Tag Found. 
Condition  Tag is already Locked 
Command 
Response 
>lock tag = 5F 
Lock Tag = Error : Tag Is Locked. 
Kill Tag 
9800 | 9780 | 8780 | 9640 | 9774 
The Kill Tag command is used to recover a locked tag, allowing it to be 
programmed again. A locked tag cannot be erased or reprogrammed; the only 
programming operation that can be performed on a locked tag is the Kill Tag 
operation.  
  Kill Tag sets all bytes of tag memory to zero. 
  Kill Tag can only be used on locked tags. 
  There is no "unlock" command.  
To use the Kill Tag command, the full tag ID of the tag to kill must be provided as 
well as the PassCode that was used to lock the tag with. These parameters are 
passed as 9 or 13 (depending on tag type) consecutive hexadecimal numbers 
separated by spaces. 
Kill Examples 
Condition  Exactly one tag in field of view. Tag read is strong.  
Tag ID is 80 00 01 00 02 00 03 00. Locked using pass code 5F. 
Kill Tag command is successful. 
Command 
Response 
>kill tag = 80 00 01 00 02 00 03 00 5F 
Kill Tag = Success! 
Condition  Exactly one tag in field of view. Tag read is strong.  
Tag ID is 80 00 01 00 02 00 03 00. Locked using pass code 5F. 
Kill Tag command fails because PassCode is wrong. 
Command 
Response 
>kill tag = 80 00 01 00 02 00 03 00 1A 
Kill Tag = Error : Kill Failure. 
Once a tag is killed, its memory contents (including CRC bytes) are cleared to all 
zeros, making the tag unreadable. It may then be reprogrammed with a new ID.

READERHOST PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
88
Acquire vs. Verify 
There are two different methods with which to read tags in the field, the Acquire 
mode and the Verify mode. Up to now, when this document referred to "reading 
tags", it meant "Acquire". When programming is taken into consideration, a 
second mode, called "Verify", should be considered. 
The reader acquires tags when the "get TagList" command is issued to the 
reader, or the reader is reading tags in Autonomous Mode. The actual method 
used to acuire the tags in the reader's field is determined by the AcquireMode 
setting. This is typically "Inventory" or "Global Scroll". See chapter 3, "Tag 
Fundamentals", for more details on the differences between these methods. 
Regardless of the actual command issued to read a tag in Acquire mode, the tag 
ID returned is always a fully formed ID code, checked against the checksum for 
any errors. 
This error checking is done by reading the tag ID and calculating its checksum, 
then comparing it to the checksum contained within tag memory. If they are 
equal, the tag ID is presented to the user. However if a discrepancy occurs 
between the checksum and the ID, for example due to a poor air interface 
between the tag and reader, then the tag ID is rejected.  
Any tag IDs presented to the user by the Acquire commands are therefore 
always checked for accuracy.  
Note: A tag that is not programmed correctly will not be validated by the 
Acquire commands and will be rejected when read. 
Note: A tag that has been erased will contain neither a tag ID nor a 
checksum. These tags will also be rejected by Acquire commands. 
The Verify command is used specifically for interrogating the state of a tag that 
may or may not be readable by the Acquire commands. 
Verify Tag 
9800 | 9780 | 8780 | 9640 | 9774 
A Verify Tag command returns the complete tag memory without validating the 
tag ID against the checksum. The tag memory returned by the Verify Tag 
command is not guaranteed to be correct; it may or may not be valid. 
For the Class I tags, the Verify Tag command returns 12 or 16 bytes of memory: 
2 bytes of checksum data, followed by 8 or 12 bytes of tag ID (depending on tag 
type), followed by Lock and PassCode bytes. Verify is unable to return a value 
for a locked tag. (This is to prevent the tag from revealing its PassCode while 
locked). 
  The Verify command returns an error message if the tag is locked. 
  For the Class BPT tags, the Verify command returns the entire 12 bytes 
of tag ID. 
  A Verify command cannot sort multiple tags; it should only be used on 
one tag at a time. 

CHAPTER 4  READERHOST PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
89
There are a number of responses to the Verify Tag command, depending on the 
state of the tag field at the time the command is issued. Examples follow: 
Verify Tag Examples 
Condition  Exactly one tag in field of view. Tag read is strong.  
Verify command returns checksum bytes followed by tag ID 
bytes, followed by lock and PassCode bytes. (Acquire 
commands return just the tag ID of this tag). 
Command 
Response 
>verify tag 
Verify Tag = 235C 8000 0000 1001 0102 0000 
Condition  Exactly one tag in field of view. Tag is erased and has no tag ID 
or checksum programmed into it. (Acquire commands reject this 
tag). 
Command 
Response 
>verify tag 
Verify Tag = 0000 0000 0000 0000 0000 0000 
Condition  No tags in field of view, or multiple tags in field of view. 
Command 
Response 
>verify tag 
Verify Tag = No Tag Detected. 
Condition  Exactly one tag in field of view. Tag read is strong.  But tag is 
locked. Locked tags are prevented from being read by a Verify 
command. (Acquire commands return tag ID of this tag). 
Command 
Response 
>verify tag 
Verify Tag = Programmed Tag. (Locked) 
Condition  A tag is on the fringe of the field, there is excessive noise, or the 
tag is improperly programmed. 
Command 
Response 
>verify tag 
Verify Tag = Tag-Like Signal Detected. 
Programming Tags in AutoMode 
Programming functions are fully supported by the reader's Autonomous Mode of 
operation. Using Autonomous Mode, the user can assign the reader the task of 
programming, erasing, and locking tags. This is done by setting the AutoAction 
attribute to the appropriate action, as described below. 
Two of the AutoMode functions, "Program" and "Program and Lock" require 
some additional values to be specified first, specifically the ProgramID and 
ProgramPassCode. 
ProgramID 
9800 | 9780 | 8780 | 9640 | 9774 
The ProgramID attribute is used in AutoMode when a program operation has 
been selected as the AutoAction, such as "Program" or "Program and Lock". This 
command allows the user to specify the first ID code to program into a tag. Once 
a tag has been successfully programmed, the ID is incremented by one, ready 
for the next tag to be programmed. 
  Value supplied must be an 8- or 12-byte tag ID. 
  The default ProgramID is 00 00 00 00 00 00 00 00. 

READERHOST PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
90
  Value is automatically incremented (in a hexadecimal fashion) upon a 
completion of a successful programming operation. 
ProgramID Examples 
Command 
Response 
>set ProgramID = 01 23 45 67 89 AB CD EF 
ProgramID = 01 23 45 67 89 AB CD EF 
Command 
Response 
>get ProgramID 
ProgramID = 01 23 45 67 89 AB CD EF 
ProgramPassCode 
9800 | 9780 | 8780 | 9640 | 9774 
The ProgramPassCode attribute is used in AutoMode when the AutoAction has 
been set to "Program and Lock". The reader will use the value of 
ProgramPassCode as the PassCode used to lock the ID after successfully 
programming it. 
  Value supplied must be a single byte. 
  The default ProgramPassCode is 0x01. 
ProgramPassCode Examples 
Command 
Response 
>get ProgramPassCode 
ProgramPassCode = 01 
Command 
Response 
>set ProgramPassCode = FF 
ProgramPassCode = FF 
ProgIncrementOnFail 
9800 | 9780 | 8780 | 9640 | 9774 
The ProgIncrementOnFail flag is used in AutoMode when the AutoAction has 
been set to "Program" or "Program and Lock". By default, the reader only 
increments the ProgramID when an AutoMode cycle successfully programs a 
tag. Setting ProgIncrementOnFail to "On" tells the reader to increment the 
ProgramID after every AutoMode cycle. 
  Allowed values are "On" or "Off. 
  The default value for ProgIncrementOnFail is "Off". 
ProgramIncrementOnFail Examples 
Command 
Response 
>get ProgIncrementOnFail 
ProgIncrementOnFail = OFF 
Command 
Response 
>set ProgIncrementOnFail = On 
ProgIncrementOnFail = ON 

CHAPTER 4  READERHOST PROTOCOL 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
91
Autonomous Mode Program 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can automatically program a tag with a new ID in AutoMode, and this 
action can be repeated indefinitely, each time incrementing the ID to use for 
programming, so that groups of tags that were programmed while in AutoMode 
end up with sequential tag IDs. 
To instruct Autonomous Mode to program tags, issue the following command: 
set AutoAction = Program 
Instead of reading tags inside its inner loop (refer to AutoMode state diagram in 
Chapter 2 for details), the reader programs the tag in the field with an ID, 
specified by the ProgramID attribute (see above). 
A successful programming event causes the evaluation stage of Autonomous 
Mode to evaluate to true. A failed programming event evaluates to false. 
Autonomous Mode Program and Lock 
9800 | 9780 | 8780 | 9640 | 9774 
In Autonomous Mode Program and Lock, the reader can automatically program a 
tag with a new ID and then lock it with a PassCode. This event can be repeated 
indefinitely, each time incrementing the ID by one. 
To instruct Autonomous Mode to program and lock tags, issue the following 
command 
set AutoAction = Program and Lock 
Instead of reading tags inside its inner loop (refer to AutoMode state diagram in 
Chapter 2 for details), the reader programs a tag with an ID, as specified by the 
ProgramID attribute), and then locks it with a PassCode, as specified by the 
ProgramPassCode attribute (see above). 
A successful Program and Lock event causes the evaluation state of 
Autonomous Mode to evaluate to true. A failed Program and Lock event 
evaluates to false. 
Autonomous Mode Erase 
9800 | 9780 | 8780 | 9640 | 9774 
The reader can automatically erase a tag in AutoMode, and this action can be 
repeated indefinitely. 
To instruct Autonomous Mode to erase tags, issue the following command: 
set AutoAction = Erase 
Instead of acquiring tags inside its inner loop (refer to AutoMode state diagram in 
Chapter 2 for details), the reader erases tags in the field. 
A successful erase event in causes the evaluation stage of Autonomous Mode to 
evaluate to true. A failed erase event evaluates to false. 

READERHOST PROTOCOL  CHAPTER 4 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
92
Autonomous Mode Kill 
9800 | 9780 | 8780 | 9640 | 9774 
In Autonomous Mode Kill, the reader can automatically kill a tag in its field, with a 
specified PassCode. This event can be repeated indefinitely, each time with a 
new tag. 
To instruct Autonomous Mode to kill tags, issue the following command 
set AutoAction = Kill 
Instead of reading tags inside its inner loop (refer to AutoMode state diagram in 
Chapter 2 for details), the reader kills a tag in its field with a PassCode, as 
specified by the ProgramPassCode attribute (see above). 
A successful Kill event causes the evaluation state of Autonomous Mode to 
evaluate to true. A failed Kill event evaluates to false. 

APPENDIX A DTDS FOR XML DATA STRUCTURES 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
93
APPENDIX A 
DTDs for XML Data Structures 
The reader has the capability to generate three different types of XML-formatted 
documents. This appendix gives a Document Type Definition (DTD) for each of 
these XML documents. 
Heartbeat DTD 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE Alien-RFID-Reader-Heartbeat [ 
  <!ELEMENT Alien-RFID-Reader-Heartbeat (ReaderName, ReaderType, 
            IPAddress, CommandPort, HeartbeatTime, MACAddress?)> 
    <!ELEMENT ReaderName    (#PCDATA)> 
    <!ELEMENT ReaderType    (#PCDATA)> 
    <!ELEMENT IPAddress     (#PCDATA)> 
    <!ELEMENT CommandPort   (#PCDATA)> 
    <!ELEMENT HeartbeatTime (#PCDATA)> 
    <!ELEMENT MACAddress    (#PCDATA)> 
]> 
TagList DTD 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE Alien-RFID-Tag_List [ 
  <!ELEMENT Alien-RFID-Tag_List (Alien-RFID-Tag*)> 
    <!ELEMENT Alien-RFID-Tag (TagID, DiscoveryTime, LastSeenTime, 
              Antenna, ReadCount, Protocol?)> 
      <!ELEMENT TagID         (#PCDATA)> 
      <!ELEMENT DiscoveryTime (#PCDATA)> 
      <!ELEMENT LastSeenTime  (#PCDATA)> 
      <!ELEMENT Antenna       (#PCDATA)> 
      <!ELEMENT ReadCount     (#PCDATA)> 
      <!ELEMENT Protocol      (#PCDATA)> 
]> 
Notification DTD 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE Alien-RFID-Reader-Auto-Notification [ 
  <!ELEMENT Alien-RFID-Reader-Auto-Notification (ReaderName, ReaderType, 
            IPAddress, CommandPort, Time, Reason, StartTriggerLines?, 
            StopTriggerLines?, Alien-RFID-Tag-List)> 
    <!ELEMENT ReaderName (#PCDATA)> 
    <!ELEMENT ReaderType (#PCDATA)> 
    <!ELEMENT IPAddress (#PCDATA)> 
    <!ELEMENT CommandPort (#PCDATA)> 
    <!ELEMENT Time (#PCDATA)> 
    <!ELEMENT Reason (#PCDATA)> 
    <!ELEMENT StartTriggerLines (#PCDATA)> 
    <!ELEMENT StopTriggerLines (#PCDATA)> 
]> 

UPGRADING READER FIRMWARE  APPENDIX B 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
94
APPENDIX B 
Upgrading Reader Firmware 
Occasionally, Alien Technology provides improvements and bug fixes to the 
firmware running inside the reader. These improvements are distributed as a 
firmware upgrade file, which is uploaded to the reader either via a web interface 
to the reader, or using the Gateway Demonstration Software. 
Performing a firmware upgrade typically resets the reader's configuration to a 
default state, so care should be taken to record the reader's state before 
performing the upgrade, then issuing the necessary commands to return the 
reader to its pre-upgrade state. Network settings such as DHCP, IP Address, etc. 
are not affected. 
ALR-9780, ALR-8780, ALR-9640 
These Alien readers require you to use the Gateway Demonstration Software to 
perform firmware upgrades. You should always ensure that you have the latest 
version of the Gateway application, since newer reader firmware code may 
require slightly different handling before or after the upgrade. Using a version of 
the Gateway older than the firmware you are loading may cause you reader to 
become inoperable. 
Please refer to the Demonstration Software Guide accompanying the Gateway 
software for complete instructions on how to perform upgrades using the 
Upgrade Wizard. 
ALR-9800 
The upgrade procedure for the ALR-9800 is still being defined at this time. 
ALR-9770 
To upload new firmware to the ALR-9770, simply browse to the reader's web 
interface using a web browser. You will initially see the screen shown below: 

APPENDIX B  UPGRADING READER FIRMWARE 
READER INTERFACE GUIDE 
DOC. CONTROL  # 8101938-000 REV 05 
95
Click the "Firmware" link to navigate to the Firware Upgrade screen: 
Next, click the "Browse…" button and navigate to the appropriate firmware file 
provided by Alien Technology and click the "Upgrade" button. Leave the "Erase 
contents before installing" and "Revert to factory settings" checkboxes 
unchecked. 
After the file has been uploaded and and installed, you will be asked to restart 
the reader. Do this by clicking the "Restart System" button: 

UPGRADING READER FIRMWARE  APPENDIX B 
  READER INTERFACE GUIDE 
  DOC. CONTROL  # 8101938-000 REV 05  
96
While the reader is restarting (it takes approximately one minute), you will see 
the following screen: 
After the reader restarts, the web interface attempts to reload the Status page. If 
the reader is configured to acquire its network information from a DHCP server, it 
may acquire a new IP address when it restarts, which may cause the Status 
page to not load. Simply browse to the reader's new IP address and verify the 
new firmware by checking the "RadiOS Version" area of the Status page.