LoRa Mesh General Questions



  • Hello!

    I was looking into the LoRa mesh network documentation and wanted to ask several questions that maybe the developers and/or someone who has more experience with LoRa mesh networks could answer.

    1. Is there a theoretical byte size limit for LoRa socket send and receive? Or perhaps a recommended size?
    2. According to my understanding of Thread and the network layer, LoRa mesh does not implement a protocol that ensures the destination receives the packages? Do developers need to ensure that destination devices send ACK packages?
    3. After reading OpenThread command lines on GitHub, I understand that there's no command that lists all non-neighbor nodes, i.e. all nodes in the local/global LoRa mesh network? Do developers need to implement a search for non-neighbor addresses if sending to a non-neighbor node?
    4. Based on the LoRa mesh documentation and my understanding of the network layer, the LoRa mesh sendTo() method can accept non-neighbor addresses, i.e. automatically find and use a path to the destination IP?
    5. Out of curiosity, when can we expect the major LoRa mesh release (along with documentation) that was scheduled for mid-August?

    I'm trying to send data from one node to a non-neighboring node.

    Thank you!



  • @sympatron

    Probably, we'll release a stable version at the end of this week, not completely sure.
    Also, as these Mesh features (Border Router) are in progress, not sure when to commit that I'll finish. Anyway, I will look into a micropython solution first, maybe some minor C code changes (released as development).



  • @catalin said in LoRa Mesh General Questions:

    1. Is there a theoretical byte size limit for LoRa socket send and receive? Or perhaps a recommended size?

    I would not use sendto() and recvfrom() with more than 1500bytes; this would be UDP max payload for a message. A recommended size would be under 256bytes, to have a single Lora message.

    I think 256 Byte would be too much to be in one LoRa packet. The Thread protocol has to have some overhead which you need to take into consideration.

    1. According to my understanding of Thread and the network layer, LoRa mesh does not implement a protocol that ensures the destination receives the packages? Do developers need to ensure that destination devices send ACK packages?

    Yes, for now, developers should assure that destination got the message (using ACK). In my sample script, I've added a naive ACK answer. Maybe we could make a micropy library for this, you can start creating/expanding the Loramesh class.

    To my understanding the Thread protocol only supports UDP. Since ACKs are not part of UDP this is expected behavior. Therefore reliability has to be handled by the application.

    1. Out of curiosity, when can we expect the major LoRa mesh release (along with documentation) that was scheduled for mid-August?

    I am actively working on improving Lora Mesh, I could see major improvements to be released end of Sept. Border Router for Wifi and LoRaWAN is also on my list. But also I want to do some field-testing.

    Do you plan to implement this before the official release of 1.19 or will you release 1.19 sooner?



  • hi @Joseph,
    Thanks for your interest in Lora Mesh.

    1. Is there a theoretical byte size limit for LoRa socket send and receive? Or perhaps a recommended size?

    I would not use sendto() and recvfrom() with more than 1500bytes; this would be UDP max payload for a message. A recommended size would be under 256bytes, to have a single Lora message.

    1. According to my understanding of Thread and the network layer, LoRa mesh does not implement a protocol that ensures the destination receives the packages? Do developers need to ensure that destination devices send ACK packages?

    Yes, for now, developers should assure that destination got the message (using ACK). In my sample script, I've added a naive ACK answer. Maybe we could make a micropy library for this, you can start creating/expanding the Loramesh class.

    1. After reading OpenThread command lines on GitHub, I understand that there's no command that lists all non-neighbor nodes, i.e. all nodes in the local/global LoRa mesh network? Do developers need to implement a search for non-neighbor addresses if sending to a non-neighbor node?

    Yes, I am working on a method for every mesh-node to be aware of all the other mesh-nodes.

    1. Based on the LoRa mesh documentation and my understanding of the network layer, the LoRa mesh sendTo() method can accept non-neighbor addresses, i.e. automatically find and use a path to the destination IP?

    Yes, mesh is able to route/relay messages to non-neighbor addresses.

    1. Out of curiosity, when can we expect the major LoRa mesh release (along with documentation) that was scheduled for mid-August?

    I am actively working on improving Lora Mesh, I could see major improvements to be released end of Sept. Border Router for Wifi and LoRaWAN is also on my list. But also I want to do some field-testing.

    Here, you could start to brainstorm some ideas for further Mesh-Lora development, but also ideas to solve some issues that you already spotted.



Pycom on Twitter