Alien Technology ALR9800 RFID Reader User Manual Guide Reader Interface

Alien Technology Corporation RFID Reader Guide Reader Interface

Contents

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 iAlien 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 iiiAntennaSequence ................................................................................................................................ 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  ivMask ..................................................................................................................................................... 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 vAcquire 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 1CHAPTER 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 3Communicating 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 5ixp1      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 7To 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 9CHAPTER 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  10Serial 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 FFA48000 0100 8820 3F028000 0400 0232 3F068020 0150 2057 3F128000 0200 8020 3F168000 0100 8820 3F09New tags detected are added to the TagList.Reader TagList... All 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 Expiredor AutoStopTrigger?Evaluation(New Tag? Programmed?)True Evaluation(AutoTrueOutput)False Evaluation(AutoFalseOutput)AutoTruePause Expired?AutoFalsePause Expired?Notification Needed?Issue NotificationnonononoAutoStartPause Expired?(ALR-9800)nono
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  16PersistTime 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 17AutoModeReset 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  18NotifyTrigger 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  20XML-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 21CHAPTER 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 Antenna Designs.
TAG FUNDAMENTALS  CHAPTER 3    READER INTERFACE GUIDE   DOC. CONTROL  # 8101938-000 REV 05  22Acquisition 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 23that 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  24mechanism 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 Byte  0 1  0 1 2 3 4 5 6 7  0  0 Bit  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 25where 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  26CHAPTER 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 HyperTerminal
CHAPTER 4  ALIEN READER PROTOCOL READER INTERFACE GUIDE DOC. CONTROL  # 8101938-000 REV 05 27Overview 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  28Suppressing 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 29Command 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  30NETWORK 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 31EXTERNAL 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  32ACQUISITION 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 33AUTONOMOUS 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  34NOTIFY 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 35Info (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  36ReaderName 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 37ReaderNumber 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  38visitors 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 39the 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 41Network 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  42IPAddress 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 43DNS 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  44CommandPort 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 45HeartbeatPort 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  46HeartbeatAddress 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  48Booting 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 49ExternalInput 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  52TagList 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 53TagListFormat  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 55When 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  56TagListAntennaCombine = 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 57INVENTORY 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  58So, 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 59AcqC1Cycles 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  60AcqCount 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 61AcqC1SleepCount 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  62Note: 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 63AcqG2Q 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  64Wake 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 65Mask 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  66AutoWaitOutput 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 67AutoStartTrigger 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  68AutoAction  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 69If 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 71AutoTrueOutput 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  72AutoModeStatus 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 73AutoModeTriggerNow 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  74NotifyAddress 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 75NotifyTrigger 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 79CHAPTER 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  80Class 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 Byte  0 1  0 1 2 3 4 5 6 7  0  0 Bit  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 Byte  0 1  0 1 2 3 … 9 10 11  0  0 Bit  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 81Class 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) Byte  0 1 2 3 4 5 6 7 8 9 10 11 Bit  0-7  8-15  16-23 24-31 32-39 40-47 48-55 56-63 64-71 72-79 80-87 88-95Class 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  82Programming 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 83Programming 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  84Program 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 85ProgAntenna 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  86operation, 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 87The 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.
READERHOST 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  READERHOST PROTOCOL READER INTERFACE GUIDE DOC. CONTROL  # 8101938-000 REV 05 89There 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.
READERHOST 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  READERHOST PROTOCOL READER INTERFACE GUIDE DOC. CONTROL  # 8101938-000 REV 05 91Autonomous 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.
READERHOST PROTOCOL  CHAPTER 4    READER INTERFACE GUIDE   DOC. CONTROL  # 8101938-000 REV 05  92Autonomous 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 93APPENDIX 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  94APPENDIX 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.

Navigation menu