Help recovering programmable XBees

I have two XBP9B-DMSTB002 (programmable radios) and one XBP9B-DMWT-002 (non-programmable). I have been able to use XCTU to communicate with/configure these devices using the Grove development board over USB, up until now. I am enquiring here as the recovery procedure page says: " If you have a programmable XBee, contact Digi Support for troubleshooting. ".

The programmable radios have been flashed with a configuration which I did not realize disables UART communication in favor of SPI communication. As a result, the radios are inaccessible through the USB Grove development board → XCTU app (oops. This makes sense, I made a mistake). I have attempted the recovery procedure in the XCTU app for both (before finding the recovery procedure document), which fields the error message that “There is not an active bootloader in the module.”

I have also tried discovering radio nodes in the same network, by using my non-programmable XBee on the same network ID to discover devices on the same network remotely, to no avail (the devices do not appear).

I would like to revert this configuration (ideally, applying the default configuration) to ‘recover’ the ability to use these two programmable radios over USB (over UART).

Seeking the official documentation regarding SPI on XBee, I found this relevant-looking sentence –

  • “In the rare case that a module has been configured with only the SPI enabled and no SPI master is available to access the SPI slave port, the module may be recovered to UART operation by holding DIN low at reset time.”

This seems like almost exactly what I want – however, I was wondering if this will work given that I am using programmable modules. I also was wondering what ‘kind’ of reset is required.

Any help is greatly appreciated.

Did you upload an Application to the FreeScale processor that uses the SPI port instead of the UART?

If so, you will need to use a BDM programmer to re-write or upload a new application that enable the UART instead of the SPI port.

Thanks for the swift reply.

No, I have not written any configuration to the Freescale processor, to the best of my knowledge. I have only used the XCTU app to apply a .xpro config, which I don’t think did that. The configuration simply disables UART DIN/DOUT while selecting SPI “settings” on the various SPI pins.

Given that, what steps would you suggest to change the configuration ‘back’ to have UART enabled?

I would suggest doing this from a remote radio that is connected to the PC via API mode. That is, connect a 2nd radio to the PC and place it in API mode. Make sure it is on the same network as the one in question and it can see it. Then using the remote configuration function, discover the trouble module and use the API Remote AT functions to re-enable the UART and disable the SPI port.


I have connected the non-programmable 900HP (with working UART) to the laptop and XCTU – however, discovering other modules in the network (I have already checked and the Network IDs should match) yields no results.

I have also tried using the Commissioning Button behavior documented using the Grove Development Boards (where for the PRO 900HP it seems that a Restore Defaults command is supposed to be issued, per the documentation, when the button is pushed four times). This is not working as I was expecting. Pushing the CB 4 times has no noticeable effect on the device parameters, for either the “working” non-programmable XBee or the “not-working” programmable XBees – how am I supposed to push this button (rapidly? is debounce an issue? etc.)?

Additionally, I’ve noticed that when the Programmable XBees are plugged into the (USB-powered) Grove Development board, and the Reset button is pushed, there is no effect. Could this be an indication that something is in some kind of “broken state” at a more fundamental level? For the non-programmable (“working” XBee) all board LEDs are off while the Reset button is held.

The commissioning button needs to be pressed rapidly. That is if the line was not disabled.