How to Use an Impinj R700 Reader with a USB WiFi Adapter

This article will walk you through how to configure an Impinj R700 reader to use a USB Wi-Fi Adapter. In this case, we will walk through an example using the Panda PAU06 USB Wi-Fi Adapter unit to provide networking to an Impinj R700 Reader.

The Impinj R700 currently supports WiFi devices using the following chipsets: Ralink RT2870, Realtek 8821CU, and Realtek 8821AU. Impinj has tested the following models of WiFi adapters and confirmed they work properly with the Impinj R700 reader.

1. Panda PAU06 (Link for reference, not endorsed or sponsored)
2. Detroit DIY USB Wi-Fi Adapter for Raspberry Pi (Link for reference, not endorsed or sponsored).
3. EDUP HOME USB Wireless Adapter (Link for reference, not endorsed or sponsored)


Once you have a compatible USB Wi-Fi device, configuration of the USB Wi-Fi device can be achieved through RShell or via the reader configuration endpoints through the Impinj IOT Device Interface.

 

Configuring via RShell:


1. Connect the Supported USB Wi-Fi Adapter:

The Impinj R700 Reader features three type A host USB 2.1 ports on the back side of the unit. You will want to ensure your USB Wi-Fi adapter uses the above-mentioned chipset, and physically plug into one of USB ports on the back of the Impinj R700 Reader.

 

2. Ensure the Impinj R700 Reader is Running Compatible Firmware:

In order to use the USB Wi-Fi adapters mentioned above, the Impinj R700 Reader will need to be running at least Impinj R700 firmware version 7.6.0. You can check the current installed firmware version by issuing the following RShell command and checking the 'PrimaryImageSystemVersion':

> show image summary
Status='0,Success'
UpgradeStatus='Ready'
PrimaryImageType='10'
PrimaryImageState='Active'
PrimaryImageSystemVersion='7.6.0.240'
PrimaryImageConfigVersion='255.255.255.255'
SecondaryImageType='10'
SecondaryImageState='Active'
SecondaryImageSystemVersion='7.6.0.240'
SecondaryImageConfigVersion='255.255.255.255'

Note: If running a version prior to 7.4.0, you will see the following error in RShell when attempting to configure:

> config network interface primary wlan
Status='15,Incompatible-With-Enabled-Feature'

The firmware version can also be checked under the ‘Software Version’ parameter that is shown on the reader’s HTTP Interface at:

http(s)://<hostname or IP address>

 

WebUI.png

 

 

3. Connect to the Impinj R700 Reader's RShell Interface

In order to configure the reader to use this USB Wi-Fi device, you will need to make some changes through the reader's RShell interface. The RShell interface can be accessed by either connecting to the reader via SSH (with Ethernet cable connected either to PC or shared router), or directly connecting to the reader through the microUSB connection on the backside of the reader and using a serial connection.

As we will be changing the active networking configuration from Ethernet to WLAN, and need to maintain consistent access to RShell, we only support using a serial connection when configuring these network settings.


When connecting to the reader's RShell interface, it will ask for a username and password. By default, these values should be set to the following:

User: root
Password: impinj


4. Ensure the Reader is Configured to use PoE+ Power:

In order to use the WLAN functionality on the reader, you will need to ensure the reader is configured to use PoE+ as a power source, rather than just PoE. To configure the reader to use PoE+, you can issue the following RShell command, which will then require a reboot after for changes to take affect:

> config system power source PoE+
Status='0,Success'
> reboot
Status='0,Success'

After rebooting the reader, you should be able to confirm it is using the PoE+ source by checking the RShell command:

> show system power
Status='0,Success'
ServiceEnabled='False'
NegotiationTimeout='20000'
PoePlusRequired='False'
NegotiationState='Unknown'
RequiredPowerAvailable='AssumedTrue'
RequestedPower='0'
AllocatedPower='0'
PowerSource='PoE+'

 

Note: If you try applying newly configured WLAN settings while running on PoE instead of PoE+, you will receive the following errors:

> config network wlan commit
Status='8,Permission-Denied'
FeatureStatus='NotSupportedOnPoE'

 

Note: The reader requires POE+ power, and you should enable POE+ in RShell to use Wi-Fi features, including scans. The host config interface currently permits Wi-Fi operations even with POE+ disabled, but this scenario should be avoided because it might cause spontaneous reboots from excessive power consumption.

 

