- C 99.3%
- Assembly 0.4%
- CMake 0.3%
| .vscode | ||
| cmake | ||
| Core | ||
| Drivers | ||
| LoRaWAN | ||
| Middlewares/Third_Party | ||
| Utilities | ||
| .clangd | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| LICENSE.md | ||
| README.md | ||
| Seeed-LoRa-E5 Debug.launch | ||
| Seeed-LoRa-E5.ioc | ||
| Seeed-LoRa-E5.pdf | ||
| Seeed-LoRa-E5.txt | ||
| startup_stm32wle5xx.s | ||
| STM32WLE5JCIX_FLASH.ld | ||
| STM32WLE5XX_FLASH.ld | ||
Seeed-LoRa-E5
LoRaWAN end node built from scratch using STM32CubeIDE/CubeMX for the LoRa-E5 WLE5x
STM32CubeMX: v6.16.1 STM32CubeIDE: v2.0.0
Initial integration of FreeRTOS support in branch FW1.4.0-FreeRTOS - somewhat tested, Class A periodic ULs.
This project can be freely re-configured with CubeMX and re-generated. Note that if you do that, you must add code for the peripherals you add, which is not different than any other STM32CubeMX project. I can offer limited help with these kinds of changes.
If something doesn't appear right, or if you implement new LoRaWAN features, please feel free to open a PR.
UPDATE 18 Jan 2026: I have updated to STM32WL firmware v1.4.0, and specifically tested NVM storage of context (including devNonce). Version 1.4.0 also addresses a serious issue with the ADC hanging on power-on after being in the STOP state. I have promoted V1.4.0 to the default repo.
If you're looking for an RAK3172 version of this, have a look at https://github.com/danak6jq/RAK3172
Note: the project defaults to disabling SWD/probe pins and enabling low-power mode. For development with an ST/Link, I recommend enabling the debugger and disabling low-power mode.
This assumes a general familiarity with STM32CubeIDE and LoRaWAN concepts.
If you haven't used STM32CubeIDE before, I suggest doing a couple of smaller projects using ST Nucleo boards to familiarize yourself.
From the Seeed-Studio repo: Before starting
-
Please read Erase Factory AT Firmware section first, you need to retrieve and save the Device EUI, then erase the Factory AT Firmware before we program with SDK
-
Install V1.7.0 or later STM32CubeIDE(to compilation and debug) and STM32CubeProgrammer(to program STM32 devices). Launch STM32CubeIDE and install V1.1.0 of STM32Cube MCU Package for STM32WL series(SDK)
-
LoRaWAN Gateway connected to LoRaWAN Network Server(e.g. TTN; I am using a local gateway and local ChirpStack server)
-
Prepare an USB TypeC cable and a ST-LINK. Connect the TypeC cable to the TypeC port for power and serial communication, connect the ST-LINK to the SWD pins like this (recommend connecting Vcc and nRST as well):
- Before erasing the Seeed factory AT firmware, get the Device EUI. Connect a USB-C cable to the LoRa-E5, and send AT command AT+ID=DevEui to get your Device EUI:
- Do not lose this Device EUI; it is unique for each LoRaWAN device. If you manage to lose the Device EUI, you are able to retrieve it by scanning the QR code on the LoRa-E5 chip using a generic QR code scanner.
Building the repo
- Clone this repo onto a system with STM32CubeIDE, v1.7.0 or later. Using "Open Projects From Filesystem"
- Locate and open the top-level directory of the cloned repo:
-
Modify your Device EUI, Application EUI, Application KEY and your LoRawan Region
-
Use Cube to reconfigure the project to your LoRaWAN commissioning parameters:
and
- Save the IOC file and generate code when prompted:
- Note that generating code overwrites many files; in particular, if you've selected Hybrid Mode to operate a in a sub-band, you need to check and correct the channel mask after generating code - example here is for US915 Sub-band 2:
- Build project and program it into the LoRa-E5



