AdvanReader-160
Introduction
AdvanReader-160 is a 4-port, high power, high performance UHF reader specially designed for embedded applications.
AdvanReader-160 features:
On-board Linux computer: you can program your own software routines, saving the need and cost of an external computer
Works with batteries, for stand-alone applications: includes a mode of minimum consumption (sleep mode), increasing battery life. It monitors the battery level.
4-port
High power, high sensitivity
USB HID emulation
RTC (Real Time Chip) with on-board battery
Controls up to 1024 antennas, with Keonn multiplexers
Controls electronically the beam orientation of directive antennas, with AdvanPhaser
Direct connection to external loudspeaker for alarm applications
2 digital/analogue inputs
2 only digital inputs
8 digital outputs (+5 V)
4 x GPO up to 100 mA ready to drive high power LED
4 x GPO up to 8 mA
1 relay output
Powers up external devices: non-isolated power output: 5 V, 200 mA (DC)
Powered through PoE, power supply of 12 V (DC), or batteries
Communications interface: Ethernet, optional WiFi
Software drivers with advanced functions for monitoring and control
AdvanReader-160 benefits:
Saves the cost of an external computer
Fully open Linux operating system
Ideal for stand-alone systems
High-performance: high output power and high sensitivity
Reduces time and cost of developing RFID systems. Ideal for embedding it inside RFID systems
Can become your own reader, if you put your company logo on the enclosure.
Getting Started
Helpful downloads:
Download Datasheet (see download files section)
Download User Manual (see download files section)
Differences over the AdvanReader-150.03
Please visit this link for more information.
Steps
These are the minimum steps to start using AdvanReader-160:
1. Connect antenna
Connect an antenna to AdvanReader port 1 with an RF Cable.
2. Power AdvanReader unit
Connect the AdvanReader to a power supply (Switch PoE, PoE injector, +24 V supply, etc..) and wait until it beeps. It will take between 40 and 50 seconds to boot.
Only one sub-chapter is required (2.1 or 2.2)
2.1 Using a PoE injector or PoE enabled switch
Follow this diagram to connect AdvanReader-160:
Connection using a PoE injector
Connection using a PoE enabled switch
2.2 Using a Power Supply or Battery
Follow this diagram to power AdvanReader-160 with a power supply or battery:
Connection using a power supply
Connection using a 12 V battery
3. Configuration
Almost on any installation it is required to adjust AdvanReader operation.
3.1. Discover Device
Configuration requires Ethernet access to the unit, as it uses a web application.
We need therefore to connect the AdvanReader unit to an Ethernet network and execute an IP discovery process. After the configuration process is finished, the Ethernet cable can be removed.
To be able to discover the AdvanReader IP address, use a PC in the same network as the computer.
Please see the discover devices for the 160/60 Series devices: series160/60-Discover-devices.
3.2. Enter AdvanNet Manager
The previous step will result in the IP that is assigned to the device. Let's name it <AdvanReader-IP-address>
Use a computer in the same network as the AdvanReader.
Open a Web Browser (Chrome or Firefox are required).
Go to the page: http://<AdvanReader-IP-address>
Enter with the following credentials if asked:
User: admin
Password: admin
Select the only device in the drop-down list, if it is not selected, and connect to it:
3.3. Read modes
AdvanReader has 3 different Configurations: Autonomous, Sequential, and Alarm mode.
A configuration can have different read modes:
Autonomous configuration:
AUTONOMOUS: In this read mode the RF engine schedules the antenna switching automatically amongst the available RF ports (1, 2, 3 or 4).
AUTONOMOUS_TRACK_MISSING: reading mode with specific configuration to keep track of tags coming in and out from the RF field.
Sequential configuration:
SEQUENTIAL: In this read mode the RF engine waits for read commands.
DYNAMIC_INVENTORY: See Dynamic Inventory Wiki page
Alarm mode configuration:
EPC_EAS_ALARM: The alarm recognizes EPC patterns to trigger appropriate events. This is the default read mode.
EPC_EAS_DISABLE: Disables the alarm pattern on each found tag.
EPC_EAS_ENABLE: Enables the alarm pattern on each found tag.
NXP_EAS_ALARM: The alarm recognizes the NXP EAS bit to trigger appropriate events.
NXP_EAS_DISABLE: Disables the NXP EAS bit on any found tag.
NXP_EAS_ENABLE: Enables the NXP EAS bit on any found tag.
SQL_EAS_ALARM: EAS mode that uses an SQL database.
EPCBULK_EAS_ALARM: EAS mode that triggers the alarms when several tags are read at the same time.
3.4. Persist Configuration
Using the apply button only changes the runtime settings, in order to make those changes persistent follow the steps below:
Remember to apply the configuration.
Click the persist button (surrounded in red) to persist the configuration.
In this case, the AdvanReader will start with AUTONOMOUS configuration.
3.5. Monitor tab
Go to the monitor tab and press the start button. The result will be like the following:
Advanced Configuration
Power and Sensitivity
The power and sensitivity of the AdvanReader its already being set for the best performance but in the RF & Antenna Options tab can be configured for a more suitable performance. For more information about it look at this post What-is-the-difference-between-Power-and-Sensitivity.
Antenna Configuration
Each antenna has its own configuration:
Reader port: The port where the antenna is connected.
Mux1 port: The multiplexor port where the antenna is connected.
Mux2 port: The multiplexor port where the antenna is connected.
Position: Static position for the antenna (x, y, z).
Location: String definition for the antenna.
Power: The power for the antenna (If empty it will use the Power saw in the previous chapter (Power and Sensitivity)).
Sensitivity: The sensitivity for the antenna (If empty it will use the Sensitivity saw in the previous chapter (Power and Sensitivity)).
Events & Actions
You can configure which actions will be trigger in the available events. For example, the most used event is:
TAG_READ: This event is created when AdvanReader reads an EPC and, in this case, it will trigger an Speaker action.
TAG_READ_ANTENNA_1: This event is created when the antenna 1 of AdvanReader reads an EPC and, in this case, it will trigger a GPO action.
Change device IP
To change the IP visit Change device IP.
Features
Common Series 160 and 70 Series
Please visit Series 160 and 70 series page
REST API development
See REST API development page.
Battery-assisted RTC
The AdvanReader-m2-60 uses a battery to keep the time across reboots.
How date/time management works:
RTC date/time is loded at boot-up time
To avoid RTC drift, RTC date/time is updated periodically when NTP client is able to synchronized the time with Internet time servers
Time zone is OS dependent is can be changes at any time
Access CSV log
All system activity is logged into a CSV file. This file can be accessed at any time:
Retrieve CSV log file accessing the URL (HTTP GET request)
http://{device_ip}:3161/system/fs/retrieveFile/AdvanNetCSVS
The CSV file is retrieved as an uncompress file named
advansafe-100-tags.csv
The CSV file structure is self-explanatory. it contains events of the following type
TAG_READ: a read event of a tag
TAG_ALARM: an alarm has been detected. The ALARM event also specifies the type of alarm:
NXP_EAS: alarm due to NXP EAS bit.
EPC_EAS: alarm due to EPC pattern.
EPCBULK:_EAS: alarm due to bulk EPC read.
TAG_ALARM_ANTENNA_1
TAG_ALARM_ANTENNA_2
TAG_ALARM_ANTENNA_3
TAG_ALARM_ANTENNA_4
Clear CSV log
To clear the internal CSV log file, access the URL (HTTP GET request)
http://{device_ip}:3161/system/fs/removeFile/AdvanNetCSVS
Access real-time data
All system activity can be accessed at real-time by listening at TCP socket port 3177.
The protocol used is very similar to HTTP and the message format is xml. The following is a sample of message:
ADVANNET/1.0
Content-Length:488
Content-Type:text/xml
<?xml version="1.0" encoding="UTF-8"?>
<deviceEventMessage>
<type>deviceEventMessage</type>
<ts>1398285581922</ts>
<status>OK</status>
<event>
<class>com.keonn.device.impl.DefaultTagAlarmEvent</class>
<type>TAG_ALARM</type>
<typeclass>com.keonn.spec.event.DeviceEvent$EventType</typeclass>
<deviceId>AdvanSafe-m-100-eu</deviceId>
<epcs>3008029b5379cb0000000021</epcs>
<alarmType>EPC_EAS</alarmType>
</event>
<deviceId>AdvanSafe-m-100-eu</deviceId>
</deviceEventMessage>
Important characteristics:
Header always contains
ADVANNET/1.0: protocol version
Content-Length: length of the message
Content-Type: type of the message
There is an empty line between the headers and the start of the message.
Line separators are CRLF characters: this applies to header lines and the empty line between headers and content. The content itself (in case of txt or xml type) may contain any form of line separator.
TAG messages
Possible TAG events that will be received are:
INVENTORY
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<type>inventory</type>
<ts>1424762478000</ts>
<status>OK</status>
<msg-version>2.1.0beta</msg-version>
<op>inventory</op>
<data>
<advanNetId>AdvanNet-instance-d0:5f:b8:ff:0b:c9--1</advanNetId>
<deviceId>AdvanReader-m4-160</deviceId>
<inventory>
<class>INVENTORY</class>
<deviceId>AdvanReader-m4-160</deviceId>
<size>1</size>
<timeWindow>-1</timeWindow>
<items>
<item>
<class>READ_EVENT</class>
<epc>3030029b5379cb0000000126</epc>
<ts>1424762477480</ts>
<deviceId>AdvanReader-m4-160</deviceId>
<data>
<class>TAG_DATA</class>
<hexepc>3030029b5379cb0000000126</hexepc>
<tid>2000348f7c14</tid>
<props>
<prop>RF_PHASE:104</prop>
<prop>TID:2000348f7c14</prop>
<prop>READ_COUNT:33</prop>
<prop>ANTENNA_PORT:1</prop>
<prop>RSSI:-24</prop>
<prop>TIME_STAMP:1424762477480</prop>
</props>
</data>
<locationData>
<class>LOCATED_TAG_DATA</class>
<epc>3030029b5379cb0000000126</epc>
<antenna>
<class>ANTENNA_DEFINITION</class>
<def>AdvanReader-m4-160,1,0,0,0,antenna1,1,0,0</def>
</antenna>
<location>
<class>LOCATION_DEFINITION</class>
<loc>antenna1,1,0,0</loc>
</location>
</locationData>
</item>
...
</items>
</inventory>
</data>
</inventory>
TAG_ALARM
<?xml version="1.0" encoding="UTF-8"?>
<deviceEventMessage>
<type>deviceEventMessage</type>
<ts>1398285445702</ts>
<status>OK</status>
<event>
<class>com.keonn.device.impl.DefaultTagAlarmEvent</class>
<type>TAG_ALARM</type>
<typeclass>com.keonn.spec.event.DeviceEvent$EventType</typeclass>
<deviceId>AdvanSafe-m-100-eu</deviceId>
<epcs>3008029b5379cb0000000021</epcs>
<alarmType>EPC_EAS</alarmType>
</event>
<deviceId>AdvanSafe-m-100-eu</deviceId>
</deviceEventMessage>
TAG_ALARM_ANTENNA_1
<?xml version="1.0" encoding="UTF-8"?>
<deviceEventMessage>
<type>deviceEventMessage</type>
<ts>1398285445702</ts>
<status>OK</status>
<event>
<class>com.keonn.device.impl.DefaultTagAlarmEvent</class>
<type>TAG_ALARM_ANTENNA_1</type>
<typeclass>com.keonn.spec.event.DeviceEvent$EventType</typeclass>
<deviceId>AdvanSafe-m-100-eu</deviceId>
<epcs>3008029b5379cb0000000021</epcs>
<alarmType>EPC_EAS</alarmType>
</event>
<deviceId>AdvanSafe-m-100-eu</deviceId>
</deviceEventMessage>
TAG_ALARM_ANTENNA_2
See TAG_ALARM_ANTENNA_1
TAG_ALARM_ANTENNA_3
See TAG_ALARM_ANTENNA_1
TAG_ALARM_ANTENNA_4
See TAG_ALARM_ANTENNA_1
TAG_ALARM_DISABLED
<?xml version="1.0" encoding="UTF-8"?>
<deviceEventMessage>
<type>deviceEventMessage</type>
<ts>1424762478112</ts>
<status>OK</status>
<event>
<class>com.keonn.device.impl.DefaultTagAlarmEvent</class>
<type>TAG_ALARM_DISABLED</type>
<typeclass>com.keonn.spec.event.DeviceEvent$EventType</typeclass>
<deviceId>AdvanReader-m4-160</deviceId>
<epcs>3030029b5379cb0000000126</epcs>
<alarmType>EPC_EAS</alarmType>
</event>
<deviceId>AdvanReader-m4-160</deviceId>
</deviceEventMessage>
TAG_ALARM_ENABLED
<?xml version="1.0" encoding="UTF-8"?>
<deviceEventMessage>
<type>deviceEventMessage</type>
<ts>1424762478112</ts>
<status>OK</status>
<event>
<class>com.keonn.device.impl.DefaultTagAlarmEvent</class>
<type>TAG_ALARM_ENABLED</type>
<typeclass>com.keonn.spec.event.DeviceEvent$EventType</typeclass>
<deviceId>AdvanReader-m4-160</deviceId>
<epcs>3030029b5379cb0000000126</epcs>
<alarmType>EPC_EAS</alarmType>
</event>
<deviceId>AdvanReader-m4-160</deviceId>
</deviceEventMessage>
SYSTEM messages
Possible SYSTEM events that will be received are:
ADVANNET_INFO
<?xml version="1.0" encoding="UTF-8"?>
<eventMessage>
<type>eventMessage</type>
<ts>1409827170979</ts>
<status>OK</status>
<event>
<class>com.keonn.advannet.impl.event.DefaultAdvanNetEvent</class>
<type>ADVANNET_INFO</type>
<typeclass>com.keonn.spec.event.AdvanNetEvent$AdvanNetEventType</typeclass>
<advanNetId>AdvanNet-instance-00:1e:8c:25:0c:43--1</advanNetId>
<deviceId>adrd-m4-100</deviceId>
<msg>Device[adrd-m4-100] started in mode: EPC_EAS_ALARM</msg>
</event>
</eventMessage>
ADVANNET_DEVICE_CONNECTED
<?xml version="1.0" encoding="UTF-8"?>
<eventMessage>
<type>eventMessage</type>
<ts>1398285635331</ts>
<status>OK</status>
<event>
<class>com.keonn.advannet.impl.event.DefaultAdvanNetEvent</class>
<type>ADVANNET_DEVICE_CONNECTED</type>
<typeclass>com.keonn.spec.event.AdvanNetEvent$AdvanNetEventType</typeclass>
<advanNetId>AdvanNet-instance-7c:66:9d:55:60:df--1</advanNetId>
<deviceId>AdvanSafe-m-100-eu</deviceId>
</event>
</eventMessage>
ADVANNET_DEVICE_DISCONNECTED
<?xml version="1.0" encoding="UTF-8"?>
<eventMessage>
<type>eventMessage</type>
<ts>1398285635331</ts>
<status>OK</status>
<event>
<class>com.keonn.advannet.impl.event.DefaultAdvanNetEvent</class>
<type>ADVANNET_DEVICE_DISCONNECTED</type>
<typeclass>com.keonn.spec.event.AdvanNetEvent$AdvanNetEventType</typeclass>
<advanNetId>AdvanNet-instance-7c:66:9d:55:60:df--1</advanNetId>
<deviceId>AdvanSafe-m-100-eu</deviceId>
</event>
</eventMessage>
Also several error messages can be received.
Battery operation
Battery operation is potentially dangerous.
Please read your battery specification carefully and contact with the battery manufacturing to ensure proper battery operation.
AdvanReader-m-160 can be operated with a battery in the range of 12 to 24 V.
Battery voltage level can be checked at AdvanNet Manager
Battery voltage level can also be queried by using the REST API
Battery voltage may not be accurate, please verify by some other means the value displayed is accurate enough and/or correct the reported value according to the other measure.
Battery level or remaining charge
From battery voltage it is possible to derive the battery level or remaining battery charge.
Every battery has a characteristic discharge curve that can be used to derive such value.
For example, the following is the curve for one NiCd cell
Battery deep discharge
Some battery may suffer damage from deep discharges, battery life may be reduced or battery may become completely unusable.
It is the user responsibility to avoid battery deep discharges.
Customization
AdvanNet Manager
AdvanNet Manager is the web application used to configure and test AdvanReader and AdvanReader derived system.
AdvanNet Manager is a web application written entirely using HTML and Javascript, some parts of it can be customized easily.
Follow the steps above to customize the look & and feel of it:
As the customization requires access to the internal Linux machine, please request root password as stated in 160 Series Embedded Development
Log into the Linux machine
Stop the AdvanNet process: >sudo killall java
Locate the web application file:
/home/keonn/kernel/module/app.AdvanNet/lib/AdvanNetRest.war
Customize the contents of the application as defined in AdvanNet Manager UI customization
(just follow the steps 2 to 4 -both included-)
Remove the web application cache
sudo rm -rf /home/keonn/tmp/*
Restart AdvanNet Manager
sudo /etc/init.d/keonn-startup.sh start
The root user is required in some update steps. Please make sure to follow the guidelines as an improper use of the root user may cause the system to stop working.
Request root password by following instructions here.
Restoring images
Any of the procedures explained in this chapter may delete all the contents in the on-board AdvanReader-m-160 memory.
The on-board Linux board features:
4 GBytes eMMC memory on-board.
microSD slot: this is not required to have a bootable system.
512 Mb RAM
Single core processor up to 1 Ghz
SD images
Download the following images for AdvanReader 160 Series.
AdvanReader 160 Series revision 04:
Copying the SD into the on-board eMMC
This is a straightforward procedure:
Use a micro SD card of a minimum of 8 Gbyte and class 10.
When a SD is inserted, the system tries to boot from the SD first.
Prepare the micro SD that will be written into the on-bard memory.
Must be a bootable SD. Only images provided by Keonn Technologies SL are supported.
The used space must not be larger than 3 GBytes
Flash the image by using:
Windows: use Win32DiskImager
Linux: there is no need to uncompress the image. Most distributions come with tools to write to SD or Use a command similar to
sudo bzip2 -cd image.img.bz2 | dd of=/dev/sdb bs=128K
Insert the SD and power the device.
Make sure the device has started from the SD card. Check for
Files you know you have in the SD card only.
Files you know you have in the eMMC memory only.
The size of the partitions: eMMC is 4 GB and SD cards may be larger.
Execute the script sudo /home/keonn/bin/beaglebone-black-eMMC-flasher.sh
Creating an image of the on-board eMMC
Follow the steps:
Prepare a bootable SD (see previous entry)
Power off the board and insert the SD card.
Power the board. Make sure the board has booted up from the SD card (see previous entry to verify this point)
Connect to the device by using SSH from an external PC.
Create an image of the eMMC direct to your PC
sudo dd if=/dev/mmcblk1 bs=1M | ssh user@192.168.7.1 "dd of=/home/user/Desktop/adrd_Backup.img bs=1M"
Restoring an image to the on-board eMMC
Follow the steps:
Prepare a bootable SD. (see previous entry)
Power off the board and insert the SD card.
Power the board. Make sure the board has booted up from the SD card (see previous entries to verify this point)
Connect to the device by using SSH from an external PC.
Execute
ssh user@192.168.7.1 "dd if=/home/user/Desktop/adrd_Backup.img bs=1M" | sudo dd of=/dev/mmcblk1 bs=1M
Power off device and remove SD
Reboot.
Frequently asked questions
IP protection
As an general purpose embedded reader, the AdvanReader-160 is used in completely different environments: from indoors to harsh environments. That's why the reader does not provide any IP rating and the protection must be implemented for each specific use.
Available SDK
The AdvanReader-160 can be used from the following APIs:
AdvanNet API: Keonn common product API.
Mercury Java API: modified version of the ThingMagic Mercury API. The modifications allow to use the IO functionality of the reader.
Date/Time management
The reader 160 does not have an internal battery to hold the Date and Time settings across system reboots.
With Internet access
Whenever the reader has Internet access
It uses NTP to update its internal time after each reboot and periodically.
The Date/Time can also be changed by using the AdvanNet Manager (Web GUI). Once the Date/Time has been changed the NTP stops updating the system Date/Time.
The Date/Time can also be updated programmatically using the REST API.
Without Internet access
The system Date/Time is reset after a reboot.
It is required to use AdvanNet Manager or the API to update the Date/Time.
In order to change the Date and Time settings from the GUI, please follow the steps on the Series 160 page
Time zone management
The Time zone is persisted across reboots.
The TimeZone can be changed by using the AdvanNet Manager (Web GUI)
The TimeZone can also be updated programmatically using the REST API.
IO features
The AdvanReader-160 features the following IO capabilities:
1 x speaker output (2 Watt)
1 x LED on line
1 x Ethernet link line
1 x Ethernet activity line
1 x +5 V OUT line
4 x digital GPO lines: 5 V and 100 mA
4 x digital GPO lines: 5 V and 8 mA
2 x digital/analogue GPI lines:
range: 0 V - 3 V
range: 0 V - 10 V
2 x digital only GPI lines
Access Sensor data
Sensor data can be accessed with an HTTP GET command
http://$DEVICE_IP/devices/$DEVICE_ID/sensorAll
Where $DEVICE_ID will be something like AdvanReader-m4-160-7b63
The result will look like
<response>
<type>response</type>
<ts>1628599716433</ts>
<status>OK</status>
<op>sensorAll</op>
<data>
<SENSOR_AUX_TEMPERATURE_2>35.28</SENSOR_AUX_TEMPERATURE_2>
<SENSOR_VOLTAGE_6>0.0</SENSOR_VOLTAGE_6>
<SENSOR_VOLTAGE_1>0.41</SENSOR_VOLTAGE_1>
<SENSOR_CONSUMPTION_7>4.6</SENSOR_CONSUMPTION_7>
<SENSOR_VOLTAGE_3>0.01</SENSOR_VOLTAGE_3>
<SENSOR_5VCC_VOLTAGE_5>5.0</SENSOR_5VCC_VOLTAGE_5>
<SENSOR_BATTERY_VOLTAGE_4>0.32</SENSOR_BATTERY_VOLTAGE_4>
</data>
</response>
Where:
SENSOR_AUX_TEMPERATURE_2: is the internal power supply temperature (ºC)
SENSOR_VOLTAGE_6: is the IN1 analogue value (V)
SENSOR_VOLTAGE_1: internal value used to derive the consumption (V)
SENSOR_CONSUMPTION_7: estimate of the unit consumption (W)
SENSOR_VOLTAGE_3: is the IN2 analogue value (V)
SENSOR_5VCC_VOLTAGE_5: measure of the internal 5 V line (V)
SENSOR_BATTERY_VOLTAGE_4: measure of the 24 V power supply (V)
What is the maximum sensitivity?
In AdvanReader-m4-160 the real maximum sensitivity is around -78 dBm to -80 dBm.
Is AdvanReader-160 reading power limited by POE or power supply?
No, AdvanReader-160 can read up to 31.5 dBm, regardless of whether it is powered by POE or power supply.
Is AdvanReader-160 compatible with a Bluetooth adapter?
Yes, AdvanReader-160 is compatible with Bluetooth adapters for Linux operating systems
What is the maximum SD card size supported by AdvanReader-160?
AdvanReader-160 supports SDXC, so the maximum size will be 2 TB.
What is the maximum speaker cable distance?
AdvanReader uses 8 ohm speaker as they are more robust to cable losses. The speaker will continue working normally with cables up to 20 meters.
HDMI port
To configure the HDMI output, follow the next wiki entry: HDMI port
Download files
Find the User Guide and other downloadable content below.