Thursday, June 21, 2012

XBee 10C0 Firmware Fix

If you're like me and you've been working with XBee radios for a long time, then you may have encountered the 10C0 firmware problem. Some time in 2007-ish, MaxStream (now Digi) released a firmware upgrade for the XBee Series 1 (the 802.15.4 version), moving from version 10A5 to version 10C0. I diligently updated the firmware on all my XBees at the time, using the X-CTU configuration tool.

Many years have passed since then, during which I probably got a new computer. And at some point when I tried to move on to even newer firmware (10ED is the latest as of today), I found that the 10C0 firmware had disappeared from newer versions of X-CTU. And, because all other evidence that the 10C0 firmware had ever existed was also gone, it was impossible to read from or write to the XBees with that firmware version. This also made it impossible to upgrade the firmware to a newer, supported version.

Calls to Maxsteam/Digi were not very helpful - nobody seemed to know what version 10C0 was or why it had disappeared. The firmware list skips from 10A5 to 10CD. It's possible it was a buggy firmware and was taken down. Another story I heard was that it was a custom, OEM-specific firmware not meant for general release. In any case, it left me with a bunch of bricked XBees from the 2006 era.

No seriously...a lot of freaking XBees.
To be fair, they weren't complete bricks. They could still be used to talk to each other or to newer XBees with the same settings. They could also be configured manually through a serial terminal. They just couldn't be configured or updated with X-CTU, which is far more convenient. I still use them occasionally for simple projects or lend them out to people from whom I don't expect to get them back, but for the most part I have a bin full of not-very-useful 10C0 XBees.

...until now...

Here is the rough procedure I used to recover 10C0 XBees and update the firmware:

First, the root of the problem seems to be a missing "configuration file" for 10C0. So I found a folder full of things that seemed like configuration files. On my machine, it's under:

Program Files > Digi > XCTU > update > xbee

And it has two types of files, *.ehx, which I would guess is the actual binary file for the firmware, and *.mxi, which appears to be the mysterious configuration file. (It's ASCII-format text and has all the common settings listed.) The filenames have the format:

XB24_15_4_1xxx.mxi - XBee firmware version 1xxx.
XBP24_15_4_1xxx.mxi - XBee Pro firmware version 1xxx.

Missing are the 10C0 firmware files:

XB24_15_4_10C0.mxi
XBP24_15_4_10C0.mxi

If they're not missing, you might be having a different problem with uploading firmware and you should try other solutions. If the files are present but you've tried everything else, just delete them. Next, copy and paste the two 10CD firmware files into a separate folder. That's:

XB24_15_4_10CD.mxi
XBP24_15_4_10CD.mxi

In the new folder, rename them:

XB24_15_4_10CD.mxi --> XB24_15_4_10C0.mxi
XBP24_15_4_10CD.mxi --> XBP24_15_4_10C0.mxi

This isn't enough to turn them into valid 10C0 configuration files, though. Next, open each one in a text editor and edit the first line of the file to change it to a 10C0 configuration file:

Change the highlighted text from 10CD to 10C0 in both files.

Save the files and then copy them back into the original folder. These will be the dummy 10C0 configuration files. They're not perfect, but they seem to allow X-CTU to at least read to and write from the 10C0 XBees. Open X-CTU and confirm that you can read the XBee parameters and that 10C0 now appears in the Version dropdown box for both XB24 and XBP24 modem types:


After ensuring that you can read the parameters off the 10C0 radio, it's time the get the hell off that firmware ASAP. Change the Version dropdown to whatever the latest version is (10ED here) and check "Always update firmware", then Write the new firmware and parameters to the radio. I presume if you've made it this far, you know what's required for normal firmware updating. You need an XBee adapter that has the capability of updating firmware (DTR and RTS connected). It's a good idea do a regular firmware upgrade on a different radio as a test.

That's it. Enjoy your newly liberated XBees.

2 comments:

  1. Hey thanks for the ideas. I had the same problem. I do have a lot of the older numbers for series 1 XBP24 10CD & 10E2 - though my note say to stick with 10A5
    I also have XBP900Mhz

    ReplyDelete
    Replies
    1. How do you like the 900MHz XBee? I'm thinking about getting some of those for range-critical stuff. Seems like 900MHz would be a much cleaner frequency.

      Delete