Common XBee Mistakes
Your XBee project isn’t working? Here’s some common mistakes that both beginners and experts make:
- Not using the latest firmware (especially if ATD0 or ATIR is giving an error)*
- No reference voltage to VREF pin on the 802.15.4 radios (analog and digital reads give wrong values)
- Forgetting that AT commands use hexadecimals
- Hitting return after +++ (or otherwise not respecting 1 second default guard time)
- Conversely, _not_ hitting return after an AT command
- Letting the XBee time out of command mode before issuing an AT command (you’ll know because you get no response)
- Forgetting to write the configuration to firmware with ATWR (unless your application configures the radio interactively)
- Not using ATRE (restore factory defaults) before re-configuring a previously used radio (previous settings lurk unless you manually reset them all)
- Looking for analog output on the analog input pins instead of pins 6 and 7 (P0, P1)
- Using a voltage regulator without decoupling capacitors (10uF on input, 1uF on output is good)
- Mixing up TX and RX pins (fastest way to check this is switch the wires and see if it starts working)
- Using ZigBee version (ZB Pro or ZNet 2.5) when 802.15.4 version would do just fine (if you don’t need to make a mesh network)
- Trying to read more than 1.2 Volts on the ZB Pro and ZNet 2.5 analog inputs (that’s the limit)
- Buying Pro radios when you don’t need them. (Cost more, bigger, use a lot more battery)
- Deciding the XBees are flaky. (You may not be using them correctly, but they are very reliable)
- Deciding an XBee is burned out when it’s set to a different baud rate (check ON and ASSC lights)
- Deciding an XBee is burned out when it is just sleeping (Check ON light to see if it blinks occasionally)
- Forgetting to supply power or ground (ON light may go on and ASSC light may blink but both will be significantly dimmer)
- Not contacting Digi sooner for support, especially if your radio seems dead or you keep getting an error you don’t understand.
XBee Arduino Mistakes
- Sending continuously without any delay (try 10ms delay)
- Not removing RX and TX connections before uploading code (Arduino will give an error)
- Not removing RX connection when reseting, if you are continuously receiving data. (Arduino will never reset)
XBee LilyPad Mistakes
- Hooking up more than 4 Volts to the 3.3V pin
- Using switches without pull-down resistors (but not if you use the internal pull-ups)
- Not using a pull-up or pull-down resistor on pins 5 and 7 (these don’t have internal pull-ups at all)
- Using sensors without voltage divider resistors (if your sensor needs that circuit)
- Using too-resistive conductive thread for power and ground (try fabric or wires)
*Â X-CTUÂ is required for firmware upgrades
This list isn’t exhaustive. Got a suggestion I should add? Let me know!
I attached a LED to the 6th pin (RSSI) of my XBP24-ZB, but when the radio receives data it doesn’t light up (I’m using a protoboard). But if I use the xbee shield I got form sparkfun and switch it to DLINE (there is a tiny switch for dline/uart) the RSSI led lights up perfectly, I checked and double checked and its hooked up to the same pin. Any ideas of what I might be doing wrong ?
PD: Awesome book!
hello guys am working with xbee on libelium waspmote , do any of you know how to read the on/sleep state of xbee, sumthing like a digital read of the sleep pins . there is not much information on which pin to cheack for sleep stauts
awaiting any reply thanks
I have an Arduino UNO and 2 XB24’s configured with 21A7 and 29A7 firmware versions. All xctu tests are successful including assembling a remote AT Command (apiId = 0x17), transmitting it and receiving an Remote AT Responde (apiId = 0x97).
With the Coordinator connected to UNO pins 0 and 1, my sketch send a remote AT command but readPacket never receives the return packet. It is as if the UNO’s Rx pin is held at one state by the FTDI. I would appreciate your advise.
Thanks in advance.
Did Anyone fix it?
I have run 3 Xbee Modules 2 as router and 1 as coordinator.
My modludes works perfectly for a period but after that the coordinator changes its 16-bit operating pan id, but the routers do not change their 16-bit operating pan id. So, the coordiantor can not send and receive any data from the routers. Also when I use the remote configuration and discover the network the coordinator does not find the routers and vice versa.
Please help me with this issue.
Thanks a lot.
Is there a reason you’re changing the operating PAN ID? ATNR 1 will reset your network. Also ATNW on your routers will have them rejoin after a timeout (set in seconds) if they can no longer reach the coordinator, so that could be a piece of the solution. Check my book or the product manual for a description of both.
Can you please tell me the procedure to replace the Zigbee co ordinator using ATNR1 command
The ATNR1 command is not used for that purpose. Good news though, there are several other commands however that will allow you to do this. Here’s the official procedure for replacing a coordinator: https://www.digi.com/resources/documentation/Digidocs/90002002/Content/Concepts/c_zb_replacing_coordinator.htm?TocPath=zigbee%20networks%7CZigbee%20Coordinator%20operation%7C_____8
I have a problem with the wires ,when I connect a bus which is around 40 cm from my arduino to the xbee regulator I dont receive anything,but it works fine when I use double females close by
i have a zigbee hardware(xbee series 2 ) connected to x-ctu on windows.
How do i perform “energy scan ” using two xbee modules via x-ctu.
i use x-ctu to tranfers chunks of data etc,.. and everything works fine
Energy scans are performed automatically by the coordinator when it creates a network. See the XBee ZB Product Manual for a complete description.
welldone here…plz i need to transmit and receive “bio-signals” not “text” via my xbeeS2. How do i go about it?…all the examples i have seen demonstrates sending and reception of texts( numbers, alphabets)
I have an XBEE Pro S2B on a Bee Adapter v1.2 from ElecFreaks. I have the switch to 3v3 and the other switch to H (not sure what this switch is for). If I hook the bee adapter up to usb, I can use X-ctu to discover the the node from a coordinator and all is well. I can also send packets (api).
However, if I unhook the usb and hook up the power only from a arduino mini (5V and GND – the bee adapter converts to 3.3v, I’ve checked) I cannot discover the node. Can anyone think of any reasons this would be the case?
Hope this is the right place for this post.
I need to collect analog readings at about 5Hz on remote end devices for maybe 10 min and then put them into energy saving mode. Essentially, I am trying to have the end devices go into sleep mode when I am not collecting data and keep them constantly active (no down time) when I am collecting data. I am thinking of achieving this by sending remote AT command ‘SM1’ (pin sleep mode) to end devices when I am collecting data with pin 9 to GND then switch them back to ‘SM4’ when not collecting data.
When I run the end device in cyclic sleep mode (‘SM4’), the data I receive is fine (fairly steady). But in ‘SM1’ mode, there is an occasional hiccup in the data stream (often a drop of 20 to 40 ADC units). What could it be? I am using a modified version of your Simple_actuator_network processing code combined with the SensorData class from Simple_sensor_network code.
Thanks in advance for your help.
5Hz is much faster than an XBee will handle directly. I’d recommend another solution unless you are simply using the XBees to transmit data collected and stored using an external processor. I’m not understanding what you are trying to accomplish by changing sleep modes between cyclic to pin sleep. Normally you would use one or the other in an application, but not both.
I configure Xbee series 2 module as Router AT with (BR-9600;None-parity) and after that that module is not communicating with X-CTU, And even after hardware reset. How ot slove this issue??
Try recovering the XBee: http://www.digi.com/support/kbase/kbaseresultdetl?id=3402
Thank for your reply. But i tried all the restoration methods, but it didn’t work. So now can i conclude that my Xbee is dead or still if there is some method, so that i can recover.
Xbee Working fine; Try flashing through USB breakout board using FTDI drivers rather RS232 board!!..
i tried using the method on the link above it worked but when i read the modem it gives me errors
try this for recovery it works for me all the time.
I have an XBee 900HP Digimesh base radio module (coordinator) 3s-wake/15s Sleep, that has stopped listening to commands from a pcDuino /dev/ttyS1/ port. The XBee is still sending modem status packets on the right intervals but I can’t get it to respond to any inputs. I’m using Eagle’s PERL API to communicate with the base radio in escape mode. I’ve also tried minicom and can see the modem status packets but, again no response to +++ or anything I type. It used to work, and I was able to get it to work for a while after taking it out of the socket and reprogramming it but, it has hung again. I’m working remotely by ssh so I can’t resocket it which isn’t a viable long term solution anyway in a product. Do you have any sequence of packets for getting such a hung XBee to respond?
Try here: http://www.digi.com/support/kbase/kbaseresultdetl?id=3402
I have written a xbee program on a ATMEGA 2560 based platform in avr studio 4 .It supposed to send 3 hex data periodically to pc terminal.But instead it sends 2 dots(..) some arbitrary hex numbers.(4C 3F).Can you shed some light on this?
I have similar problem
I have similar problem with pic 18f4620. Is there anyone who can help about this problem?
I just received my xbee pro s3b 900 mhz edition with a wireless proto shield. Plugged in for the first time, open up a terminal and I only see a hex counter in each line. The module keeps transmitting that in the serial port. I cannot find any documentation on that. Is that normal??
Iâ€™m getting the exact same problem. Itâ€™s 2019. Does anybody know how to solve this? Itâ€™s seems to be S3B specific.
Did anyone figure out why the xbee is receiving hexadecimal counts in-between packets received?
I am using the XBee Pro S3B.
The monitor displays a hexadecimal 7 digit number counting up.
To prevent this with the S3B you have to desolder the resistor that goes to the RSSI led. Most Xbee modules use pin 6 as a signal strength indicator but on the S3B it is not. When pin 6 of this Xbee is pulled low on start up it enters a special mode that continuously counts up in hex. If you go to the terminal in X-CTU is will just be counting away. The resistor and led effectively pull down pin 6 enough to make it start in this mode every time. De-solder that resistor or led and it will work perfectly.
Yes, that was the problem.
I just connected pin6(PWM0/RSSI) to pin 1(3.3v), and repowered the device, and the hexadecimal counting stopped, and I started receiving the signals without delay.
Thankyou so much for helping me, this problem has been ongoing for way to long without being able to solve it.
I am doing a wireless home automation system with xbee series 1 and arduino. I made an android app to send commands to arduino that will receive the command through the ethernet shield and then send the api command to the specific xbee…
The system is working great, but when I send a command to an xbee put an output high or low and then send a command to another xbee with a delay about half second both xbees do nothing and the rssi from both blinks for 2 or 3 seconds and stops and still nothing happens, but if I send a command to only one xbee no matter how fast I send the command from the app the xbee works correly
If you can help me I would thank you
Good list. I had a recent issue where all my series 1’s would report checksum errors after an upload of the firmware using either an Arduino XBee shield or the Adafruit xbee adapter.
Funny thing my Series 2s did not have any problems updating.
Assumed it was hardware issue (my bad soldering perhaps) so I purchased a xbib-u dev board out of desperation.
Same error, so I changed machines and lo and behold it worked fine. Not sure what the problem was but a different computer solved the issue. I re-installed x-ctu on the original computer and it all worked after that.
Quite strange I wonder if the firmware was corrupted somehow on the original install. Seems odd because it happened to both xb24’s and xbp24’s which seem to use different firmware but not any of the series 2’s.
I am doing a wireless home automation system with xbee series 1 and arduino. I have made and android app to send commands to arduino that will receive the command through the ethernet shield and then send the api command to the specific xbee…
The system is working great, but when I send a command to an xbee put an output high or low and then send a command to another xbee with a delay about half second or less both xbees do nothing and the rssi from both blinks for about 2 or 3 seconds and then nothing happens, but when I send a command to only one xbee no matter how fast I do it always work the issue only occurs when I send to one and then to the other but very fast. The arduino always get the successful response from xbees.
Can you help with that ??
tengo valores extraÃ±os al enviarlos desde un arduino one con el Shield a un xbee usb exprored. ya los configure de canal id baudios y nivel de poder. loa valores que me aparecen son:
y tendria que dar en este caso solo 84, aunque es un sensor ultrasonico sfr10.
I have program my two xbee seies1 modules in such away that one is transmitting and the other is receiving.However i noticed that the transmitter is always transmitting even when there is no data from the USART.
please i need help
how many(need a max value) routers can add to the XbeeS2B pro module,the S2B works as a coordinator.
Hi Mr. Faludi,
I have this problem:
I use extended sleep for an XBee series 2 using this values: SP=140, SN=14, SO=4, so i expect the module to sleep for 64 seconds. In my surprise the module sleeps for about 50 seconds and not for the (expected) 64 seconds. I use 2 AAA batteries to power the module. Any idea why this is happening?
What do you have ST set for?
Problem solved, thank you anyway!
why don’t you share what was wrong, so others can learn from it?
I have the Bee Adapter v1.4 from http://www.ElecFreaks.com and am trying to program an XBee S1 and can not ever get it to see the radio. I have updated the USB driver and am running Win7 64-bit. I tested the radios with a serial programmer and the radios are fine. I ordered 2 usb adapter bees and both do the same thing and have also tried 2 separate usb cords. Any help would be appreciated to connect and communicate with these radios thru the Bee Adapter v1.4
you mean the com port doesn’t shows that xbee adapter is being connected with the port? its same mine problem
I want to transfer images using xbee, xbee shield and arduino as intermediate nodes while I will have USB doggle+xbee as sender and sink connected to 2computers. Can you advise the xbee type to use? is there any device to sniff the packet at the receiver? any other useful advise will help. Thank You
Any XBee will work with Arduino. The most popular one is the 802.15.4 model. Try XCTU to read the packets at the receiving computer.
In a multihop network,from point A to B, how can I configure all the xbee pro, In such a way that A can transmit to B and B to C, C to D, D to E and so on?
If you are using ZigBee or DigiMesh this will happen automatically, without any need for user configuration.
I have a problem to connect to an xbee module. I tried to connect to the module via a xbee shield (using the shield connected to arduino) and using xbee adapter straight to pc(via usb).
I tried different baud rates. The xbee module doesn’t respond. This module was taken from a working environment so it is working but I connnet connect to it. Any information would be appreciated
our xbee(s2 v1.1) is giving 0.8v drop across 1(vcc) and 10(gnd)..although suplly is 3.3 if we are disconnecting the xbee module….
How to Configure Xbee series radios for multi-hop Communication?
XBee ZB (ZigBee) and DigiMesh radios come pre-configured for mesh multi-hop communication. No configuration is required.
Hi Mr. Faludi,
I’m stuck in a serial communication between Digi Xbee ConnectPort X3 and an embedded board . Digi Xbee is in python code . I’m sending the temperature and light sensor values from digi to the board in the form a packet(Sync|Low Byte | High Byte | Data | Checksum) which the device accepts . I tested both the devices seperately . They work perfectly. I send data to the embedded board from my computer using pyserial it receives data perfectly (around 30 data). Then I checked whether the Digi is sending data perfectly using my computer in COM Port. But when I connect the Digi device to the board the digi sends very few data(1 to 3) ie I can debug the digi Xbee to an extend in which i see after sending few data the COM port of Digi Xbee closes .
I have added part of the source code of Digi Xbee for your understanding
# Retrieve a sample reading from the LT
io_sample = xbee.ddo_get_param(sensor_address, “is”)
light = parseIS(io_sample)[“AI1”]
temp = parseIS(io_sample)[“AI2”]
hum = parseIS(io_sample)[“AI3”]
mVanalog = (float(temp) / 1023.0) * 1200.0
temp_C = (mVanalog – 500.0)/ 10.0 # – 4.0
lux = (float(light) / 1023.0) * 1200.0
print “hum:%f” %hum
no_temp = len(str(temp))
no_light = len(str(light))
for c in t:
if c == '.':
for c in t:
if c == '.':
if checksum == 256:
print "Checksum Value after applying mod operator:%d" %checksum
print "packet:%s" %packet
bytes_written = write(packet)
print "bytes_written : %s value : %s" %(bytes_written,packet)
IÂ´ve got a XBee serie 1 and IÂ´m working in API mode.
From time to time, when I send a data the acknowledge received is wrong. An example. I send a remote AT command (0x17)and I receive a right remote comand response (0x97), but, sometimes the ack is wrong or even I donÂ´t receive any ack.
Thanks a lot for your help.
Sounds like you might be near the edge of your radio’s range?
I have 2 xbee modules (https://www.sparkfun.com/products/10414), coordinator and router. Both are in API mode. They communicate fine, but the problem is that if I send bytes to serial port in a row (without delay) xbee module does not react at all.
If I put delay between bytes everithing works ok.
You also wrote about “Sending continuously without any delay (try 10ms delay)”. Why should I put delay between bytes?
Without the delay you may be overflowing the buffer. The radio is fast but your microcontroller is faster. There’s nothing magic about 10ms specifically, so try different delays until you get one that works. You can also sample frequently and send messages that contain multiple readings which might help, as each message you send comes with transactional overhead.
Thank you for your response.
I know that Zigbee is not supposed to be used for streaming data, but I’m trying to transfer voice over the network.
When I use 9600 baud rate, for instance, I have to put 1ms delay between bytes in API frame. So sending 20 bytes through UART takes 40ms, which makes translation twice slower (4800 bps). If the higher baud rate is set the delay between bytes can be reduced proportionally (1ms delay for 9600, 500us for 19200, 250us for 38400 and so on).
For 115200 baud rate (max baud rate for my modules) the delay between sending bytes is 85us. Does it mean that the highest data rate for this case will be 57600bps ?
Hello , I am using xbee with mbed lpc 1768.
And I am receiving the data in hex and I expect to receive in ascii or integer.
I have used Tera term, real term and XCTU also.
I am not getting the whole data.
I think the problem is with the data type format or buffer (I am using char type array to save incoming data)
I tried but I can not use the unsigned char or int type array.
anyone can help?
All data is sent binary. Hex, ASCII and so forth are displayed by your terminal interface, and that can typically be changed in the serial terminal’s settings.
Hello, I am using 2 numbers xbee pro s1 (xbp24-10ef) ,i can’t able to receive any packet data on arduino mega .i can able to communicate between two xbee module via xctu software.But arduino mega i tried xbee code on serial port1.No packet is recvng. xbee.readpacket() is not working.?
I wish to implement a wireless sensor network with a temperature and pulse rate sensor. I have used 3arduino boards, 3 shileds aand 3 xbee series2 mounted on those shields.
I have configured one coordinator and two routers(each connected to one sensor), however I dont know how to proceed further. Also being a newbie I dont know the arduino code either.
Please guide me through this.
Dear Mr. Faludi,
I am facing a weird problem with my xbees.
i am powering up the Xbee using an external power source and i’m trying to connect it wirelessly to Arduino (Serial Communication), however it is not working.
when i power the xbee from the Arduino board using jumper wires, the serial connection works. why is that happening and how can i solve it ?
Try the above suggestion about decoupling capacitors, very likely your problem is noise from your power supply and that will fix it.
Hi Rob, where I put this decoupling capacitors ? in the VCC 5v regulator(10uF) and in GND (1uF)
hello , i want help to use xbee endpoints , i don’t know how use it and connect multi device hardware with it ?
hey, actually i was connected my x-bee of s2 model with 9v, accidentally.now it shows no response with x-ctu , so could u tell me whether this problem would resolve or i lost my xbee completely.Thank youï»¿
Anything over 7 V risks burning out the XBee. So you may need to replace it. Try using recovery mode in XCTU before you give up though!
I am very much confused with mesh operation and frame sending ..when code is required API mode..etc..
One of my major doubts is…i have created a mesh network operating in AT mode…but it works only if all are configured as routers ..if i configure one radio as coordinator except that all others are receiving data.Also i want to see all data from which node etc in coordinator(gateway)..please help me…i have ambiguity over the entire thing…..Please Sir.
You don’t mention which XBee you’re using, what host platform they’re communicating with or the specific problem or error that is occurring. Are you working from examples in my book or doing something else?
I am using zigbee tarang p-20 for communication with robot(atmega16 microcontroller)…after some days my zigbee automatically changes its baud rate from 2400 to 9600…can anyone help me please?
I made a setup which consists of 3 Zigbee’s, 2 routers(Zigbee S2C’s) and 1 coordinator(Zigbee S2). The routers are each connected to arduino nano which collects data from 2 FSR’s and an IMU(frame type: zigbee transmit request and packet size 46 bytes) and sends it to the Coordinator attached to an arduino UNO. All the Xbees are in API mode 2 and working at a baud rate of 115200. I am using a library called “Simple Zigbee Library” to send all the collected data to the Coordinator. The collection and sending of data works fine except that there are packets lost in the way. The nano’s sample data at a frequency of around 25Hz independently. The coordinator tries to read the data send from the zigbees(using the library of course) in every loop, but unfortunately, it seems to receive only around 40-45 samples.(Should have been 25*2=50 samples total from the 2 xbees). Can anybody suggest why this is happening. I need as less data loss as possible for my setup to achieve its motive. Any kind of help is appreciated.
P.S: It may be important to mention that the coordinator is reading the data only from one xbee in each loop.
I am trying to send remote AT command via xbee s1 module using a c program ,but it is transmitted as normal Tx(Transmit Request 64 bit address).Please tell me how to send the remote AT command using c program .
I am using ultrasonic sensors for my project and i need to send the range found by ultrasonic sensors to the routers connected to it but i am not able to do it without delay, also i want to perform task for specific task for specific range So i need a solution so as to overcome this issue i would be thankful if i get any replies
Hello Mr. Faludi,
I’m working with XBee S1 I’m trying to make a simple project with 3 analog sensors connected to 3 Xbees (End devices) and sending data to coordinator. Everything worked fine, but i have problem with sleep mode. When i set my XBess in SLEEP MODE I don’t get any data.
My configuration for END DEVICE is:
SM = 5
ST = 14
SP = C8
IT = 1
IR = 3E8
ST and SP values are the same for END and COORDINATOR. What am i doing wrong?
Thank you for the replay!
Your settings seem fine. Just to confirm, you have pins enabled for sampling, such as D1 set to 2 or 3?
Thank you a lot for such a quick answer!
Yes, i had D0 set correctly, however my problem was solved by changing wrong A1 parameter
I just received my copy of Wireless Sensor Networks. I just received my XBee Pro S2B’s (pn XBP24BZ7SIT B003 revF). My research is telling me I purchased the programmable models. If this is the case can I still follow along with the book? As a beginner should I just get standard Series 2 models to follow along with the book?
The programmable modules should still work, but they do have substantially added complexity. As a beginner I’d recommend either the new XBee3 Zigbee modules (which have programmability too, but in a way that you can completely ignore until you’re ready) or any of the older Series 2 ZigBee modules (S2B or S2C) to keep things simple.
Thank you, I will order some different units. Save these for a rainy day.
After configuring xbee as an end device, it is not responding to +++ command and AT commands. How could I reset my xbee?
Try the XBee Recovery Tool in XCTU.
I am not using XCTU application. I am using docklight and sending AT commnads.
You’ll need to use XCTU. Docklight does not have an XBee recovery tool.
Hi, can anyone tells me if there is a way to know if receiver receive the api frame from trasnitter or do I need create that code?
I’m wondering what my issue is with my setup. I have two S2C XBee’s in combination with an arduino uno ->shield pair. I configured the XBee’s in XCTU and was able to send data from 500 feet away between the console log of XCTU and the serial monitor of the Arduino program. No matter what code I try to use whether it is moving a servo or something as simple as blinking an LED, even from code I found online that everyone has said works, I cannot get my XBee’s to communicate. The only way I can get them to communicate is as I said through programs like XCTU and Arduino, however I want them to communicate free of a laptop or computer. It seems to me the XBee’s are “expecting” their TX and RX to come through the micro usb cable and not the XBee through pins 0 and 1.
I have two S2C XBee’s in combination with an arduino uno ->shield pair. I configured the XBee’s in XCTU and was able to send data from 500 feet away between the console log of XCTU and the serial monitor of the Arduino program. No matter what code I try to use whether it is moving a servo or something as simple as blinking an LED, even from code I found online that everyone has said works, I cannot get my XBee’s to communicate. The only way I can get them to communicate is as I said through programs like XCTU and Arduino, however I want them to communicate free of a laptop or computer. It seems to me the XBee’s are “expecting” their TX and RX to come through the micro usb cable and not the XBee through pins 0 and 1.
I have 2Xbee PRO S2B, one configured as coordinator and other one as End device. I am setting up serial communication between the two. I am not able to set up bidirectional communication. Can anyone help me with this?
Also, when I am sending data from coordinator to end device, not all the bytes are getting received. Can anyone tell me the solution?