XB8 80k, behaviour of changing SP an ST values synchronous cyclic sleep

Dear Digi forum users,

I want to implement the following behaviour, which I can’t get to work on a “XB8-DMUS-002 rev. G, firmware 8074”:

“When the system (none-coordinator) is powered, I want to enable cyclic sleep(ATSM8), with short sleep/wake cycle, API mode enabled. If the XBEE cannot sync. to the network for during e.g. 5min, I want to power off the system for 4hours (or even longer).
This cycle is repeated over and over again, until the xbee is synced to the network or power has been lost (drained battery). The xbee wakes up my host MCU, by using the SLEEP_OUPUT pin of the xbee”

During my test, there is only 1 XBEE alive, so it cannot synchronize to the network (because there is no network).

The following happens (all mentioned AT-commands are successful accepted, some param. values are not mentioned):

(1) [SYSTEM IS POWERED ON] (XBEE is loaded with factory defaults):
+++ … OK // enter CMD mode
ATRE … OK // factory defaults (just to be sure)
ATAP1 … OK // API mode enabled
ATIDx … OK // network ID
ATCE0 … OK // standard router
ATDHx … OK // coordinator high address
ATDLx … OK // coordinator low address
ATSM0 … OK // sleep mode OFF (just to be sure)
ATSOA …OK // non-sleep coord., early wakeup disabl.
ATST2000 … OK // 2sec.
ATSP200 … OK // 2sec.
ATCN … OK // exit cmd mode

init. above all successful, xbee keeps on, continue executing “(2) [ENABLE FAST CYCLIC SLEEP/WAKE]”
The AT-COMMANDS used below are issued using API LOCAL AT COMMAND frame, however, for simplicity I mention the “COMMAND mode” equivalents.

ATSM0 … OK // sleep mode OFF (normal mode)
ATST2000 … OK // 2sec.
ATSP200 … OK // 2sec.
ATSM8 … OK // sleep mode ON (synchronous cyclic sleep)

xbee stays on for ~7sec, than goes to sleep for ~4 seconds, than continues executing “(3) [FAST CYCLIC SLEEP/WAKE]”

Why are the newly set SP and ST values NOT used? Module always on –> new ST and SP values –> SCYCLIC SLEEP MODE.
I expect that the new SP and ST values are used, and not, the values stored in (looks like) none-volatile mem. (factory defaults in this case), are used.

ATSQ0 … OK // reset missed sync counter (executed once, at entry)

xbee awake for 2 sec, xbee asleep for 2 sec. Behaviours is correct. When the missed sync. counter reaches a certain value, continue executing “(4) [UPDATE CYCLIC SLEEP/WAKE]”

ATSM0 … OK // sleep mode OFF (normal mode)
ATST2000 … OK // 10sec.
ATSP1440000 OK // 4hours.
ATSM8 … OK // sleep mode ON (synchronous cyclic sleep)

xbee awake for 2 sec, xbee asleep for 2 sec, continue executing “(5) [SLEEPING]”

–> QUESTION : I also expect here that the xbee uses the NEW set ST and SP times, because we turn sleep mode on and off? Why is this not happening? However, I can live with the extra 2sec. on and 2sec. (previous settings) off before activating the 4hours sleep.


–> BEHAVIOUR: xbee awake for 4 hours(??), than a sleep for 4 hours.

–> QUESTION : Why is the wake-time altered? This should not happen, even if the previous wake time is used.

It looks like that the old SP and ST are used after turning on cyclic sleep from normal mode. Also, the wake-time is altered at some point.
I do not issue an ATWR command at any point, so the none-volatile memory in the XBEE stays at factory defaults (that is what I want).
I don’t have the reset pin or sleep pin (xbee input) connected to the MCU, so I want to implement the above behaviour by using the RX/TX interface only.

Thanks in advance,


You are using a Synchronous sleep function. You must have a 2nd module configured as the Cyclic Sleep Coordinator for that function to work.