# A Survey on Adaptive Data Rate Optimization in LoRaWAN: Recent Solutions and Major Challenges
## 2 Technology Overview
### Adaptive Data Rate  
An essential LoRaWAN feature is the ADR scheme which seeks to minimize battery usage and maximize throughput by altering the data rate and TP for each end node in the LoRa network. Data rate adaptation in a LoRaWAN allows easy scalability of the network by the addition of gateways. Furthermore, the use of ADR significantly increases the capacity of such a network, since the data packets that are transmitted using different SFs are orthogonal and can be transmitted concurrently [23]. An ADR scheme was developed into LoRaWAN to be able to manage the end nodes' transmission parameters to improve the packet delivery ratio (PDR). The ADR controls transmission parameter settings for the UL data from the end node to the gateway. The ADR algorithm is responsible for managing the data rate and transmission power of end nodes based on the link budget estimation in the UL message and the maximum SNR required for accurately decoding data packets at the existing data rate. In the case of fixed end nodes, the NS manages the ADR depending on the history of the UL packets received, referred to as \"Network-managed ADR or Static ADR\". The network based ADR approach does not work for mobile end nodes because channel attenuation which occurs as the device moves. Where mobile end nodes are concerned, ADR is performed \"blindly\" on the end node side known as \"Blind ADR\". LoRaWAN networks employ adaptive modulation techniques with multiple channel multiple modem transceivers in the gateway to receive multiple messages from the channels. Each specific signal uses a unique SF, with orthogonal separation provided by the spread spectrum. This technique presents advantages in data rate management [24]. LoRaWAN's ADR scheme dynamically adapts the transmission parameters aiming to prolong battery life and maximize throughput. This is done by varying the data rate and TP for each end node in the LoRa network. ADR improves the data rate, ToA, and energy utilization. In LoRaWAN, varying the SF adjusts the data rate of the end nodes, thus optimizing the throughput. Nevertheless, the ADR must be utilized cautiously since the collision probability, that directly influences throughput, is affected by the change in SF. The ADR algorithm was established for stationary end nodes and stable radio channel environments [18]. The ADR scheme bases its choice of data rate on the past performance of each end node. The LoRaWAN MAC layer contains four different commands for the ADR shown in Table 2.  
Because end nodes have limited battery capacity, the performance of LoRaWAN networks is affected by power consumption. The fact that the end nodes must accommodate specific data rates further compounds the power limitation challenge because the SNR levels must be above certain thresholds as well as the power levels. Additionally, the end nodes have to respond to the channel conditions in the network. This means end nodes must have the ability to regulate the transmission rates and power levels appropriately [25]. A LoRa gateway can listen for UL messages simultaneously on every SF and BW permutation, whilst the end nodes are capable only o \begin{table}
\begin{tabular}{c c} \hline \hline
**Command** & **Description** \\ \hline ADR & End node sets this bit requesting the gateway to control its data rate. \\ ADR = 1 & NS will control the end nodes data rate \\ ADR = 0 & NS will not control the end nodes data rate \\ ADRACKReq & Allows end nodes to periodically receive confirmation that NS is receiving UL messages \\ ADRACKReq = 1 & NS should respond to confirm receipt of UL data \\ ADRACKReq = 0 & Confirmation of receipt of UL data not required. \\ LinkADRReq & Transmitted by NS to request end node to change its transmit parameters \\ LinkADRAns & Transmitted by nodes in response to LinkADRReq command \\ LinkADRAns = 1 & Transmit parameters successfully set \\ LinkADRAns = 0 & Command is discarded \\ \hline \hline \end{tabular}
\end{table} 
Table 2: LoRaWAN Adaptive Data Rate (ADR) Commands. NS: Network Server, UL: uplink.