LoRa Basic Modem proposes a full implementation of the TS001-LoRaWAN L2 1.0.4 and Regional Parameters RP2-1.0.3 specifications.
LoRa Basic Modem embeds an implementation of all LoRaWAN packages dedicated to Firmware Update Over The Air (FUOTA):
- Application Layer Clock Synchronization (ALCSync) TS003-1.0.0 / TS003-2.0.0
- Fragmented Data Block Transport TS004-1.0.0 / TS004-2.0.0
- Remote Multicast Setup TS005-1.0.0 / TS005-2.0.0
- Firmware Management Protocol (FMP) TS006-1.0.0
- Multi-Package Access (MPA) TS007-1.0.0
LoRa Basic Modem embeds an implementation of the Relay LoRaWAN® Specification TS011-1.0.1
- Relay Tx (relayed end-device)
- Relay Rx
          +--------------------+       +------------------+
          | Wake On Radio      |       |     LoRaWAN      |
          | protocol + LoRaWAN |       | Class A, B, or C |
          +--------------------+       +------------------+
                    \                        /
                     \                      /
                      \                    /
         Relay Tx      v                  v
      ( End-Device ) <----> (Relay Rx) <----> (Gateway) <----> (Network Server)
              ^                                 ^
               \                               /
                -------------------------------
LoRa Basic Modem embeds an implementation of the LoRaWAN certification process
- LoRaWAN certification process TS009-1.2.1
LoRa Basic Modem offers:
- Geolocation services in combination with LoRa Edge chips
- 
GNU Arm Embedded Toolchain 
 The LoRa Basics Modem library is developed using:
 GNU Arm Embedded Toolchain 13.2.rel1-2 (13.2.1 20231009)
 Ensure this version (or a compatible one) is installed and available in yourPATH.
- 
Make (if building with Make) 
 Make is typically available by default on Linux systems.
- 
CMake (if building with CMake) 
 Install CMake and ensure it is available in yourPATH.
- 
Ninja (optional, if using CMake with Ninja generator) 
 Ninja must be installed if you choose to build with CMake + Ninja.
LBM library code can be found in folder lbm_lib.
Please refer to README.md to get all information related to LoRa Basics Modem library
Under lbm_examples folder, there are few examples on how to use the LoRa Basics Modem stack.
- Hardware Modem (Implements a hardware modem controlled by a serial interface)
- Periodical uplink (joins the network and then sends periodic uplinks and each time the button is pushed)
- Porting tests (Allows to verify if the project porting process is correct)
- LCTT certification (to run LoRaWAN certification)
The examples are targeted for the Nucleo L476 kit featuring an STM32L476 micro-controller.
For further details please refer to lbm_examples directory README file.
To build the periodical uplink example targeting the LR1110 Semtech radio the following should be executed on the command line:
make -C lbm_examples full_lr1110 MODEM_APP=PERIODICAL_UPLINKOr, with CMake:
cd lbm_examples
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel -DLBM_CMAKE_CONFIG_AUTO=ON -DBOARD=NUCLEO_L476 -DLBM_RADIO=lr1110 -DAPP=periodical_uplink
cd build
ninja
# This will flash a connected stm32 nucleo board
ninja flashUnder lbm_applications folder, there are 3 specific applications that are using the LoRa Basics Modem stack.
- A ThreadX Operating System running on STM32U5 (lbm_applications/1_thread_x_on_stm32_u5/README.md)
- A LBM porting on Nordic NRF52840 (lbm_applications/2_porting_nrf_52840/README.md)
- A Geolocation application running on Lora Edge (lbm_applications/3_geolocation_on_lora_edge/README.md)
An integration in Zephyr OS is available in another repository, instructions to download this integration and LoRa Basics Modem are available at LBM_Zephyr.