SWSD006 is a collection of driver, protocol stack and utility software that facilitates development of Sidewalk applications. The software includes numerous examples of how to leverage the unique capabilities of Semtech's LR11xx silicon. While the software targets the Nordic nRF52840 MCU, it is designed and distributed as a "full-source" offering, it enables users to modify the contents across multiple layers of software stack. Potential modifications include re-targeting of host MCU and LR11xx silicon, changes to the platform abstraction layer and enhancement of the packet fragmentation scheme. Please note that while software enhancement is enabled and encouraged, validation of described functionality was exclusively performed on the specified silicon variants and software component versions.
This repository implements the following functionality:
- LR11xx transceiver silicon support for Sidewalk MAC v1.16 CSS and FSK modulation
- Drivers and examples demonstrating WIFI/GNSS NAV3 geolocation features of LR11xx silicon
- LoRaWAN Class A multi-stack operation using SWL2001 - LoRa Basics Modem 4.5.0; programmatic control over both LoRaWAN and Sidewalk stacks in one firmware image
- LR11xx transceiver firmware upgrade via SWTL001 port to nRF52840
- LoRaWAN Class A + WIFI/GNSS NAV3 operation example
- An example of packet fragmentation and re-assembly (overcomes CSS packet size limitations in Sidewalk)
- AWS lambda example code demonstrating End-to-End handling of LoRa EDGE application data: from transceiver to cloud service
- A Zephyr compliant T2 topology supporting 3rd party extension of Nordic's VS Code IDE
- 'sid_dut' operation with LR11xx silicon, enabling Sidewalk Device Qualification testing
- A full-source platform abstraction layer supporting user customization of RF front-end designs and control paradigms
Before getting started, make sure you have a proper nRF Connect SDK development environment. Follow the official Installation guide.
The first step is to initialize the workspace folder (my-workspace
) where
the example-application
and all nRF Connect SDK modules will be cloned. Run the following
command:
# when doing this from bash terminal started from nordic's toolchain manager, unset ZEPHYR_BASE
# initialize my-workspace, where 'my-workspace" can be a directory name of your choice
west init -m https://github.com/Lora-net/SWSD006 --mr v2.6.1 my-workspace
# update nRF Connect SDK modules
cd my-workspace
west update
If you intend to build a LoRa Basics Modem project on the windows platform, decide on a workspace location as near the root directory as possible in order to prevent path lengths that exceed the capability of the zephyr build system on windows. This is not a concern on other platforms such as linux.
edit the project's .conf
(default is prj.conf
)
CONFIG_SIDEWALK_LINK_MASK_LORA=y # run sidewalk in CSS, or..
CONFIG_SIDEWALK_LINK_MASK_FSK=y # run sidewalk in FSK
CONFIG_RADIO_LR11XX=y # use LR11xx instead of sx126x
CONFIG_RADIO_TCXO=y # set to n if using crystal on LR11xx instead of TCXO
Devices LR1110 and LR1120 and LR1121 have compatible SPI instructions. This software will function with all these devices without modification, except for the CONFIG_RADIO_TCXO
must be configured correctly for the 32MHz reference populated on-board with the radio transceiver.
LR1121 device would typically be used with an XTAL, since it doesnt have GNSS functionality: CONFIG_RADIO_TCXO=n
for reference crystal.
All radio other configuration is declared in app_subGHz_config_lr11xx.c
, For example if you wanted to use the radio's LDO instead of it's DC-DC, you can modify the .regulator_mode =
to LR11XX_SYSTEM_REG_MODE_LDO
all example apps are built using west build -b <board> -- -DOVERLAY_CONFIG=foobar.conf
. The app to build is selected by adding -- -DOVERLAY_CONFIG=foobar.conf
- the full build command, for example:
west build -b nrf52840dk_nrf52840 -- -DOVERLAY_CONFIG=overlay-nav3sid.conf
from the directory samples/sid_end_device
enables LR11xx in prj.conf
-->
- hello
-DOVERLAY_CONFIG=overlay-hello.conf
- sensor_monitoring
-DOVERLAY_CONFIG=overlay-demo.conf
- dut, aka
sid_dut
-DOVERLAY_CONFIG=overlay-dut.conf
from the directory samples/lbm_sid_end_device
-->
- lora basics modem (lorawan end device), running in sidewalk environment
-DOVERLAY_CONFIG=overlay-lbm.conf
- NAV3 running simultanously with sidewalk (aka NAV3 in bypass mode):
-DOVERLAY_CONFIG=overlay-nav3sid.conf
- NAV3 running in lora basics modem:
- `-DOVERLAY_CONFIG=overlay-nav3lbm.conf``
- LR11xx firmware update, and almanac erase:
- build in
samples/SWTL001
directory
- build in
The included GNSS example source code is provided solely to demonstrate the GNSS scan functionality under ideal conditions. The source code and GNSS scan results are not representative of the optimal configuration or performance characteristics of the silicon. The LR11xx product family is flexible and can be embodied and configured in a multitude of ways to realize various trade-offs regarding performance, battery life, PCB size, cost, etc. The GNSS example included in this release and the corresponding evaluation kits are designed & configured by the included source code in a default capacity which is sufficient to demonstrate functional GNSS scan capability only. Care must be taken if/when attempting to assess performance characteristics of GNSS scan functionality and we strongly encourage those conducting such analysis to contact Semtech via the provided support channels so that we can ensure appropriate configuration settings are employed for a given performance evaluation use-case.
LoRa Basics Modem (LBM) library exists as a zephyr module in this project. LBM resides as branches in this repository. For example, branches lbm_v431
and lbm_v450
are different versions of LBM provided as a zephyr module. The purpose of presenting LBM as zephyr module is to minimize the path lengths given to the zephyr build system, which is required to accommodate path length restrictions on the windows platform.
The following table summarizes the compatibility of the reference design firmware with Semtech LR11xx Development Kit PCBs.
Products | Shield PCB# | Shield Note | Operation | LoRaWAN | GNSS/WiFi scan |
---|---|---|---|---|---|
LR1110MB1DIS | E516V03A | LR1110 Passive | ✔️ | ✔️ | ✔️ |
E516V02A/B | LR1110 Passive | ✔️ | ✔️ | ✔️ | |
LR1110MB1DJS | E592V02A | LR1110 Active | ✔️ | ✔️ | ✔️ |
E592V01A | LR1110 Active | ✔️ | ✔️ | ✔️ | |
LR1120MB1DIS | E655V01A | LR1120 Passive | ✔️ | ✔️ | ✔️ |
LR1120MB1DJS | E656V01A | LR1120 Active | ✔️ | ✔️ | ✔️ |
LR1121MB1DIS | E656V01A | LR1121 | 1 | ✔️ | ❌ |
SX1262MB2CAS | E499V01B | SX1262 shield | 1, 2 | ✔️ | ❌ |
(Modification) | (Any) | XTAL mounted | 1 | ✔️ | ❌ |
(Modification) | (Any) | LDO mode | 3 | ✔️ | ✔️ |