Wireless routers


I have been looking through the wireless sensors and receivers but am a bit confused as to what I would need to get started. What is the difference between these modems?

If i setup a pi Zero with a 4 channel 4-20ma input I2C board can one of these devices transmit data back and forth to a receiver if no internet connection is available? I typically use Node Red to read the input cards.

I am working on extending our current project into remote areas where we have no network access. All locations have power just no way of line of sight transmission in some cases.

I am also considering deploying some of these 4-20ma input Industrial IoT Wireless current receivers. Are they only compatible with the industrial line of Modems?


Hi Will,
The main difference is protocol layer and the wireless range.

This is the best one

it can go through trees, wall and other obstacles.
Yes, you can use these to communicate between two Pi.

The 4-20mA wireless products are compatible with industrial modems as well as any device with a 900HP-S3B module. You can connect these modems to a Mac,Linux, PC or any embedded devices.

for example lets say you want to interface these with a Pi3. then you will need following hardware



Hi @Bhaskar,

This is offering 2 configurations at check out. For retrofitting an old deployment using the standard I2C shield without the the communications port, which of the 2 configurations would I want? Also if deploying with a Pi Zero with the Pi Zero shield, would this be the correct device and what configuration would I need?

So for simplicity sake Site 1 will be a Pi Zero with Pi Shield, a PR33-10 (4 channel 4-20 mA input card) in a remote location. I want to transmit data from site 1 to site 2 which is a mile down the road.

Site 2 is a Pi3 with the I2C shield with communications port w/ the 900HP-S3B, and a RS485 reading Modbus from a VFD. Once the data from site 1 is received at site 2 it will be combined with data generated at site 2 and transmitted via the internet to a freeboard.io dashboard.

6 Months from now we add the Industiral IoT wireless 4-20 mA current receiver at a remote location within range of site 1. Are all these devices compatible with each other?

What I’m not clear on is what are the differences in these two configurations:


please select “API compatible with IoT Long range wireless”.

Although This is a software setting you can change it anytime if you want to.

If you select the API version you will be able to add Industrial IoT wireless 4-20 mA current receiver at a remote location without making any changes in your old setup.

While placing the order mention this in special instruction " configure all wireless modules as API compatible with IoT Long range wireless".


Thank you! Your help is much appreciated as always.


Was I supposed to purchase a

in order to use the


I purchased the I2C board with communications port. I have the 900HP-S3B on it. I also purchased the 900HP-S3B long range wireless mesh modem and have it connected to a Raspberry Pi 0. How do I get these to communicate between one another?

I bought these configured as API compatible with IoT Long range wireless.


If both are in API mode then you wont need the USB programmer.
To establish the communication you will need to send data in API format. Digi does have python lib for these modules which works on raspberry pi as well.

What i do is create two function API encoder and API decoder and then send the data over uart.
You can checkout ncd.io wireless sensor node red lib as well. Although its written to work with ncd.io sensor but backend should work with any data.



I am trying to use Node Red for this project. I was able to get the USB modem to switch in and out of configure and receive using the NCD library. However I don’t know if the 900HB on the shield is working. When I would try to switch between the 2 modes it would throw an error. Does the 900HB on the communications shield communicate over serial or I2C? Using the NCD.io library is there a way to setup a tramsmit node? All the nodes appear to be receive only.

Error received in node red log when using the wireless gateway on an RPi 3 with I2C shield with Communications port. Set serial port to /dev/ttyS0 with a Baud Rate of 115200

{ ‘Unhandled Rejection at’:
Promise {
{ error: ‘Request timed out without response’,
original: [Array] } },
{ error: ‘Request timed out without response’,
original: [ 8, 2, 73, 68, 123, 205 ] } }

Then it will stop the flow then restart. As soon as I remove this setup the pi is stable again.

When setting the serial port to /dev/ttyAMA0 with a baud rate I get the following:
{ ‘Unhandled Rejection at’:
Promise {
{ error: ‘Request timed out without response’,
original: [Array] } },
{ error: ‘Request timed out without response’,
original: [ 8, 2, 73, 68, 123, 205 ] } }


Hi Will, @Bhaskar and @Trey are both traveling, responses will be delayed. The 900HP module communicates via serial, not I2C.


