Caution
Maintenance mode: LoRa Basics Modem v4.9.3 is the last release published in this SWL2001 repository. No new features or optimizations will be added, but our support and critical bug fixing will continue. For more details, please contact the Semtech Support.
All ongoing and future LoRa Basics Modem development now takes place in USP – Unified Software Platform, which includes LoRa Basics Modem and succeeds this repository.
👉 Start your migration: the USP LoRa Basics Modem Porting Guide describes what changes compared to SWL2001, how to migrate a project (build commands, CMake options, memory footprint comparison), and the current known limitations.
LoRa Basics Modem proposes a full implementation of the TS001-LoRaWAN L2 1.0.4 and Regional Parameters RP2-1.0.3 specifications.
LoRa Basics 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 Basics 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 Basics Modem embeds an implementation of the LoRaWAN certification process
- LoRaWAN certification process TS009-1.2.1
LoRa Basics 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 your
PATH. -
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 your
PATH. -
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.