XBee S1: works from Serial to X-CTU but not the other way

Hi everyone,

I’ve been reading a lot and banging my head even more for a few days now. I still haven’t found the answer to my problem so I’m hoping someone will enlighten me.

I recently purchased a SparkFun Xbee wireless kit:
Kit Includes:

  • 1x XBee Shield
  • 1x XBee Explorer USB
  • 2x XBee Modules (XBee 1mW Trace Antenna - Series 1 (802.15.4))
  • 1x Arduino Stackable Header Kit - R3

I’ve got one shield on the explorer, connected to my computer, and the other in the Xbee Shield which is on my Arduino Uno R3.

I’ve been following the Tutorials on Sparkfun (Shield Hookup Guide and Configuring Xbee networks)

I’ve connected both XBee Modules to my computer, updated them to the latest firmware (10ed), and set them up with X-CTU as following:

Setting Acronym Xbee 1 Xbee 2
Channel CH C C
PAN ID ID 0x5BF6 0x5BF6
Destination Address High DH 0 0
Destination Address Low DL 2 1
16-bit Source Address MY 1 2
Interface Data Rate BD 9600 9600

The XBee shield has the UART switch placed on “DLINE” so that it uses Pin 2 and Pin 3 (and not RX and TX) so that I don’t have a conflict with the Serial I use for uploading the sketches, and therefore it relies on SoftwareSerial.h.

I’m using the standard sketch given in the Hooking-up guide mentioned above:


Set up a software serial port to pass data between an XBee Shield
and the serial monitor.

Hardware Hookup:
  The XBee Shield makes all of the connections you'll need
  between Arduino and XBee. If you have the shield make
  sure the SWITCH IS IN THE "DLINE" POSITION. That will connect
  the XBee's DOUT and DIN pins to Arduino pins 2 and 3.
// We'll use SoftwareSerial to communicate with the XBee:
#include <SoftwareSerial.h>
// XBee's DOUT (TX) is connected to pin 2 (Arduino's Software RX)
// XBee's DIN (RX) is connected to pin 3 (Arduino's Software TX)
SoftwareSerial XBee(2, 3); // RX, TX

void setup()
  // Set up both ports at 9600 baud. This value is most important
  // for the XBee. Make sure the baud rate matches the config
  // setting of your XBee.

void loop()
  if (Serial.available())
  { // If data comes in from serial monitor, send it out to XBee
  if (XBee.available())
  { // If data comes in from XBee, send it out to serial monitor

When I write in the Arduino IDE Serial Monitor, I can see the message between written in the X-CTU console of my computer.

But when I write in the X-CTU console:

  • Nothing is written in the Arduino Serial Monitor
  • BUT, I can see the DOUT pin of the XBee shield blinking every time I press a key on my keyboard - so data is received

What am missing? Can someone please help me?

Let me know if I haven’t provided some useful piece of information… I tried to be thorough but may have overlooked something.


Hello i am having the same issue, did you ever figure out a solution?

Hey jmarrec and hmshector,

If you are using an XBEE shield that has header pins (like the ones in the picture) make sure they are connected properly. I am following the same tutorial and my header pins were not bridged on pins 2 and 3, so I was getting the same problem. Hope this helps.