XBee PRO S2B Bootloader Issue [SOLVED]

I’ve spent all weekend beating my head against this and I think I finally understand the problem. I’d like some Digi advice on what to do.

The issue seems to be roughly that:

1.) The “example” bootloader included with the XBee/CodeWarrior dev kit is required to do anything interesting with the S2B.
2.) Unfortunately this bootloader doesn’t seem to support all the stuff to make X-CTU work (at all) that the pre-loaded bootloader does.
3.) You can’t (afaik) re-load the original bootloader and so once you overwrite it, you’re out of luck when it comes to X-CTU and more importantly, the new bootloader does not seem to successfully load the “ebl” firmware files so you’re also basically stuck with whatever the last firmware you loaded was.

It’s possible that I’m missing something here but I have tried everything I can think of. With the “new” bootloader, firmware appears to upload successfully but then fails on reset (the BLResetCause reaches BL_CAUSE_BAD_APP - not for nothing, this “clever” programming took me a good hour to find. Not sure what the aversion to for loops here is…). I’ve tried loading the following files with the X-CTU terminal as well as other 3rd party terminals:

XBP24-ZB_23A7_S2B.ebl (ROUTER API)

At this point I don’t really care which one loads, I just need a working FW as I’m running out of “unbricked” devices.

Please advice if the original bootloader is available (it may be - the digi forums have helpfully been down for the last few days so my info is limited and I’m tired of working on this particular XBee problem) or if I have to send my devices back.

Based on what I have been able to find I believe many people are experiencing similar issues to this and maybe just haven’t fully characterized it yet (or maybe I’m way off, but something is wrong).

Ok, a little more info. I’m still confused as to what is going on but I now understand that I’m probably getting the Freescale bootloader confused with the EM250. Using bypass mode I’m now able to talk to one of my devices. However, the other one is now in some state that is preventing me from successfully accessing the EM250. Is it possible this is a result of loading the DIO ED firmware?

I’ve tried doing this procedure in bypass mode:


But that’s sort of tricky and I’m trying to reset the SM250 by shorting the pins on the back. At any rate, I’m not getting the bootloader menu back but maybe that’s not unexpected…

Never mind, I think that was it but I was able to rewrite the firmware over the air!



Hello jefffhaynes,

Thank you for your descriptive post. It seems that yes, you confussed Freescale bootloader with EM250. And yes, if you flash DIO ED firmware you will not be able to communicate through serial port because it doesn’t has one.

You can find more information on bootloader behavior in the XBee Help in CodeWarrior.

If it happens again, with latest bootloader you can bypass also the reset line so you can access ember’s bootloader through freescale’s bootloader (doing twice the RTS/Break/Reset handshake). It’s done with the & option, basically, once you send [/b]&[/b] to freescale’s bootloader, the PXBee becomes a “non-programmable” until you cycle power. It should help if you accidentally “brick” a programmable XBee.


It seems that the original comment got corrupted by HTML tags. What fgilmar meant is that the option is a plain ampersand ‘&’ (no quotes).