Trouble interfacing XBee Pro S3B without X-CTU on an Arduino board

Hey everyone, I am new to XBees and interfacing them with microcontrollers, so bear with me. Right now I am trying to establish a simple serial connection between two Arduino-based boards (the Mayfly by Stroud Research Center) using XBee Pro S3B modules. My current set up includes one Mayfly logging air temperature and sending it to an XBee Pro S3B via the board’s Tx serial communication and an XBee’s DIN pin, then that data is sent over radio to another XBee Pro S3B in transparent mode, out the DOUT pin, and to the other board’s Rx port. I have the sender datalogger constantly powered, and I have no problems printing data to the sending XBee and sending the information out over radio.

The problem I’m running into is the XBee receiving data will not automatically kick it out the DOUT pin unless I add the device in X-CTU. I know the XBees work together because when I plug the receiving XBee into the X-CTU program, I can read the data in the console as it comes in. I have an XBee Serial Explorer breakout board from Sparkfun that lights up an LED when data is sent over the DOUT or DIN pins. I’ve noticed that even when I power up XBee module using this breakout board, the DOUT pin will not light up until I add the device on X-CTU. Once it is added, the DOUT pin begins to light up from the incoming data from the datalogger sending air temperature. I can connect the DOUT pin on the receiving XBee to a Mayfly, keeping the power to the breakout board on, and the Mayfly will read the serial data just fine. However, as soon as I cut power and turn it back on, the data no longer transfers through the DOUT pin to the datalogger on the receiver end. I have to go back into X-CTU, add the device, and keep the power supplied on the breakout board as I add some jumper pins to connect the DOUT pin to the Rx pin on the Mayfly.

I’m wondering if there are some commands that need to be issued to the XBee module from the datalogger if I were to just power the module up and have it function properly with the microcontroller without the help of X-CTU. Does adding the device in X-CTU issue any commands to the module that make it so it functions properly?

It should also be noted that my sender logger and XBee module work fine, with no need to connect to the X-CTU software to function properly. So I’m wondering if it is something to do with the receiving end of a transparent connection between modules.


What are the two full part numbers for the two XBee modules you are working with?

What firmware version is installed on both radios?

Part numbers: XBP9B-DMSTB002
Firmware: 8075

Is that what you are asking for? Yesterday afternoon my XBees started having trouble out of nowhere with changing certain settings, not remembering changes I had written, making me reset the module after certain changes or when I added a module to XCTU (and then not processing that I had reset it), and not recognizing MAC addresses. I’ve tried recovering the modules using the XCTU tool, but I get the following error messages:

  • Looking for active bootloader… [ERROR]
    There is not an active bootloader in the module.
  • Resetting and entering bootloader… [ERROR]
    There is not an active bootloader in the module.

It prompts me to push the reset button when I try to recover the device, but when I do, nothing happens. So I press close and then it throws the error messages. I’m not really sure why my modules are all having problems now since I wasn’t having this problem before. Here’s a screenshot of the firmware I try to recover to:

Screenshot 2023-08-03 094828

These are what we call a Programmable module. What that means is that it comes with a secondary processor built into the XBee placed between the RF processor and the modules Data lines. Think of it as a combined Arduino and XBee all in one.

What you really are looking for is the Non Programmable version of the product. That part number would be XBP9B-DMST-002. Notice the -002 as the B in that place indicates it as a Programmable module.

Okay, so are the XBees I’m using supposed to be used with XCTU at all, or are they meant for a different software?

They can be used with XCTU. But you need to load an application on the secondary processor first.