Xbee S2C Zigbee freezes and module stop receiving ADC Samples

I’m using modules Xbee S2C PRO Zigbee to make a wireless sensor network, it is already with a newest firmware version (4061). The end-device module is measuring temperature through ADC Reads. It has IR selected on a great value 10s, for the module send to the coordinator just one time. In the network I have also a router and one coordinator that is conected to a computer, that reads data through serial communication.
The parameters of all modules are the same:
ST=FA (250ms)
SP=AF0 (28s) is the maximum
SO=2 on the end device (is not using SO=4, because Digi’s Technical support recommended SO=2, due to doesn’t happen data loss.
The module seems to work great at the beginning, but after some time, just receiving the data samples, the communication looks unstable.
Some periods it results on more than one hour without receiving any messages, but after that, the end device sends a node identification fram and starts all again.
This is a critical application, I can’t loose 1 hour of data.
I am already in contact to support of Digi, but due to the critical time I decided to write a post here too.
Does anyone had some problem like this?


Try increasing your ST time frame and decrease your sleep time on the end device.

Digi Support

1 Like

Hi, I was tryng to use the minimum ST possible to save battery. I just need one sample every 5 minutes, so if I decrease my sleep time I will use even more battery.
But I’ll try out with these new settings, any new idea is great!

From the sounds of it, the device is becoming disassociated. Also try sending a poll request from your Coordinator using the remote AT command function.

Yes, I think it got disassociated too, but what problem could be? Something in the firmware maybe? I saw some articles, and it is very reliable, couldn’t uderstand why I still get these errors.
To send a poll request, I think I didn’t uderstand or didn’t found the right AT command or is it an IS (Force Sample)?


Yes, it would be the IS command using the 0x17 API frame.

Best guess is that the sleep time values on the two are different.


I tested some things that you’ve suggested. I Increase the ST time in all the modules (coordinator, router and end device) this made some improvements on the communication, but I’m still having some problems.

I implemented on API program to ask IS if in the past 2 minutes didn’t receive one message.
This is one of my results
27/04/2020 11:59:50 7E0016920013A200418DE0E22DBD010100000700000092039E02
27/04/2020 12:01:56 7E000F97010013A200418DE0E2FFFE49530485
27/04/2020 12:03:50 7E0020950013A200418DE0E20F15020F150013A200418DE0E2200000000202C105101E7E
27/04/2020 12:04:19 7E0016920013A200418DE0E20F15010100000700000092039EC8

So, ask IS didn’t help so much. Some time after it jus reestart sending the normal data.

Try setting the PO to 1 and your ST time frame to 110ms.

I already put this parameter on all the modules, as soon I saw the results I bring it back to the forum.
One more question, I’m using DH and DL on the end device that matchs the coordinator. The end devices automatically ping on the router? On the router I put DH and DL Matching coordinator address, is this alright? I don’t know where I could be doing wrong.

The DL and DH functions tell the radio that any data that is being sent from the UART, ADC or DIO functions of that specific modules, what module to send the data out the UART of. So unless the router has something connected to the ADC, DIO or UART, setting its DL and DH will do nothing.

Using PO=1 I get the same error that I have before, some times it disassociates, some times doesn’t answer, but at least it don’t stop for hours like before, it’s just some minutes. But I can’t loose my module for more than 5 minutes, if I want a sucessfull aplication. One thing that I observe is that the DB parameter (Signal Strength) is varying, in the best cases is 0x27 (-39dBm) and other time it is 0x4C (-76dBm), the module didn’t change of location, but the signal strength changes.

Sounds like you have noise issue. Try changing the channel mask on all three modules so that the current channel is not used. Then from the Coordinator issue a global network reset (ATNR1).

Changing the SC parameter? I left the default because this way will scan all the channels, instead of choosing anyone, I read this article https://www.digi.com/resources/documentation/digidocs/90001537/references/r_channels_zigbee.htm is that better if I choose one channel high?


I am not suggesting to choose a specific channel but to eliminate the channel you are using leaving the rest to choose. The Coordinator may have selecting it but it also may not have been having the interference at the time where you know know you probably have.

Digi Support

I see that network was using channel 24, 0x18. So I put SC mask of 5FFF in all the modules, after that from the coordinator I use ATNR1, and the devices were disassocieted and then the coordinator started. It wnt to another channel 0x12, and I lost the communication with my modules. I Try go back to 7FFF and reset the network, but still can’t reach them, when I scan the network thy aren’t there. The part it gets complicated it’s because I was testing remotely, so I can’t pick every device and reset them. Is there anyway to recover the contact? The PANID was manteined.


The ATNR1 is a global network reset. If there is another network in range and you were using the 0 value for the PAN ID, they could have gone to that network.

Digi Support

I can’t assure that isn’t a network around there, but my PAN ID is 4321, kind difficult to be the same. Anway, I’m going to go in person to check it in loco.