documentation
LoRa Basics™ Modem User Manual v3.4 documentation
LoRa Basics™ Modem User Manual¶
Introduction to LoRa Basics™ Modem¶
LoRa Basics™ Modem is an easy-to-use software library that simplifies the development of LoRaWAN® end-nodes. Using LoRa Basics Modem allows developers to seamlessly integrate the LoRa Cloud™ services into their applications. This integration is achieved by submitting specific uplinks to the LoRa Cloud API and routing the resulting downlinks back to the end device. The uplink submission and downlink routing process is carried out by means of the LoRaWAN network server and/or application server, as shown in the following diagram:

LoRa Basics Modem network architecture¶
LoRa Cloud is a set of cloud APIs that provide simple solutions to common tasks related to LoRaWAN networks and LoRa®-enabled devices. The LoRa Cloud services simplify the process of developing managed endpoint solutions and make building Internet of Things (IoT) solutions with LoRa and LoRaWAN more accessible to application developers. Some of the services provided by LoRa Cloud are:
Periodic information messages
System status, firmware version
Charge, temperature
Downlink signal quality
Uptime time since last downlink
Device EUI, Join EUI
Application-specific status bytes
Management commands
Mute, rejoin
Soft reset / factory reset
Set Adaptive Data Rate (ADR) profile
Change reporting interval of periodic information messages
Retrieve crash log
Advanced protocols
Large File Upload (LFU).
Reliable Octet Stream Encoding (ROSE).
Application-Layer Clock Synchronization (ALCSync).
A detailed description of the LoRa Cloud APIs can be found in the on-line LoRa Cloud documentation.
To better fit end user requirements, LoRa Basics Modem was designed with the goals of being easily portable to new microcontrollers, and to be able to use diverse Semtech transceivers. To achieve these goals, LoRa Basics Modem employs a stacked architecture in which microcontroller and transceiver interaction is carried out through the use of abstraction layers as illustrated here:

LoRa Basics Modem software stack¶
Microcontroller interaction is achieved through the use of the MCU Hardware Abstraction Layer. In order to port LoRa Basics Modem to a new microcontroller/board, the MCU Hardware Abstraction Layer must be implemented for the selected microcontroller/board combination.
The Radio Abstraction Layer, on the other hand, provides a generic interface for transceiver interaction. This interface is then implemented in each of the transceiver-specific drivers. As a result, to use a specific transceiver, solution developers simply include the driver for the selected transceiver in their code. Currently, the LR1110 transceiver is supported, with additional architectures coming in future releases.
Finally, application development is done through the use of the LoRa Basics Modem (API). The rest of this document describes the LoRa Basics Modem API.