top of page
  • admin

Managing a TallyPoint RFID Reader

Updated: Jun 3, 2020


The TallyPoint RF-1 UHF RFID reader runs an advanced distribution of Linux specifically for IoT devices, called Ubuntu Core. It provides software security updates for 10 years from the date of release. On top of the Ubuntu Core is our software, TallyFlow Client. The TallyFlow client software controls the reader and makes local decisions to effectively send RFID tag data and other information to a TallyFlow cloud or server instance or other cloud services, such as Azure.

In this article, we will outline some basic management capabilities using the web user interface (WUI), Azure Device Twins and Snap (via SSH). It’s important to note that production versions of software will update automatically. However, custom software or “bleeding edge” features may be available in the “beta” or “edge” branches of the software and installed using Snap. This will be explained further in the article.

Web User Interface (WUI)

The TallyPoint reader has a web user interface (WUI) to control common management functions of the TallyFlow Client software. The WUI shows which antennas are enabled, which tags are near the antenna, and provides a way to configure common reader settings, such as the RFID Session and antenna transmit power. In the picture below, Antenna 0 refers to the internal antenna of the reader. Antennas 1-4 are the external antennas. (Antenna 4 status is obscured in the picture.) Antennas 0 and 4 may not be used at the same time; they are either-or.

Clicking on a tag will expand the tag to show details. For example, the red tag near antenna 0 is a ShockWatch® tag that indicates damage, as shown in the picture below.

Azure Device Twins

If your TallyFlow software supports Microsoft Azure Device Twins -- it is an optional feature in TallyFlow -- you will be able to configure and manage common aspects of your reader directly in Azure. In Azure, a “device twin” consists of metadata about a device, such as device configuration and state information. Azure attempts to keep this in sync with the device so that even if the device is temporarily offline, you can still see its last state, or queue up a configuration change for when it comes back online. In this section of the document, all references to “tags” refer to data associated with Azure Device Twins, not RFID tags. Device twins can contain these tags which can be used as query parameters for operations like bulk configuration; e.g.:

"tags": {
    "customer": "mjr",
    "environment": "test",
    "location": {
      "state": "Arizona",
      "city": "Phoenix"

One way to add tags to a device twin is as follows:

  1. Click “IoT Devices” in the left sidebar.

  2. Click on the device you want to add tags to.

  3. Click “Device Twin.”

  4. Add a top-level tags property, as in the example above.

  5. Click Save.

Tags may also be added to a device during the enrollment provisioning process.


An Azure device configuration consists of a JSON document of properties that get sent to a set of matching devices. The match can be made based on properties, tags, or the deviceId. Once a configuration is created, it cannot be edited, but its matching criteria and priority can be changed.

To create a configuration:

  1. Click IoT device configuration in the left sidebar.

  2. Click Add Device Configuration. The wizard will walk you through the steps.

For example, this functionality may be used to create a base configuration for a customer’s TallyPoint readers, with other configurations applying simultaneously to override specific properties on a per-device basis. (The following is contrived for simplicity’s sake, and will not work verbatim on an actual TallyPoint.)

Grant that all devices’ device twins contain the following:

  “tags”: {
    “customer”: “sdgdemo”

A few devices have:

  “tags”: {
    “customer”: “sdgdemo”,
    “use_type”: “door-monitor”

The following two configurations are created:

sdgdemo-base, priority 10
  “epcStartsWith”: “sdgdemo-”,
  “epcStripLeadingZeroes”: false,
  “useInternalAntenna”: false,
  “antennas”: {
    “0”: { “enable”: false },
    “1”: { “enable”: true, “txPower”: 30 },
    “2”: { “enable”: true, “txPower”: 30 },
    “3”: { “enable”: true, “txPower”: 30 },
    “4”: { “enable”: true, “txPower”: 30 }

sdgdemo-internal-ant, priority 20
  “useInternalAntenna”: true,
  “antennas”: {
    “0”: { “enable”: true, “txPower”: 21 }
    “4”: { “enable”: false }

The sdgdemo-base configuration could be applied to all devices by specifying the target condition tag.customer=’sdgdemo’, but the door-monitor devices could be configured to override the base configuration to that the internal antenna is used instead of external port 4, by setting the sdgdemo-internal-ant configuration’s target condition to tag.use_type=’door-monitor’. Those devices’ tags match both the sdgdemo-base and sdgdemo-internal-ant configurations, but since sdgdemo-internal-ant has a higher priority, its properties will take precedence over the properties in sdgdemo-base.

Testing Azure

Azure supports the following device direct messages that are implemented on the TallyPoint reader:


A developer can try these from VS Code’s Azure IoT plugin or directly within the Azure console.

For additional information about using Azure with the TallyPoint reader, see our article, RFID on Azure using the TallyPoint.

SSH (advanced)

Command line access to the TallyPoint reader is provided by ssh, the secure shell application. In order to access the reader using ssh, you will need to have someone from SDG’s support team install your public key on the readers. Once installed, you will be able to `ssh tallyflow@tallypoint-a1b2c3` (or use another SSH tool, such as Putty) where a1b2c3 are the last 3 digits of your hardware’s MAC address. Using ssh will allow you to install non-production code, develop your own plugins, or edit the reader configuration file (advanced settings).


The mechanism to update packages on the Ubuntu Core (and hence, the TallyPoint reader) is ‘snap’. Normally snaps refresh themselves automatically, 4 times per day, but non-stable or non-confined snaps do not (so-called “edge” or “beta” versions), so we have to update them manually:

snap refresh --devmode tallyflow-client

Other versions of snaps may also be helpful to install, based on instruction from SDG Systems:

snap install --beta --devmode tallyflow-client
snap install --edge --devmode tallyflow-client

To check the current version of the snap installed, the command is:

snap list
snap services # see what services are on the device


The TallyPoint RF-1 RFID reader is a secure, flexible reader that allows IT managers convenient ways to manage their RFID configuration. Developers can create additional software, as well. In a future article, we will discuss the plugin architecture of the TallyPoint reader and how developers can create their own software solutions.

189 views0 comments


bottom of page