@ryan is there a command I can run in terminal to ping the module and get a response? I’m still unsure as to if the module is even being recognized.


Hi Will, if you send this API command, you should get a response:
7E 00 05 09 82 50 4C 04 D4
This command sets the power level to maximum, which is a default command.
Try 115.2K Baud, if this does not work, try 9600 Baud.


I’ll see if i can try to figure that one out. Would you know if it’s S0 or AMA0?


Sorry Will, I have no idea on this one…


Hi Will,
If you are using Pi Zero W, you will have to communicate over S0. Same goes for RPi 3.

You can use the command as Ryan mentioned. Or you can use the free Utility available from Digi to verify the communication and parameters.


@Talha Will XCTU run on the raspberry pi? I checked apt-get and couldn’t find it.

The Pi Zero W found the USB modem no problem. I am under the impression it is working as I can toggle back and forth between listen and configure in Node-Red.

The Pi 3 with the communication board is the one I’m not sure about.

I’m not super good with command line yet, google has helped a little, but I am getting there. I haven’t used python in probably 10 years.

I know that with the USB you can lsusb in the command line and get a response of what devices are plugged into USB.

I was googling how to send the API command @ryan suggested. Still looking :slight_smile:

If you know of a quick suggestion or if XCTU does in fact run on the Pi that would be great.


I haven’t tried it, but the Download page shows they support Linux on x86/64. So Raspberry Pi is not supported according to that.
Unfortunately, I don’t have much experience with Python either. I mostly work with C and LabVIEW.
But there is a code on this page which might be of help to you.
The command that @ryan suggested can be seen here (page 62) along with other commands. If you are going to use XCTU for just sending the data, then you can use any serial terminal that your OS supports.


So this is RPI to RPI so no XCTU unfortunately. Thank you for the links, I did come accross that same article on the RPI forum when I was researching. My ideal situation would be using node-red to read and write to the xbee. As I was explaining before I don’t know if the raspberry pi even recognizes it as being connected and available. When trying to use the serial module in Node-red it would just error out which was the same thing as if nothing was there. I’ll do some more digging. Thanks again for your assistance.


So I think i’m making a little bit of headway but still unsure if the RPI3 is actually communicating over serial with the XBee.

I found some nodes that work with XBee. Using the XBee USB Modem I am able to transmit the following data to the RPI3:

msg.payload = {
type: 0x10,
id: 0x01,
destination64: “0013a200418e9e51”,
destination16: “fffe”,
broadcastRadius: 0x00,
options: 0x00,
data: “Hello from Node-RED!”
return msg;

I receive a response in the debug from the receive node with the following:


However on the RPI3 I don’t receive anything.

Does this mean the Pi Zero with the USB modem is sending the data and the XBee attached to the RPI3 is receiving it and sending a response but I am just not able to see it because I’m not seeing the correct serial port or something?

If I reverse the process and send from the RPI3 nothing is received on either device.
Is there any other special configuration needed for the Raspberry Pi to communicate with the XBee over serial besides enabling it in raspi-config?


On the Pi Zero, you are basically getting a status packet in return after sending a packet. This is a locally generated packet from the Xbee and shows the transmit status. The current response shows that it did not find a path to the other Xbee. Most possibly the two Xbees are not able to communicate with each other. Please refer to the following figure

When you reverse the process and send from RPI3, if you don’t receive anything then I am sure you are not accessing the correct serial port.

We send the Radios pre-configured so that any two radios will communicate with each other out of the box. However, if any changes have been made to the settings then they might not communicate.

I would suggest that you first make sure that the two Xbee Radios can communicate with each other. For that you will need to connect them with USB adapters to your PC. By connecting both Radios to your PC and opening XCTU program, you can verify the settings and use builtin serial terminal to communicate between them in real time. Once you are sure that the two are communicating with each other, then you should proceed with programming in RPI.


The stand alone unit is configured in transparent mode. Is that the mode it should be in? Configuration file attached.

XBee 900HP.xpro (8.5 KB)

The USB mesh modem is configured as API mode without escapes.

Mesh Modem.xpro (8.5 KB)

Bhaskar said to make a note when I ordered to configure all wireless modules as API compatible with IoT Long range wireless. Is that what I have? Are these configured to talk to one another?

I am extremely new to this. Thank you.