Search code examples
arduinoxbee

Xbee recieve packet 64 bit address is wrong?


I'm using XCTU to test sending packets. My xbee radio is configured as a Coordinator API-2 (product family XB24-ZB, firmware version 21A7, MAC address 0013A20040BCE8CB). I'm send the following transmit request frame bytes:

7E 00 12 10 01 00 00 00 00 00 00 00 00 FF FE 00 00 01 02 03 04 E7

The receive packet frame has the following bytes in the frame detail panel:

7E 00 10 90 00 7D 33 A2 00 40 BC E8 CB 00 00 01 01 02 03 04 00

My problem are the bytes in bold text (the sender's 64 bit address).

The correct bytes, as I understand it, should be:

00 13 A2 00 40 BC E8 CB

The checksum for the bytes as I receive them are wrong (0x9C).

However, if I substitute the correct bytes (i.e., I replace 00 7D 33 with 00 13, the checksum value is correct (0xFF).

I see this behavior in my Arduino code as well. I thought it was me, but I get the exact same behavior there (and in a C# project as well) as I get in the XCTU application. (Specifically, the 64 bit address always has 00 7D 33 where I'm expecting 00 13. What am I missing?

Thanx


Solution

  • Your XBee module is configured for escaped API mode (ATAP=2), which replaces the bytes 0x7D, 0x7E, 0x11 and 0x13 with 0x7D and the escaped character XORed with 0x20.

    Set ATAP=1 and you'll start seeing the expected bytes.

    Digi has a good Knowledge Base document explaining the escaped mode.