Which LoRaWAN codebase & MCU do you use for LoRaWAN?

After doing my search on this forum, I concluded that there are two most widely used LoRaWAN codes used.

  1. Semtech’s implementation [https://github.com/Lora-net/LoRaMac-node]
  2. Latest most active derivation of IBMs LMIC [https://github.com/mcci-catena/arduino-lmic]

First, I would like to know if there are people using the Semtech’s implementation of LoRaWAN in their applications. If so, which MCU/s do you use?
If I understand correctly, Semtech’s implementation is not made work on the Arduino Atmega 328. If you are using it on an Atmega MCU(under the Arduino platform), did you port it yourself?

Secondly, and most importantly, I would like to know what MCU do you use with which LoRaWAN code base.

Thank you for your input. Thanks for your time.

1 Like

This seems an interesting statistic to know.

There is a Build Poll option in the text editor here. Maybe you could edit your post and add one.

Me, I have tried both lmic and loramac-node using STM32 controllers and RFM95 modules.

The current lmic version by mcci is meant to be used with Arduino. This comes in favor of many who want to get up and running quickly; but without some effort you are bound to Arduino. Still, after rewriting the hal.c/.h module for my platform in C I was also able to integrate it with my codebase and use it as done in the *.ino examples (see link above).

The loramac-node is Semtech’s reference implementation. In contrast to lmic it already supports LoRaWAN 1.1, Class C and the new SX1261/2 radios. Also the pre-certification results are included. In addition the developer mluis is active here and very helpful in my experience when dealing with this library.
However you need a bit more available flash when using it and, what I personally do not like, is the structure of the project you are forced into with CMake and predefined boards and apps. I rather want to take a working code base, e.g. generated from CubeMX, or depending on the manufacturer some other code generator or example project and be able to integrate a library into it. Though, I understand that for a whole network stack there has to be done a lot more than just abstract away the access to the hardware. requiring the management of timer, etc.


I’m not using the Semtech reference for two reasons:

  1. It uses a lot of resources for no apparent reason
  2. It didn’t have the porting features I wanted for running the stack in stop mode on a Cortex M0+

I wrote LDL and have used it successfully on an STM32L051R8T6 with resources to spare. This MCU has 64K of flash and 8K of RAM.

The ATMEGA328P is no good if you want all the LoRaWAN features. LDL can fit on this target but it’s more of a party trick than anything useful. There are smaller implementations out there but you will find that these leave out features.


This looks really interesting. I will give it a try as soon as I find the time to.

Also I am curious what ST will come up with for their new STM32WL. I guess some port of loramac-node but hopefully better integrated than their first attempt with I-CUBE-LRWAN.


This is a great library well worth studying. I really like the way you have developed this library. Thank you.

Perhaps you might be interested to add it in to this post:

which sort of makes an effort to centralize the LoRaWAN libraries.

It’s already there, last update was at version 0.2.1.


I think that thread is the wrong format. I think it would work better with a list of hyperlinks to project pages in the first post.

1 Like