Perform adaptive data rate (ADR) with Amazon IoT Core for LoRaWAN - Amazon IoT Core
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Perform adaptive data rate (ADR) with Amazon IoT Core for LoRaWAN

To optimize the device transmission power consumption while making sure that messages from the end devices are received at the gateways, Amazon IoT Core for LoRaWAN uses adaptive data rate. Adaptive data rate instructs the end devices to optimize the data rate, transmission power, and the number of retransmissions while attempting to reduce the error rate of the packets received at the gateways. For example, if your end device is located close to the gateways, adaptive data rate reduces the transmission power and increases the data rate.

How adaptive data rate (ADR) works

To enable ADR, your device must set the ADR bit in the frame header. Once the ADR bit is set, Amazon IoT Core for LoRaWAN sends the LinkADRReq MAC command and your devices respond with the LinkADRAns command which includes the ACK status of the ADR command. Once your devices ACK the ADR command, it will then follow the ADR instructions from Amazon IoT Core for LoRaWAN and adjust the transmission parameter values for optimal data rate.

The Amazon IoT Core for LoRaWAN ADR algorithm uses the SINR information in the uplink metadata history to determine the optimal transmission power and data rate to use for the devices. The algorithm uses the 20 most recent uplink messages that start once the ADR bit is set in the frame header. To determine the number of retransmissions, it uses the packet error rate (PER), which is a percentage of the total number of packets that are lost. When you use this algorithm, you can only control the range of data rates, that is, the minimum and maximum limits for the data rates.

Configure data rate limits (CLI)

By default, Amazon IoT Core for LoRaWAN will perform ADR when you set the ADR bit in the frame header of your LoRaWAN device. You can control the minimum and maximum limits for the data rate when creating a service profile for your LoRaWAN devices using the Amazon IoT Wireless API operation CreateServiceProfile, or the Amazon CLI command, create-service-profile.

Note

You cannot specify the maximum and minimum data rate limits when creating a service profile from the Amazon Web Services Management Console. It can only be specified using the Amazon IoT Wireless API or the Amazon CLI.

To specify the minimum and maximum limits for the data rate, use the DrMin and DrMax parameters with the CreateServiceProfile API operation. The default minimum and maximum data rate limits are 0 and 15. For example, the following CLI command sets a minimum data rate limit of 3 and a maximum limit of 12.

aws iotwireless create-service-profile \ --lorawan DrMin=3,DrMax=12

Running this command generates an ID and an Amazon Resource Name (ARN) for the service profile.

{ "Arn": "arn:aws:iotwireless:us-east-1:123456789012:ServiceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d", "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d" }

You can get the values of the parameters specified using the Amazon IoT Wireless API operation GetServiceProfile, or the Amazon CLI command, get-service-profile.

aws iotwireless get-service-profile --id "12345678-a1b2-3c45-67d8-e90fa1b2c34d"

Running this command generates the values for the service profile parameters.

{ "Arn": "arn:aws:iotwireless:us-east-1:651419225604:ServiceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d", "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d", "LoRaWAN": { "UlRate": 60, "UlBucketSize": 4096, "DlRate": 60, "DlBucketSize": 4096, "AddGwMetadata": false, "DevStatusReqFreq": 24, "ReportDevStatusBattery": false, "ReportDevStatusMargin": false, "DrMin": 3, "DrMax": 12, "PrAllowed": false, "HrAllowed": false, "RaAllowed": false, "NwkGeoLoc": false, "TargetPer": 5, "MinGwDiversity": 1 } }

If you've created multiple profiles, you can use the API operation, ListServiceProfiles, or the Amazon CLI command, list-service-profiles to list the service profiles in your Amazon Web Services account, and then use the GetServiceProfile API or the get-service-profile CLI command to retrieve the service profile for which you customized the data rate limits.