5. Configure the Active Network Interface to WLAN:

In order to make any changes to the WLAN interface, you will first need to set the active network interface to WLAN. By default, the active network interface will be set to Ethernet, so in order to change it, issue the following RShell command:

 > config network interface active wlan
Status='0,Success'

You can then confirm it has been set correctly by viewing the output of the command:

> show network summary
Status='0,Success'
PrimaryInterface='eth:eth0'
ActiveInterface='wlan:wlan0'
Hostname='impinj-13-f9-20'
connectionStatus='AdminDown'
ipAddressMode='Dynamic'
HTTPService='active'
HTTPSService='inactive'

Note: As the WLAN is not configured with the correct settings, the connection is not able to resolve, prompting the AdminDown ConnectionStatus. This will be resolved once you configure the proper WLAN settings.

If the active network interface is not set to WLAN when attempting to configure the adapter settings, you will see an error pointing to the interface status being set to inactive:

> config network wlan ssid "test"
Status='8,Permission-Denied'
InterfaceStatus='inactive'

6. Configure the WLAN Settings:

You will now need to provide the proper settings and credentials to the reader's WLAN configuration. Please configure the following two fields: ssid and psk.

These parameters are explained in our RShell Reference Manual with the following information:

Command Argument Format Description
ssid <ssid> string Set the WiFi SSID, up to 32 characters
psk <preshared-key> string Set the preshared key used for WPA/WPA2 secured connection. Must be between 8 and 32 characters inclusive
commit NA NA Save the parameters entered into persistent storage without applying them
quit NA NA Discard the parameters entered.


More information on the WLAN configuration can be found in the RShell Reference Manual available here.

 

To help with configuring these parameters, it can be useful to see a list of available SSIDs. To get a list with reachable SSIDs, we can use the "show network wlan scanlist" command. An example of the output response when three different networks are scanned is shown below:

> show network wlan scanlist

Status='0,Success'

NetType0='infra'

SSID0= 'test_wifi_1'

BSSID0='84:17:EF:01:CB:CE'

Security0='WPA2'

NetType1='infra'

SSID1= 'test_wifi_2'

BSSID1='48:F8:B3:DB:28:4C'

Security1='WPA2'

NetType2='infra'

SSID2= ‘test_wifi_3’

BSSID2='54:A4:5C:9B:92:21'

Security2='WPA2'

NetType3='infra' 

You would want to configure these in RShell, with the following commands:

>config network wlan ssid <Wi-Fi SSID>
>config network wlan psk <Wi-Fi password/key>

In my case, I am using the WPA2 network with an SSID of 'test_wifi1', from the output above. In the example below, I configure my reader to use this test network:


> config network wlan ssid "test_wifi1"
Status='0,Success'
SSID='test_wifi1'
PSK='******'

> config network wlan psk "my_password"
Status='0,Success'
SSID='test_wifi1'
PSK='******'

Note: When running a reader with Octane Firmware 7.4.0/7.4.1, the RShell configuration will list two additional parameters, "keymgmt" and "encrypt". These parameters do not need to be configured manually during this step of the configuration, as they are now configured automatically.  These two parameters have been removed in future firmware releases, as to reduce confusion. On all firmware versions, only the "SSID" and "PSK" parameters are needed to be specified when configuring the WLAN settings.

Now that these settings are input, we will need to complete the process by applying the reader settings. This is shown in the next step.

7. Apply the WLAN Configuration

To use these newly applied settings, you will need to update the applied WLAN configuration. To do this, run the RShell command:

> config network wlan commit
Status='0,Success'
SSID='test_wifi1'
PSK='******'


You can then confirm that the connection is successful by ensuring a successful status return from the RShell command:

> show network wlan summary
Status='0,Success'
connectionStatus='Connected'
SSID='test_wifi1'
PSK='XXXXXXXX'
MyMACAddress='2C:6E:81:F1:EC:97'

It is crucial to use the above-mentioned commit command in order for the newly configured WLAN settings to take affect.

8. Set WLAN Interface to Primary

If you would like to always use the WLAN interface at boot-up, rather than Ethernet, please change the primary interface with RShell command:

