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
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.