Linux Inside … ThingMagic Sargas


Our ThingMagic Sargas just arrived.  This is a small (87mm x 80 mm x ) fixed RFID reader that packs a nice punch.  It has 2 high performance UHF RFID antenna ports capable of reading 750 tags a second at distances over 9 meters and an ethernet port, but it also has a BLE, USB, 4 GPIOs, micro-SD, and HDMI.  Inside there is a 1GHz ARM Cortex 8 running Linux (Debian) where you can run your own code.

We will use the Sargas as a second reader so we can manage more RFID Antennas covering a larger space. Initially we will connect the Sargas to a Raspberry Pi 3 in the same arrangement we used previously  with the ThingMagic M6.  In that configuration the pi 3 runs the AMTech Gateway and it communicates with the reader using LLRP over ethernet.

The next step will be to move the gateway inside the Sargas, so we no longer need the pi 3.  This should be straight-forward; Debian running Node.js.

After that we want to run applications directly in the Sargas using the HDMI to connect an external monitor.  We have not yet decided on what to try out first.   The application could just report on the setup and simple statistics, or can be an actual application.  For example, a Sargas can be combined with a couple of short-range antennas and a large monitor, to provide a smart display for clothing that has RFID tags.

Ideally, we would like to write these applications using NativeScript, similar to how we want to use NativeScript to write RFID applications for the Invengo XC-1003, but more on that later…

NativeScript and the Invengo XC-1003 – Part I

The Invengo XC-1003 is an Android Smartphone (KitKat) with an UHF RFID reader/writer.   Ours just showed up yesterday from AtlasRFID.  Invengo positions it as a Mobile IoT device, advertising it as working on “the RAIN RFID Frequency 865-868MHz (ETSI) – 902-928MHz (FCC)”.

RAIN is a global alliance (part of AIM) recently created to encourage the adoption of UHF RFID (CS1 – 18000-63) across multiple vendors, with an emphasis on interacting with Cloud-based services and data.  The board includes companies with deep expertise in RFID technologies like NXP, Smartrac, Embisphere, Impinj and Acceptto.  There are currently 124 members in the directory, including names like Amazon and Google.


We got the device to use it for hand-held applications that interact (read/writer) with RFID tags.  A typical use would be to support the registration and on-the-spot support for an event like our recent MeetUp or the ProgressNEXT event.  The Intengo XC-1003 comes with an SDK and some (Java) sample apps.  Initially we will use the apps as they come but our goal is to write a NativeScript plugin (see tutorial) so you can write your RFID applications using just JavaScript and CSS.

I believe RFID (wikipedia) is poised for significant adoption increase.  The technology has been around for quite a bit (history) and initial attempts at adoption suffered from technology shortcomings as well as high costs for tags and readers.  The new technology is much more reliable, flexible and cheaper.  Examples include FasTrak,  Transponder timing in Sports Events, Inventory (Zara is a big proponent, so is Walmart) and possibly my favorite: RFID tags at the bottom of paper cups to control soda refills at Walt Disney World (video).

Stay tuned for more details in this experiment.

CSUMB Capstone Project Fall 2016 – A Connected Capstone Festival App

The CSUMB Capstone project for Fall 2016 is a Digitally Connected Capstone Festival App using RFID Tags and Antennas, iBeacons and Mobile Apps.

The basic architecture is sensors connected to an Activity Management platform to track the real-time activities interacting with a Mobile Application used by the public and presenters at the Festival.  The project will leverage lessons learned from the Capstone project in Spring 2016, Quantifying the BIT Building,  and two previous projects: the ProgressNEXT app and a NativeScript MeetUp in Palo Alto.

The bulk of the sensor data will be from RFID tags worn by the attendees to the Festival, but additional data may come via mobile apps, reading BLE beacon proximity data and/or Geolocation data.  The Activity information will be used by mobile applications that may also provide information on the different presentations and events.


The Mobile Apps will be written using the NativeScript framework.  The backend will be based on Node.js on Modulus, though we may also use Sitefinity platform.  The Activity Monitoring Platform is that of AMTech Solutions.


We currently have 4 fixed RFID Antennas, connected to one RFID Reader that interacts with an AMTech Gateway running on a Raspberry Pi 3.  We will soon get an Invengo XC-1003 Android phone that includes an RFID reader and we can use this for operating the event.  RFID tags are 20 cents each in a volume of 1000 so we can easily provide tags for all attendees.

We have several iBeacon/Eddystone beacons that can be used to map the Capstone space and interact with the Capstone Mobile App.

Sketch of a presentation is at Slideshare.

Activity Management using IOT

I put together a quick presentation on Using IOT for Digital Activity Management.  I’ll refine it when I have an opportunity of presenting it, but, for now, check the slides at Slideshare.  See this Umbrella Post for quick links to some other related posts.

IOT-based Activity Management can be used in a very large number of applications, often relying on related services like geolocation, spatial operations (“close-to”, “within”) and notifications (sending mail).  A practical product needs strong security, performance, scalability, support for many protocols (sensors and server-side), administration and flexibility of deployment options.


AMTech – The M2MBridge

The AMTech M2MBridge is a node.js service that implements the AMTech IOT Protocol.  The M2MBridge can run in a variety of devices; for our demos we currently have it running on a Raspberry Pi 3 using Ubuntu MATE.

