Calculate and verify checksums

To calculate the checksum of an API frame:

  1. Add all bytes of the packet, except the start delimiter 0x7E and the length (the second and third bytes).
  2. Keep only the lowest 8 bits from the result.
  3. Subtract this quantity from 0xFF.

To verify the checksum of an API frame:

  1. Add all bytes including the checksum; do not include the delimiter and length.
  2. If the checksum is correct, the last two digits on the far right of the sum equal 0xFF.

Example

Consider the following sample data packet: 7E 00 08 08 01 4E 49 58 42 45 45 3B

Byte(s) Description
7E Start delimiter
00 08 Length bytes
08 API identifier
01 API frame ID
4E 49 AT Command
58 42 45 45 Parameter value
3B Checksum

To calculate the check sum you add all bytes of the packet, excluding the frame delimiter 7E and the length (the second and third bytes):

7E 00 08 08 01 4E 49 58 42 45 45 3B

Add these hex bytes:

0x08 + 0x01 + 0x4E + 0x49 + 0x58 + 0x42 + 0x45 + 0x45 = 0x01C4

Now take the result of 0x01C4 and keep only the lowest 8 bits which in this example is 0xC4 (the two far right digits). Subtract 0xC4 from 0xFF and you get 0x3B (0xFF - 0xC4 = 0x3B). 0x3B is the checksum for this data packet.

If an API data packet is composed with an incorrect checksum, the XBee/XBee-PRO Zigbee RF Module will consider the packet invalid and will ignore the data.

To verify the check sum of an API packet add all bytes including the checksum (do not include the delimiter and length) and if correct, the last two far right digits of the sum will equal FF.

0x08 + 0x01 + 0x4E + 0x49 + 0x58 + 0x42 + 0x45 + 0x45 + 0x3B = 0x01FF