Can anyone help me understanding operation of XBee in sleep mode?

Hello everyone,

I am new to zigbee. I have several Xbee series 2 devices. I am using AT command to configure device. In my application I have one coordinator and several end device.

If I send any data from end device to coordinator while end device is in sleep mode, coordinator does not receive any data. I have also found that device can not be configure into AT mode (by sending “+++”) while it is in sleep mode. Why does this happening…?? Is it mandatory that end device must not be in sleep mode for sending any data as well as configure it into AT mode??

If it is mandatory then how can I ensure that end device is not in sleep mode…?? any suggestion or inputs are highly appreciated.

However I can receive data from end device sent by coordinator even if end device is in sleep mode…??

Best Regards,
Niral Kalavadia

When a device is in a sleep state, that means that the it’s processor is put in a low power stand by mode (IE It has been turned off). is not not able to respond to any commands or functions. To keep you from loosing data while using sleeping devices such as an XBee in Sleep mode, you must use hardware flow control (/CTS, /RTS Etc). When not in sleep mode or when the buffer is not full, /CTS will be in a low state).


Thank you for your kind response…

“you must use hardware flow control (/CTS, /RTS Etc). When not in sleep mode or when the buffer is not full, /CTS will be in a low state).”

I am a bit of confused with this. Are you talking about in concern of end device? i.e. if coordinator send some data to end device while it is in sleep mode then end device will store it in buffer and CTS goes low. Is it so?? and if it is so how to retrieve data from buffer…??


The End devices does not store the data in its buffer. It is the parent node (Coordinator or router) that stores the data in its buffers until the end device wakes up and Polls the parent node for the data. The data is then set to the end device which in turn send the data out the UART. That is providing CTS is low.

I got the point… One more time thank you so much…

I am using cyclic sleep mode in my application. So how can I ensure that whether device is in sleep mode or not…?? So only when it is not in sleep mode I will send data or command which ensure it will get processed successfully.

What is the best recommended approach that ensures each and every command or data processed successfully while using cyclic sleep mode…??

I would suggest monitoring CTS. When the line is low, the module is awake and can send/receive data. When the line is high, the module is either in a sleep state or the buffer is full.