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_UPLINK
Or, 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 flash
Under 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.