The M2MBridge includes a core and an extensible plugin architecture, plus a growing set of plugins.  The bridge is a common component of most real-life IOT applications connecting edge devices to the sensor and reasoning layers of the AMTech platform, providing intelligence at the edge, and supporting security, access control, auto-configuration and other key properties of real-life deployments.

Here is a sketch of the Bridge Functionality:


We used the M2M Bridge to control RFID antennas in the ProgressNEXT Conference App at Las Vegas and in our recent NativeScript MeetUp in our Palo Alto office.  In both setups the bridge used the LLRP plugin to control the RFID readers, which were connected to the antennas via coax cable.

In the case of ProgressNext, the bridge was running on a laptop and was controlling 3 RFID readers, connecting to them via the hotel internet.  In the case of our MeetUp, we used just one RFID reader that was connected directly to the Raspberry Pi 3 via an ethernet wire.


The MeetUp setup was logistically simpler: we configured the pi3 as a DHCP server and it could talk directly to the RFID box; at Las Vegas we had to work with the IT administrator of the hotel to whitelist the laptop and the RFID readers so they could talk to each other.

BridgeSetups-2In both deployments the bridge connected to an AMTech tenant to receive configuration data and to push observations and receive commands.

The AMTech M2M Bridge functionality includes:

  • Support for many devices andM2M protocols – e.g. SNMP, LLRP (for RFID), iBeacon and eddystone, etc
  • Support for device-to-device and device-to-cloud communication – e.g. LoRa, BLE, etc
  • Centralized management of IOT devices and gateways
  • Configurable Edge Intelligence
  • Configurable Auto-Discovery
  • Access Control and Customization of observations at the edge.

One of the nicest features of the M2M Bridge is the centralized management of IOT devices and gateways: when a M2M Bridge instance starts, it connects to its corresponding AMTech tenant to extract the configuration details from there, which makes it very easy to adjust the configuration of the production of observations (events).  Another very useful feature is the ability to clone a configuration so multiple M2M Bridge instances inherit the properties from a master setup.

Using RFID Tags in a Meetup

Last week we hosted the NativeScript SV MeetUp at our office in downtown Palo Alto.  The meeting focused on using NativeScript in combination with CloudBase but we added RFID tags to spice the event, and I think the result was very successful.

The use of RFID tags was a variation on how we used them for the ProgressNEXT Event in Las Vegas earlier in the year.  We prepared holders for all the attendees, with space for their name at the front and an RFID tag at the back.


We used the EOS-300 R6 RFID Paper Tag.  This one has 96 bits unique, serialized data that we used as a UID (for the progressNEXT event we used a GRAI encoding, but for this MeetUP I didn’t want to go through the extra step of customizing the tags).


We also added a small pokemon to each badge.


We later used some larger pokemons (from TakaraTomy) as part of the raffle (more on that below).


The active elements of the setup included some RFID antennas


connected to an RFID reader via coax cables…


connected to a Raspberry Pi 3 that was running an M2MBridge Gateway from AMTech


The M2MBridge supports many edge protocols, including LLRP, which it uses to control the reader.  The bridge generates observations that correspond to the RFID tags read, which are then sent to an AMTech tenant, where we run some simple rules to create objects when a new tag (i.e. a new MeetUp attendee) is detected.

The AMTech tenant was also configured to provide Notifications (JSON objects pushed through a WebSocket).  We connected a Node.js app to it (on Modulus) that we used to randomly select UIDs (from the RFID tags) for the raffle.

The 96-bit UIDs are unique but somewhat unwieldy, so we wrote a shorter unique number at the back of each tag and we mapped the UIDs to these.  We called those numbers at the raffle and everything worked like a charm.  A cuter, but more time-consuming approach, would have been to name each tag after the name of the pokemon character in their holder.  Pikachu, I choose you!




Come for NativeScript, Angular and CouchBase – Stay for a Pokemon

This Thursday (Jul 28, ’16), we are hosting a MeetUp at 6pm at our location in downtown Palo Alto (Google Maps – MeetUp info).  Mehfuz and Nic will show how to create native cross-platform Apps using NativeScript and CouchBase.

CouchBase is an open-source, distributed (shared-nothing architecture) multi-model NoSQL document-oriented database; NativeScript is an open source platform for building cross-platform Native mobile applications using JavaScript and CSS.  NativeScript leverages a high performance bridge between any native platform API and JavaScript which can be used to create Plugins that extend the platform.  Mehfuz and Nic will show how to use the CouchBase plugin in an app where information created by one user in one smartphone can automatically be shared with another user in another smartphone.

Mehfuz will also show how to use his Estimote plugin; combined with the CouchBase plugin, the iBeacon data read by one phone is automatically synchronized to the other.

We are sprinkling a slight IOT overlay on the MeetUp.  We took some of the RFID configuration we used in a Conference App earlier this year and we now have them connected to a Raspberry Pi 3.  UPS-willing, the plan is to add some RFID tags to the badges for the MeetUp and show you how a modern Data Speed Layer (like AMTech.Solutions) can be used to track an asset (you) on a space.

Following the Pokemon Go mania, I’ve ordered some Pokemon figures as prizes for the attendees. Raichu arrived yesterday, others to follow (update – All Pokemons are here; check the Flickr Album).  See you on Thursday.