> config network interface primary wlan
Status='0,Success'

You can then confirm the settings are applied correctly by checking the following RShell command:

> show network summary
Status='0,Success'
PrimaryInterface='wlan:wlan0'
ActiveInterface='wlan:wlan0'
Hostname='impinj-13-f9-20'
connectionStatus='Connected'
ipAddressMode='Dynamic'
ipAddress='192.168.1.17'
ipMask='255.255.255.0'
broadcastAddress='192.168.1.255'
gatewayAddress='192.168.1.1'
MACAddress='9C:EF:D5:FB:EB:1C'
Connectivity='FULL'
HTTPService='active'
HTTPSService='inactive'

This should complete the configuration process for your USB Wi-Fi Adapter via RShell

 

Configuring via the Impinj IoT Device Interface

Another way to configure the R700 to use a WiFi Adapter is through using the Impinj IoT Device Interface by following the steps below:

1. Ensure the Impinj IOT Device Interface is Enabled

The Impinj R700 will need to be configured to use the Impinj IOT Device Interface instead of the Impinj LLRP Interface. For instructions on enabling the Impinj IOT Device Interface, please see the following article.

2. Ensure the Impinj R700 has HTTPS Enabled

When using the Impinj IOT Device Interface, it is required to enable HTTPS on the Impinj R700. To do this, please see the steps in the following article

3. Connect the Supported USB Wi-Fi Adapter

The Impinj R700 Reader features three type A host USB 2.1 ports on the back side of the unit. You will want to ensure your USB Wi-Fi adapter uses the above-mentioned chipset, and physically plug into one of USB ports on the back of the Impinj R700 Reader.

 

4. Ensure the Impinj R700 Reader is Running Compatible Firmware

To use the USB Wi-Fi adapters mentioned in the beginning of the article, the Impinj R700 Reader will need to be running at least Impinj R700 firmware version 7.6.0.

You can check the current installed firmware version by checking the following reader endpoint:

GET – https://<hostname or IP address>/api/v1/system/image

and checking the ‘primaryFirmware’ image reported:

{

  "primaryFirmware": "7.6.0.240",

  "secondaryFirmware": "7.6.0.240",

  "scmRevision": "372d2dc7bc32c611b2e412af7dc687507db9cbb4",

  "buildDate": "2021-07-09T17:19:35Z",

  "buildPlan": "SKYR-BROOT-R700OCP-1993",

  "devBuild": true

}

 

The firmware version can also be checked under the ‘Software Version’ parameter that is shown on the reader’s HTTP Interface at:

https://<hostname or IP address>

WebUI.png

 

5. Ensure the Reader is Configured to use PoE+ Power

The Impinj R700 will need to be configured to use PoE+ Power, in order to use the WiFi adapter. To check the current configuration you can check the following endpoint with an HTTP GET call:


GET – https://<hostname or IP address>/api/v1/system/power

 

When the reader is configured for PoE+, it will report the following output:

{

  "powerSource": "poeplus"

}

If the reader is not configured for PoE+ power, you can configure the endpoint by using an HTTP PUT call, as shown below:

PUT – https://<hostname or IP address>/api/v1/system/power
Body: {“powerSource”: “poeplus”}


6. Check Network Interface ID

You can check which network interface is active by checking the following endpoint:


GET - https://<hostname or IP address>/api/v1/system/network/interfaces

 

This will retrieve a list of network interfaces, as shown in the .json output below:

  {

    "interfaceId": 1,

    "interfaceName": "eth0",

    "interfaceType": "eth",

    "status": "connected",

    "enabled": true,

    "hardwareAddress": "00:16:25:13:F9:20",

    "networkAddress": [

      {

        "protocol": "ipv4",

        "address": "192.168.1.5",

        "prefix": 24,

        "gateway": "192.168.1.1"

      },

      {

        "protocol": "ipv6",

        "address": "fe80::4a9d:4518:e962:b921",

        "prefix": 64,

        "gateway": ""

      }

    ]

  },

  {

    "interfaceId": 2,

    "interfaceName": "wlan0",

    "interfaceType": "wlan",

    "status": "connected",

    "enabled": false,

    "hardwareAddress": "9C:EF:D5:FB:EB:1C",

    "networkAddress": [

      {

        "protocol": "ipv4",

        "address": "192.168.1.2",

        "prefix": 24,

        "gateway": "192.168.1.1"

      },

      {

        "protocol": "ipv6",

        "address": "fe80::a378:9581:9842:b8b8",

        "prefix": 64,

        "gateway": ""

      }

    ]

  }

