4 - Implementing Adaptive Data Rate

Adaptive Data Rate (ADR) describes the scheme whereby the network server controls the data rate, RF transmit power, and channels an end device uses when sending uplinks, as well as the number of retransmissions made.

The network server uses the Received Signal Strength Indicator (RSSI) of the messages received from the end device to determine how close the end device is to the nearest gateway(s). This allows the network server to select the most appropriate settings for each end device.

The benefits of ADR are that it helps preserve the battery life of an end device and reduces interference, giving all end devices on the network the best chance of communicating successfully.

Processing LinkADRReq MAC Command

Respond with LinkADRAns

The end device must respond to a LinkADRReq command by sending the Link ADR Answer (LinkADRAns) command back to the network server. The LinkADRAns consists of two octets, as shown in Figure 1. The first octet contains the CID, which indicates the MAC command type. The second is a status octet that indicates which of the requested changes were accepted in the PowerACK, DataRateACK and ChannelMaskACK bit fields.

Diagram showing the structure of the LinkADRAns MAC Command

Figure 1: Structure of the LinkADRAns MAC command

The response sent in the LinkADRAns command varies depending on whether the end device is implementing ADR or not.

When ADR Is Being Implemented

If the end device is implementing ADR, then either none or all of the changes requested will have been applied, as described in the previous section Apply Changes.

If all the changes were applied, the LinkADRAns must be sent with all the status bit fields (PowerACK, DataRateACK and ChannelMaskACK) set to 1. The end device must now begin to operate the ADR backoff procedure, described in the section ADR Backoff.

If none of the changes were applied, the LinkADRAns must be sent with all the status bit fields (PowerACK, DataRateACK and ChannelMaskACK) set to 0.

When ADR Is Not Being Implemented

If the end device is not implementing ADR, then respond as follows:

  • ChannelMaskACK: If the channel mask changes in the request were applied, respond with the ChannelMaskACK status bit set to 1. If the channel mask changes were not applied, respond with the ChannelMaskACK status bit set to 0.

  • DataRateACK: Respond with the DataRateACK bit set to 0.

  • PowerACK: Respond with the PowerACK bit set to 0.

If the channel mask changes in the request were applied, the end device must now begin to operate the ADR backoff procedure, described in the section ADR Backoff.