Sunday, February 22, 2009

XBee ZB Pro Upgrade Pin Sleep Trick

While developing the XBee-API 0.5 release, I upgraded my series 2 (ZNet 2.5) radios to ZB (ZigBee PRO) firmware by following the Digi conversion instructions

I was able to perform the firmware flash for both radios: "API coordinator (1941)" and "API End Device (2941)", but when I attempted to read the End Device using X-CTU, I got the following error:

"Failed to enter command mode
Unable to read Version (ATVR)
Read parameters.. Failed."

After a few more attempts, the read succeeded but when I clicked "write" to save my configuration I got a similar error:

"Getting modem type....OK
Programming modem...Lost communication with modem
Write Parameters...Failed"

Woe ensues. As it turns out, the default sleep option for "API End Device (2941)" firmware is SM=4 (Cyclic Sleep); the errors occur because the radio is periodically going to sleep and waking up. Unfortunately SM=0 (No Sleep) isn't even supported in this firmware, but there is a solution. To simulate No Sleep, configure the radio to SM=1 (Pin Hibernate), and then connect Pin Sleep (pin 9) to Ground (pin 10). Credit goes to Hans (XBee-API user) for this idea.

Now to program the radio we still have to fix the sleep issue. To do this we can use the Reset pin (pin 5). The Reset is activated by connecting the Reset pin to Ground (pin 10), and then disconnecting. If you have a toggle switch handy you'll want to wire this to pin 5 and pin 10. (Remember if you are using, XBee Explorer USB, there are two extra pins (GND and 5V), as shown in the diagram)

Now toggle the switch on/off just before performing the X-CTU action (e.g. read/write). Once you have configured the radio to Pin Hibernate mode and grounded pin 9, the radio won't go to sleep and you won't need to use the Reset pin anymore.


  1. oh man, tnx for this tip, i was scared it was fried, but surprised it still worked ..

    guess AT End Device has the same issue ;)

  2. i 2 have same prob can any one help

  3. Another possible approach that I found... If you have two radios, you can use X-CTU to remotely program the device that is going into periodic sleep.

  4. Do you manage to change the 'feature set' remotely with X-CTU and a 2nd Xbee? Mine seems to
    "ignore" firmware upgrade/feature set change when I attempt to do it "over the air". Is there a pin that must be set to a certain state or something else that is preliminary? I checked the user guide but couldn't find any instructions for over the air firmware upgrade...

  5. nothing happened mate, nothing by resetting or grounding

  6. Help!

    I have a dead modem which is in the state - how can I set SM=1? I am unable to communicate with the modem (so can't send an AT command) and any download of any firmware times out.

    Is this module hosed?

    Any help is appreciated.

  7. hey i'm facing a similar problem with XBee ZB(series 2) any idea if it is necessary to try the same trick on XBee ZB(series 2) too?

  8. Hello,
    I am facing problem to communicate between two XBee PRO S2B .
    There is one COORDINATOR and one Router. I send Char 'A' to router and collect data and display on Hyper terminal. But it is not working.
    My setting on X-CTU ARE BELOW:

    Modem: XBP24BZ7
    Version: 21A7
    PAN ID: 1234
    DH: 0
    DL : FFFF
    Chanel: E
    AP: 2

    Modem: XBP24BZ7
    Function Set : ZIGBEE ROUTER API
    Version: 23A7
    PAN ID: 1234
    DH: 0
    DL: 0
    Chanel: E

    Please help me.