Information in this document is subject to change without notice. The software described in this document
is furnished under a license agreement or nondisclosure agreement. The software may be used or copied
only in accordance with the terms of those agreements.
For further information regarding legal and proprietary statements, please go to:
SOFTWARE:www.zebra.com/linkoslegal
COPYRIGHTS:www.zebra.com/copyright
WARRANTY:www.zebra.com/warranty
END USER LICENSE AGREEMENT: www.zebra.com/eula
Terms of Use
Proprietary Statement
This manual contains proprietary information of Zebra Technologies Corporation and its subsidiaries
(“Zebra Technologies”). It is intended solely for the information and use of parties operating and
maintaining the equipment described herein. Such proprietary information may not be used, reproduced,
or disclosed to any other parties for any other purpose without the express, written permission of Zebra
Technologies.
Product Improvements
Continuous improvement of products is a policy of Zebra Technologies. All specifications and designs are
subject to change without notice.
Liability Disclaimer
Zebra Technologies takes steps to ensure that its published Engineering specifications and manuals are
correct; however, errors do occur. Zebra Technologies reserves the right to correct any such errors and
disclaims liability resulting therefrom.
Limitation of Liability
In no event shall Zebra Technologies or anyone else involved in the creation, production, or delivery of the
accompanying product (including hardware and software) be liable for any damages whatsoever
(including, without limitation, consequential damages including loss of business profits, business
interruption, or loss of business information) arising out of the use of, the results of use of, or inability to
use such product, even if Zebra Technologies has been advised of the possibility of such damages. Some
jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so the above
limitation or exclusion may not apply to you.
2
Revision History
Changes to the original guide are listed below:
ChangeDateDescription
-01 Rev A9/21/11Initial release.
-02 Rev A1/18/12Update tables on pages 8, 9, 11, 13, and 14.
-03 Rev A3/31/2015Zebra rebranding.
-04 Rev A2/27/2019Add DS9908R.
-05 Rev A8/23/2021Remove patent-pending wording on page 8.
3
Contents
Terms of Use ................................................................................................................... 2
Example Read - Read Entire EPC Bank ....................................................................... 12
Example Read - Read PC Word ................................................................................... 14
Example Write ............................................................................................................... 17
Example Tag Lock Operation ........................................................................................ 20
Example - Tag Kill Operation ........................................................................................ 22
Example - Read Cache Size ......................................................................................... 23
Example - Clear Tag Cache .......................................................................................... 23
5
About This Document
Introduction
This document describes the host Application Program Interface (API) for the advanced reading and
writing of Radio Frequency Identification (RFID) tags using the Durango RFID Module with the DS9808
Sierra digital scanner and the DS9908R (DS9908 with RFID) imager.
Notational Conventions
The followingconventions are used in this document:
•The
•Bold text is used to highlight the following:
•Bullets (•) indicate:
Consolas font is used to denote code.
•Dialog box, window and screen names
•Drop-down list and list box names
•Check box and radio button names
•Icons on a screen
•Key names on a keypad
•Button names on a screen.
•Action items
•Lists of alternatives
•Lists of required steps that are not necessarily sequential.
•Sequential lists (e.g., those that describe step-by-step procedures) appear as numbered lists.
6
About This Document
Related Documents and Software
The following documents provide more information about the DS9X08 scanners.
•DS9808 Digital Scanner Product Reference Guide, part number 72E-112999-xx
•DS9808R Digital Scanner Product Reference Guide Supplement, part number 72E-132822-xx
•DS9908 Hands-Free Imaging Scanner Product Reference Guide, part number MN-003185--xx.
•DS9908R Hands-Free Imaging Scanner Product Reference Guide Supplement, part number
For the latest version of this guide and all guides, go to: zebra.com/support.
Service Information
If you have a problem with your equipment, contact Zebra Global Customer Support for your region.
Contact information is available at: zebra.com/support
When contacting support, please have the following information available:
•Serial number of the unit
•Model number or product name
•Software type and version number.
Zebra responds to calls by email, telephone or fax within the time limits set forth in support agreements.
If your problem cannot be solved by Zebra Customer Support, you may need to return your equipment for
servicing and will be given specific directions. Zebra is not responsible for any damages incurred during
shipment if the approved shipping container is not used. Shipping the units improperly can possibly void
the warranty.
If you purchased your Zebra business product from a Zebra business partner, contact that business
partner for support.
Provide Documentation Feedback
If you have comments, questions, or suggestions about this guide, send an email to
EVM-Techdocs@zebra.com
.
.
7
Host API for RFID
Overview
DS9808R Corded Hybrid Imager with RFID
The DS9808R is the first combination 1D/2D barcode scanner and RFID reader and the first combination
hand-held/hands-free UHF RFID reader. The DS9808R offers the flexibility to accommodate virtually any
type of data capture application, including support for: 1D and 2D paper and mobile barcodes, mobile
coupons, mobile loyalty cards, mobile boarding passes, PDF417 barcodes, and reading/writing RFID tags.
The read range for the RFID antenna can be adjusted to suit the environment. For example, the RFID read
range in presentation mode can be decreased to prevent inadvertent reading of RFID tags in a nearby
cash-wrap, while the range in hand-held (triggered) mode can be increased to read RFID tags that are
further away.
DS9908R Next Generation Corded Hybrid Imager with RFID
The DS9908R replaces the DS9808R. The DS9908R offers several enhanced features that includes the
following.
•A capacitive touch sensor and accelerometer that work together to instantly switch to hand-held mode
as soon as an associate picks up the scanner. There are no mechanical components to wear out,
providing fail-proof switching throughout the scanner’s life.
•The reader operates with just 5 VDC and does not require an external power supply.
•Built-in RFID data conversion software reports the tags EPC data as:
•Raw - the EPC buffer transmits as a hexadecimal string. This format can include the protocol control
bytes.
•GS1-128 - for GS1 encoded tags. This option converts EPC data to a GS1-128 barcode as per the
GS1 EPC Tag Data Standard.
•EPC URI - the EPC data is represented as a Universal Resource Identifier (URI) as defined in the
EPC Tag Data Standard version 1.11.
•Zebra’s ScanSpeed Analytics provides detailed performance metrics on each barcode captured enabling you to identify and eliminate poor performing barcodes that slow down the checkout process.
You can also view the number of decodes performed in hand-held and hands-free modes to better
understand how associates are using the scanner.
8
Setup
Using with USB OPOS
To use the RFID control with the Zebra Scanner SDK you may use the Scanner WMI Sample Application
(Scanner_WMI_test.exe). Refer to Zebra Scanner SDK for Windows at:
www.zebra.com/scannersdkforwindows
This program offers the “SetAttributes” and “GetAttributes” methods which are needed to access the RFID
attributes. All examples in this document assume you are using this sample application.
The DS9X08R scanner must have a USB cable connection and should be configured with the USB Device
Type set to one of the following:
•USB OPOS Handheld
•IBM Handheld USB
•IBM Table Top USB
Refer to the scanner Product Reference Guides for details and configuration barcodes (see Related
Documents and Software on page 7).
Host API for RFID
.
RSM Attributes for RFID
The RFID API is expressed in a series of RSM attributes.
Table 1 RSM Attributes
Attribute
Number
35001RFID_LAST_TAG_ID‘A’34RThe EPC Tag ID of the last tag
35002RFID_TAG_ID‘A’34WThe EPC Tag ID of the tag to be
35003RFID_BANK‘B’1WDesired Tag Bank:
35004RFID_DATA‘A’66RWBuffer for read, write, and lock
35005RFID_OFFSET‘W’2WWord offset into tag buffer
35006RFID_LENGTH‘W’2WWords of data to read from tag
35007RFID_PASSWORD‘A’4WBinary password for privileged
Attribute Name
RSM
Type
Size
(Bytes)
AccessDescroption
reported. (size-encoded binary)
operated upon. (size-encoded
binary)
0 = reserved,
1 = EPC,
2 = TID,
3 = User
(size-encoded binary)
buffer. 0 means entire bank
operations
9
Host API for RFID
Table 1 RSM Attributes (Continued)
Attribute
Number
35008RFID_COMMAND‘B’1WExecute command:
35009RFID_CMD_STATUS ‘W’2RResulting status from executing a
35010RFID_TAG_CACHE‘W’2RWInternal Tag Cache Size:
For size-encoded binary data, the first two bytes contain the length (MSB, LSB) for the data to be
considered (needed because the RSM attributes are fixed size).
Attribute Name
RSM
Type
Size
(Bytes)
RFID_LAST_TAG_ID – Last Reported Tag
As a convenience, the RFID_LAST_TAD_ID may be used to get the raw EPC of the last tag reported by
normal tag reading operation of the D9x08R (normally for an RFID_READ event, the scanner issues a
2-tone beep).
AccessDescroption
1 = Read
2 = Write
3 = Lock
4 = Kill
command
Read for current cache size
Write 0 to clear the cache
As an example, to get the RFID_LAST_TAD_ID attribute after the scanner reports the tag
3005FB63AC1F3681EC880469.
All operations (read, write, kill, lock) return a status in the RFID_CMD_STATUS attribute:
0x0000Success
0x0001No RFID module
0x0002Tag Not Found
0x0003Timeout
0x0004Tag CRC Error
0x01xxTag Backscatter Error, LSB indicates the error_code as per EPC
Protocol
0x02xxTag Access error. LSB indicates the error code
0x03xxBad Parameter, the LSB indicates which parameter:
1 = Command
2 = Tag_ID
3 = Bank
4 = Data
5 = Offset
6 = Password
7 = Length
RFID_COMMAND
The RFID_COMMAND attribute is used to execute the various tag operations. Each operation has
parameter attributes that should be setup prior to executing the command.
Tag Read Operation
The Tag Read operation requires the following attributes to be set using RSM SetAttributes:
Attribute NumberAttributeDescription
35002RFID_TAG_IDEPC code of desired tag.
35003RFID_BANKDesired memory bank of tag.
35005RFID_OFFSETWord offset into the memory bank.
35006RFID_LENGTHNumber of words to read.
35007RFID_PASSWORDOptional access password.
35008RFID_COMMAND1 = Read.
The Tag Read operation is activated by the SetAttribute of the RFID_COMMAND attribute.
The result of the operation may be retrieved by the RSM GetAttributes of the following attributes. If the
RFID_CMD_STATUS attribute indicates success, then the RFID_DATA attribute will have the requested
data.
11
Attribute NumberAttributeDescription
35009RFID_CMD_STATUSResulting status from the read.
35004RFID_DATABuffer for read.
Example Read
Table 2 is an example to read the entire EPC bank of the tag with EPC of 3005FB63AC1F3681EC880469.
The password is required for the Tag Kill operation and must match the kill password of the tag (bytes 0-3
of the reserved bank). Note that, as per the EPC protocol spec, if the kill password is zero the tag cannot
be killed.
The Tag Kill operation is activated by the SetAttribute of the RFID_COMMAND attribute.
The result of the operation may be retrieved by the RSM GetAttributes of the RFID_CMD_STATUS
attribute.
Attribute NumberAttributeDescription
35009RFID_CMD_STATUSResulting status from the Kill
Host API for RFID
Example Tag Kill Operation
Table 6 is an example to kill the tag with EPC of 3005FB63AC1F3681EC880469, assuming the kill
password (bytes 0-3 of the reserved bank) is 0x12345678.
As a diagnostic tool, the RFID_TAG_CACHE may be used to read the current tag cache size or to flush the
tag cache. Reading this attribute returns the current number of the unique RFID tags in the cache. Writing
any value to this attribute causes the cache to be cleared (flushed).
NOTE:
Use caution when clearing the tag cache as all tags in range will be read on the very next inventory. If
automatic reading is enabled, this will be immediately.