LoRa uses two types of packet formats for data transmission: explicit and implicit.
In explicit mode, a LoRa packet includes the following elements:
Preamble is used to synchronize the receiver with the transmitter. It MUST consist of 8 symbols for all regions as mentioned in the LoRaWAN Regional Parameters document. However, the radio transmitter will add another 4.25 symbols resulting in a final preamble length of 8 + 4.25 = 12.25 symbols.
PHDR (Physical Header) is an optional element only present in the explicit mode that contains information about payload size and CRC (Cyclic Redundancy Check).
PHDR_CRC (Header CRC) is an optional field that contains an error detecting code for correcting errors in header.
The PHDR and PHDR_CRC are encoded with the Coding Rate of 4/8.
PHYPayload contains the complete frame generated by the MAC layer. The maximum payload size varies by DR (Data Rate) and is region-specific.
CRC is an optional field that contains an error detecting code for correcting errors in the payload of uplink messages.
The PHYPayload and CRC are encoded with one of the Coding Rates (4/5, 4/6, 4/7, or 4/8). The complete frame is then sent using one of the Spreading Factors (SF = 7 to 12).
The following figure shows the physical layer structure of uplink and downlink packets that uses explicit mode.
Physical structure of an uplink packet
Physical structure of a downlink packet
In implicit mode, the header is removed from the packet where the payload size and Coding Rate are fixed or known in advance.
Beacons use LoRa radio packet implicit mode for sending time synchronizing information from gateways to the end devices.
The following figure shows the structure of a LoRa packet that uses the implicit mode.
Physical structure of a beacon