XBee Pro strange mode

Hello,

I have just bought 2 XBee Pro (XBP24) devices and an XBee Explorer card. The first XBee was configured successfully, but for the second one I cannot communicate with it using X-CTU.

The configuration should be the default one as on the other XBee, 9600 8N1, but I also tried all the possible baudrate without success. How is this possible? Does someone have an idea or is it possible that the XBee is broken?

EDIT: When I go in the Terminal of X-CTU, with 38400 baud, each time I write a character, the XBee usually responds “Error”. When I write a number, it responds “OK” or it sends a lot of data. For example, if i write “V”, it responds “1.0.2.1”… What is this strange mode ? How can I get back to the normal mode ?

Thanks,

never seen that sort of thing. What terminal program are you using? Do you have the RS232 signaling correct?

Tried re-flashing the firmware using XCTU?

The non-responsive (bricked) one … I’ve always been able to revive these myself, or with a phone call to Digi’s tech support.

I had never seen this either with a XBee! I used the Terminal of X-CTU. With X-CTU I didnt manage to re-flash it, it cant get the modem type. When I test the connectivity (on the first tab of X-CTU), it always says “Unable to communicate with modem”, I have tried all the possible baudrate, with or without flow-control, etc.

But, in the Terminal of X-CTU, the card responds when I write bytes in it.

When I press “V”, it writes “1.0.2.1”, which seems to be a version number, so this is very strange.

When I press “B”, it streams a lot a data.

With some keys, it returns only a HEX number, with other it returns “OK”…

Should I try to send an email to Digi’s support ?

Thanks,

Alexandre

i had the something similar happened to me… X-CTU doesn’t quite work for me when reading the received signals… it displays something strange… I even used the Hyper Terminal to communicate… then I found out that it has something to do with the serial communication that I am sending those characters…

on the transmitter side, i had the microcontroller send data to the X-Bee… then the receiver X-Bee is connected to the PC which displays it in Hyper Terminal… i found out that I had to specifically format the microcontroller data when sending it to the X-Bee…

i did a little research on serial communications… it sends data a byte at a time… so if u send a character in byte format, then the receiver x-bee would read it perfectly and displays it in byte format as well… so if you

end up sending an Ascii formatted character, it will send the byte equivalent of it to the receiver x-bee and display it in its “byte” format!!!..

so that means that in order for the receiver x-bee to display it correctly, you have to indicate to display it in its ascii format…

for example:

println(“A”);

in Arduino, this would send the byte for ascii character “A” to the serial port to display the chacter “A”… however, the microprocessor actually sent 3 bytes!.. it sent “010000010000101000001101”… a byte for the character “A” + byte for linefeed + byte for carriage return…

and if you try to display this from the receiver x-bee, it will give you garbage… so that means that you have to capture each incoming byte into a variable (one variable for each incoming byte), then only display the byte with a useful data that you want…

pseudo code:

char x; //one byte variable

x = incomingByte; //assign incoming byte to that variable

println(x, DEC) //displays the captured byte in its Ascii format

anyway, i hope this helps… correct me if i missed or did something wrong because i’m still learning X-bee stuff…

doesn’t println() actually send the string in quotes then ASCII CR and LF?

So println(“A”) would indeed by 3 bytes. So you need to read a string, not a byte.

Isn’t there a statement that omits the CR/LF you may use?

Or use bytes not strings.

Thanks for the answers.

I have a single XBee connected to an XBee Explorer board, and I communicate with it from my PC via USB, and the software X-CTU. The XBee should not send anything to the terminal as it is not connected to any other XBee, so it should not receive bytes.

The thing is that usually the XBee should only send via RF the bytes it receives through UART, but here the XBee seem to respond (via UART TX) when bytes are send on its UART RX. But I only send to it some caracters, not AP commands or API frames. And the answers it returns are neither AT commands response nor API frame, so I wonder what it is ?!?

Thanks.

Terminal mode in X-CTU echos the characters sent from the PC terminal.

Yes, the echo characters are in red, but the incoming in blue (or the opposite i dont remember). But I see what I type in red plus what is returned in blue. For example, I type V, i see V in red followed vy 1.0.2.1 in blue.

i don’t know… u guys lost me big time… =)

Tell us how your equipment is arranged and what you are trying to accomplish.

