Base Packet Format

SectionField NameSizePurpose
SynchronizationPreamble4 bytesComposed of zeros to help the receiver synchronize with the signal.
SynchronizationStart-of-Packet Delimiter1 byteA specific value (0xA7) that signals the actual beginning of the packet.
PHY HeaderPHR (PHY Header)1 byte (8 bits)Contains a single field indicating the length of the payload (0–127).
PayloadPSDU (PHY Service Data Unit) bytesThe actual data content being transmitted.
Inside the payload, we have the [[#mac-frameMac Frame]].

Mac Frame

SectionField NameSize (Octets)
MAC HeaderFrame control2
MAC HeaderSequence number1
MAC Header (Addressing)Destination PAN identifier0 or 2
MAC Header (Addressing)Destination address0, 2, or 8
MAC Header (Addressing)Source PAN identifier0 or 2
MAC Header (Addressing)Source address0, 2, or 8
MAC PayloadFrame payloadVariable
MAC FooterFrame check sequence2
  • The sequence number is an 8-bit monotonically incrasing number.
  • The frame check sequence is a 16-bit CRC.

There are a couple different frame types:

  • Beacon
  • Data
  • MAC Command
  • Acknowledgement

Throughput

If we assume the best possible case for data transmission,

  • 122 Bytes per packet, 250 kbps 3.904 ms
  • inter-frame spacing of 40 symbols, 62.5 kBaud 0.640 ms
  • So,

Compared to BLE Advertisements at 9.92 kbps, this is better. But compared to BLE connections at 520 kbps, it is worse.