3 - Receiving Messages

Messages sent from a network server to an end device are referred to as downlinks. These are sent to the end device via a single gateway. If there are multiple gateways near a device, the network server will select the most suitable gateway to broadcast from. This means the end device does not need to consider de-duping.

Devices operating in Class A mode only receive downlinks during the receive windows opened following an uplink, as described in the section Opening Receive Windows of the Sending Messages Book.

Devices that support Class B mode as well as Class A can receive additional downlinks in receive windows opened at fixed time slots. Read more about Class B mode in the Class B Book.

Devices that support Class C mode as well as Class A can receive additional downlinks at any time. Read more in the Class C: Continuously Listening for Downlinks book.

Todo

Fix link

In this book, you learn how to receive and handle downlink packets using the LoRaWAN® 1.0.4 specification.

Processing the Downlink Packet

Verify and Update the Frame Counter (FCnt)

The frame counter is used to ensure that the end device does not process the same message twice, as well as to avoid being attacked by an adversary replaying old messages which could be used to manipulate an end device.

The frame counter is found in the two-octet FCnt field, located inside the Frame Header within the MAC Payload, as shown in Figure 1.

downlink-packet-fcnt

Figure 1: FCnt field highlighted in the LoRaWAN® downlink packet structure

The end device must keep track of a downlink specific frame counter (FCntDown) in memory. The value of FCntDown is set to 0 when the device is first activated, explained in the End Device Activation Book.

If the FCnt value in the downlink is lower than or equal to the current value stored in FCntDown, this message must be ignored.

If the FCnt value in the downlink is greater than the current value of FCntDown, the end device must update the value of FCntDown to the FCnt value and then continue to process the message.