OK, it is quite simple in the end. I only wanted to configure my XBee card so that it can talk with another XBee card, but this did not work. X-CTU always indicate “Unable to communicate with modem”, I tried with all baudrate and different configurations. So, I tried to find out what the problem was, and I saw that the XBee was in a strange mode when I tried typing in the Terminal.

When configuring the XBee card, the other was not connected, so what was received in the X-CTU terminal was certainly what the XBee itself responded.

Is it more clear now ?

Thanks.

what kind of XBee card? How is the serial/USB port connected?

Does one XBee work properly with XCTU and the other does not?

The XBee Pro (Serie1) is mounted on the XBee Explorer card, the Explorer card is connected to my PC via a standard USB cable. My PC is a standard Desktop PC with WinXP SP3.

Yes, the other XBee card can be configured without any problems (with the same Explorer board and the same USB cable), and it works well, only one XBee module has this strange problem.

Thanks.

I’ve gotten Digi tech support to help revive “bricked” Xbees. They have a technique in which you pull the XBee out of the socket. run XCTU at 9600 as I recall, go through steps in XCTU to manually define the module type, e.g., XBeePRO series 1 not rev B, firmware version xx. Then tell XCTU to write firmware and plug in the XBee with power on (hot). I can’t recall the exact steps, but it has worked several times.

Now this is with the Xbee dev/demo board. I’d think it’d apply to other socketed boards.

Yes, thanks for your help, it is very much appreciated.

I have contacted Digi’s support and they gave me this : http://www.digi.com/support/forum/threa … 3566#63566

So I will get a dev board next week to apply this technique and see if it works !

Thank you all for your help.

Alex

aludra_55:
i had the something similar happened to me… X-CTU doesn’t quite work for me when reading the received signals… it displays something strange… I even used the Hyper Terminal to communicate… then I found out that it has something to do with the serial communication that I am sending those characters…

on the transmitter side, i had the microcontroller send data to the X-Bee… then the receiver X-Bee is connected to the PC which displays it in Hyper Terminal… i found out that I had to specifically format the microcontroller data when sending it to the X-Bee…

i did a little research on serial communications… it sends data a byte at a time… so if u send a character in byte format, then the receiver x-bee would read it perfectly and displays it in byte format as well… so if you

end up sending an Ascii formatted character, it will send the byte equivalent of it to the receiver x-bee and display it in its “byte” format!!!..

so that means that in order for the receiver x-bee to display it correctly, you have to indicate to display it in its ascii format…

for example:

println(“A”);

in Arduino, this would send the byte for ascii character “A” to the serial port to display the chacter “A”… however, the microprocessor actually sent 3 bytes!.. it sent “010000010000101000001101”… a byte for the character “A” + byte for linefeed + byte for carriage return…

and if you try to display this from the receiver x-bee, it will give you garbage… so that means that you have to capture each incoming byte into a variable (one variable for each incoming byte), then only display the byte with a useful data that you want…

pseudo code:

char x; //one byte variable

x = incomingByte; //assign incoming byte to that variable

println(x, DEC) //displays the captured byte in its Ascii format

anyway, i hope this helps… correct me if i missed or did something wrong because i’m still learning X-bee stuff…

I have to send API fream (ZigBee Transmit Request,API Identifier Value: 0x10) to the coordinator without specifying the coordinator’s 64-bit address. The API transmit request frame :

0x7E 0x00 0x16 0x10 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFE 0x00 0x00 0x54 0x78 032 0x43 0x6F 0x6F 0x72 0x64 FC

I received the ZigBee Transmit Status(API Identifier Value: 0x8B) already in the sender side.and receive the ZigBee Receive Packet(API Identifier Value: (0x90)) in the coordinator side.

the question is how to read the ZigBee Receive Packet(API Identifier Value: (0x90)) in hyper terminal without using X-CTU softeware,it appear as a rubbish data ,i can not understand it is hex or ascii

I’m confused: ZigBee API - you are meaning the Digi API for 802.15.4 packets? ZigBee is a layer 3 protocol OPTION for use with 802.15.4.

To do the Digi Binary API on a PC-connected XBee, you of course need your own software to implement that protocol on whatever is connected to the XBee, be that a PC or a microprocessor.

I’ve implemented that so happy to help on big picture questions.