How to manually adjust Spreading Factor, and should I?


I am designing nodes which will remain stationary within a building, where a gateway will also reside.
This is using LMIC and a RFM95W module.

I am going for very low power and fairly short range communication.

My questions:

  1. How can I manually adjust the Spreading Factor of my node, since LMIC_setDrTxpow(DR_SF7,2) doesn’t seem to have any effect?
  2. I see that when I turn off ADR using LMIC_setAdrMode(false) a bunch of downlink messages disappear, which I imagine is a good thing for bandwidth/power consumption, correct? Is it shortsighted for me to be turning off ADR? I would like to follow industry best-practices.
  3. Could be difficult to answer: Given my aim of low power and short range, is it reasonable to always use SF7 / 125kHz bandwidth for my application?

Thank you so much!

As an additional detail, I notice that with ADR enabled (and the node right next to the gateway), about 8% of traffic for each of my nodes is downlink ADR commands from the gateway. Doesn’t this seem like a lot?

These disappear entirely with ADR disabled.

You using OTTA or ABP?

Having the node next to the gateway is not a good idea to be honest, better to have in different rooms at least.

Having ADR set is in essence handing over the SF level to the backend to manage based on connection stats.

Depends on what you mean by ‘fairly short range’ and the construction and size of the building and where the gateway is located.

In general buildings can significantly reduce ranges that you might see reported for outdoor applications, maybe by a factor of 100 or more.

If the ‘building’ has foil backed platerboard walls and metal\concrete floors for instance, LoRa might have problems getting from one room to the next.

If your designing nodes that need to work in a particular location then I would suggest you need to do a site survey…

If I understood well LoRaWAN functioning, this traffic should stabilize at some point. If too many packets, check they are correctly received (do they make some difference in SF?). Anyway, in LMIC normally LMIC_setDrTxpow has effect.

This is OTAA, ah got it. This is just for dev purposes, but I understand how things can be strange in the near-field

Interesting! I never saw that stabilization happen, as the downlink ADR messages kept coming every twelfth message or so. Regarding LMIC_setDRTxPow, I did not find that it made a difference for either spreading factor or power, and then I noticed this:

Is this not your experience as well?

I know Txpower is ignored (there is a comment in the example), but I am sure DR is modified. I have a tracker where I configure SF7,SF10,SF12 with jumpers :slight_smile:
Not sure if the LMIC version I am using differs in this from the mcci-catena one, or if thereis difference between US915 and EU868.

1 Like

Maybe check also this thread: LMIC Library Always Does Unwanted Downlink (I did not read thoroughly);

The Data Rate is set properly, but indeed the Tx Power parameter is not used.

FYI for those wondering, this is why I felt like the spreading factor did not make a noticeable difference:

“LMIC_setDrTxpow()` sets the spreading factor, but that will get reset by network downlinks that happen during and after a joint. In other words, you may find that you have to set the data rate several times to make things effective”

I do not know the mcci-catena version. I normally call it after joining, and my experience is that it is functioning correctly. Of course, with ADR on, SF may change, but being already at SF7 it does not do much (if everything is ok).

Slightly OT, are you sure that indoors SF7 + Power 2 is a safe choice (if the building is not small)?

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.