This example shows that the interface ‘eth0’ is currently configured as the active interface.

 

7. List All Available Access Points

To list all the available access points, you can check the following endpoint:

 

GET - https://<hostname or IP address>/api/v1/system/network/interfaces/{interfaceId}/wlan/access-points

 

 This call will return a list of the 10 strongest Access Points, available to the reader. An example of one of the access point listings is shown below:

  {

    "ssid": "test_wifi",

    "hardwareAddress": "B0:38:56:09:7C:71",

    "mode": "infra",

    "securityType": "WPA2",

    "strength": 100,

    "frequency": 2452,

    "maxBitrate": 540000

  }


8. Attempt Connection to Access Point

Now that we are able to view all the available access points, we will want to try connecting to a specific one. To do this, we can issue an HTTP PUT call to the endpoint shown below:

PUT- https://<hostname or IP address>/api/v1/system/network/interfaces/{interfaceId}/wlan/connection
Body: “ssid”, “password”

An example of doing this with Curl is shown below, for a reader with default login credentials:


curl -u root:impinj -k - https://impinj-XX-YY-ZZ/api/v1/system/network/interfaces/2/wlan/connection -X PUT -d ”{\”ssid\”:\”<Wifi_SSID>\”, \”password\”:\”<Wifi_PSK>\”}”

 

where <Wifi_SSID> and <Wifi_PSK> are replaced with the actual SSID and PSK of the network you are attempting to connect to.  

After issuing this PUT command, the reader will respond with:

{“message”: “Operation in progress.”}

Note: Calling this PUT will drop the current network connection immediately and attempt the connection to a specified access point. If it fails to connect, the reader will be inaccessible via network interfaces (will require a console connection to access). Please make sure credentials provided are correct.


9. Check Connection to Access Point

Now that we have configured the reader to use the specified access point, we want to check the connection status. To do this, we can check the endpoint shown below:

GET - https://<hostname or IP address>/api/v1/system/network/interfaces/{interfaceId}/wlan/connection

{

  "ssid": "test_wifi",

  "status": "connected"

}


10. Enabling the WLAN Interface on Boot

We now will want to enable the WLAN interface to be the primary interface used on reader boot-up. To do this, we can issue the following HTTP PUT call to the endpoint below:

PUT - https://<hostname or IP address>/ api/v1/system/network/interface/{interfaceId}
Body: “enabled”:true

An example of doing this with Curl is shown below, for a reader with default login credentials:

 

curl -u root:impinj -k  https://impinj-XX-YY-ZZ/api/v1/system/network/interfaces/2 -X PUT -d “{\”enabled\”:true}”

 

Using this operation will then require a reader reboot for the changes to take effect. This is also prompted after issuing the above HTTP PUT call, when the reader responds:

{“message”: System reboot is required for the new configuration to take effect.”}


11. Rebooting the Reader

The final step will be to issue a HTTP POST call to reboot the reader, for the changes in the previous step to take effect. To do this, we can use the following HTTP POST call:

POST – https://<
hostname or IP address>/api/v1/system/reboot


An example of issuing this HTTP POST call with Curl is shown below:

curl -u root:impinj  -k -X POST https://impinj-XX-YY-ZZ/api/v1/system/reboot

After issuing this, the reader will reboot and should start with the primary network interface configured to WLAN.

 

Additional Notes:

  • The reader will automatically reconnect to the Wi-Fi network, should the connection be lost or go down.

  • After following the steps in this guide, you can use the following processes to change the networking interface back to Ethernet:

After changing back to the Ethernet connection, the WLAN settings previously configured (SSID and PSK) will stay set, but not used as the WLAN interface is inactive. You can change the interface (while using a microUSB connection) back to WLAN and see these settings persist, but it will require both changing the active interface and reissuing the commit command.

  • If switching the active interface back to the WLAN interface, you will need to use the following two commands:

    >config network interface active wlan
    >config network wlan commit
Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Article is closed for comments.