Replies: 3 comments 10 replies
-
First thing to note is that this project strictly follows the LoRaWAN specifications. Furthermore the LoRaWAN stack implementation is validated by the LCTT LoRaWAN certification tool. US915 and AU915 regions where designed to use 64 channels gateways. Therefore when using 8 channels gateways one needs to accept the drawbacks induced by their usage. To answer your points 1 and 2 it is up to the network providers to correctly handle the usage of 8 channels gateways when 64 channels gateways are required. The best solution is to have the network server to send the CFList with correct channel mask when transmitting the JoinAccept. Concerning point 3 there is nothing in the specifications saying that the same channel used for the JoinReq must be used for the first uplink. Furthermore this would be unlawful according to the FCC regulations where the channels must hop between transmissions. The observed behavior will be the same for all versions of this project. As a side note: The LoRaWAN communications are between an end-device and a Network Server. A gateway is an entity that converts received/transmitted LoRaWAN frames from one medium to another (RF from/to IP network). A gateway role is passive. In the future it would be nice if you could post this kind of questions on the project Discussions tab. It is a better place to engage discussions and then we can agree if it is an issue or not. |
Beta Was this translation helpful? Give feedback.
-
Assuming you are using the embedded network server on the Multitech GW. This feature is only supported by end-device stacks after RP002 was released. So by default it is not sent to all devices. If the device is identified as using LoRaWAN 1.0.3 or greater, using a device profile, the Multitech Network Server can send the optional CFList in the Join Accept. |
Beta Was this translation helpful? Give feedback.
-
The Join Request does not have a field to identify between 1.0.1 and 1.0.4 implementations. As this is the first and only message it would need to identify this in order to work as you are expecting. Definitely check with Multitech regarding enabling this on the gateway side. |
Beta Was this translation helpful? Give feedback.
-
On the Multitech GWs in US915, they only use 8 channels at a time out of the 64 (called a sub-band).
The JOIN as sent from the stack, is randomly sent among the subbands until one goes through to the GW. This process in itself is annoying and takes a long time, but then the problem repeats for the first uplink message, as it also has to cycle through the subbands unless a mechanism directs the stack to only use the correct subband.
There are 2 such mechanisms and 1 mitigation available as far as I can see, but none work with this stack and the Multitech.
After a successful Uplink received at the GW, the GW will send a Link ADR back to the stack, telling it which channels to limit to. The Multitech sends this, so everything works fine after the first Uplink is (eventually) received but takes a very long time in some cases.
The JoinAccept can relay a CFList from the GW to the stack, directly telling the stack which channels it supports. This is implemented in the stack but unfortunately the Multitech GW does not send anything here (!)
If the stack receives an empty CFList, the rule is that you are supposed to send the first Uplink on the same channel you used for the successful JoinRequest - this is decoded on the stack into applyCFList.JoinChannel, but never used (this is a bug or a TODO I guess?). See ProcessRadioRxDone(). If this had worked, then 1) would solve the problem as the first Uplink would come on the correct subband and then the Link ADR request would solve it.
I've noted that this issue of subbands in the Join procedure is a common Lora issue, see for example this Murata thread where they seem to have the exact same problem as I have:
https://community.murata.com/s/question/0D55F00009NVnW3SAL/channel-mask-issue
I didn't look closely at the 4.6.0 release but couldn't find anything in the release notes about this (I'm on 4.5.2 currently).
Beta Was this translation helpful? Give feedback.
All reactions