Messages are lost between the LoRa device and the gateway/LoRa server

Dear All,

I would need to have your feedback about an issue on which I’m facing to.
I’m developing several IoT demo based on LoRa. I noted that some LoRa frames are lost between the device and the gateway/LoRa server. This issue occurs even if the device is located only a few meters from gateway/LoRa server.

Let me explain you:

  • My device is either NUCLEO-L152RE, NUCLEO-L073RZ, B-L072Z-LRWAN1 or PyCom.
  • My Gateway is a MultiConnect® ConduitTM AP Access Point for LoRa® Technology LoRaWAN TM to IP Border Gateway MTCAP-868-001A
  • My server comes from loraserver.io (of course!) in Class A: LoRa Gateway Bridge (packet-forwarder), LoRa Server and LoRa App Server

My application (on LoRa App Server side) sends a downlink message with a counter which will be incremented after.
My device makes an echo: it sends the same counter via an uplink message.
The frequency is every 10 seconds. However if the device doesn’t receive any downlink, it sends a specific value.
At the end, I check if the received value matches with the counter sent.

I have been surprised that after a while (much more shortly that I thought) the device doesn’t receive the donwlink message.

As I used 2 types of device (NUCLEO and Pycom), I have now some doubts about the gateway or the LoRaServer.

Did you experiment the same issue ? Is there a configuration issue ?
Is there a limitation (The end-device transmit duty-cycle should be lower than 1%) after which the gateway or the loraserver blocks the transmission?

Thanks in advance for your feedback.

Did you make sure the device is sending messages on channels that are perceptible by your chosen gateway?

Hello acourt,

I have made some more investigations on the subject.

It seems that sometimes downlink messages are not received in the RxWindows (Class A device).

Here is my test:

I susbcribe on the application/…/rx topic of the Mqtt broker between the Lora App server and the Application, each time a frame is received I trig a downlink by publishing on the associated tx topic:
I subscribe also on the gateway/…/rx and gateway/…/tx topics of the mqtt broker between the Lora server and the Lora GW bridge to check that downlink and uplink are correctly handled.
As far as I understand, each time I publish on application tx topic, a downlink is enqueued and the network server has to forward the downlink message at the right time.

Application topics trace samples:

2018-11-20 13:11:48,183 [14999] [spy:DEBUG] app-rx-10 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868100000,“dr”:5},“adr”:false,“fCnt”:11,“fPort”:10,“data”:“AAg=”}
2018-11-20 13:11:48,187 [14999] [spy:DEBUG] app-tx-10 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “AAk=”, “fport”: 10}
2018-11-20 13:11:58,169 [14999] [spy:DEBUG] app-rx-11 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868100000,“dr”:5},“adr”:false,“fCnt”:12,“fPort”:10,“data”:“AAk=”}
2018-11-20 13:11:58,174 [14999] [spy:DEBUG] app-tx-11 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “AAo=”, “fport”: 10}
2018-11-20 13:12:08,173 [14999] [spy:DEBUG] app-rx-12 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868500000,“dr”:5},“adr”:false,“fCnt”:13,“fPort”:10,“data”:“AAo=”}
2018-11-20 13:12:08,178 [14999] [spy:DEBUG] app-tx-12 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “AAs=”, “fport”: 10}
2018-11-20 13:12:18,168 [14999] [spy:DEBUG] app-rx-13 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868300000,“dr”:5},“adr”:false,“fCnt”:14,“fPort”:10,“data”:“AAs=”}
2018-11-20 13:12:18,173 [14999] [spy:DEBUG] app-tx-13 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “AAw=”, “fport”: 10}
2018-11-20 13:12:28,174 [14999] [spy:DEBUG] app-rx-14 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868500000,“dr”:5},“adr”:false,“fCnt”:15,“fPort”:10,“data”:“AAw=”}
2018-11-20 13:12:28,178 [14999] [spy:DEBUG] app-tx-14 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “AA0=”, “fport”: 10}
2018-11-20 13:12:38,172 [14999] [spy:DEBUG] app-rx-15 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868300000,“dr”:5},“adr”:false,“fCnt”:16,“fPort”:10,“data”:“AA0=”}
2018-11-20 13:12:38,177 [14999] [spy:DEBUG] app-tx-15 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “AA4=”, “fport”: 10}
2018-11-20 13:12:48,170 [14999] [spy:DEBUG] app-rx-16 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868100000,“dr”:5},“adr”:false,“fCnt”:17,“fPort”:10,“data”:“AA4=”}
2018-11-20 13:12:48,174 [14999] [spy:DEBUG] app-tx-16 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “AA8=”, “fport”: 10}
2018-11-20 13:12:58,245 [14999] [spy:DEBUG] app-rx-17 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868300000,“dr”:5},“adr”:false,“fCnt”:18,“fPort”:10,“data”:“AA8=”}
2018-11-20 13:12:58,249 [14999] [spy:DEBUG] app-tx-17 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “ABA=”, “fport”: 10}
2018-11-20 13:13:08,178 [14999] [spy:DEBUG] app-rx-18 :{“applicationID”:“1”,“applicationName”:“Monalisa_LAB”,“deviceName”:“lora_investigation”,“devEUI”:“1111111111111111”,“txInfo”:{“frequency”:868500000,“dr”:5},“adr”:false,“fCnt”:19,“fPort”:10,“data”:“ABA=”}
2018-11-20 13:13:08,182 [14999] [spy:DEBUG] app-tx-18 :{“confirmed”: false, “devEUI”: “1111111111111111”, “data”: “ABE=”, “fport”: 10}

gateway topics trace samples:

2018-11-20 13:11:47,939 [15004] [spy:DEBUG] gw-rx-11 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:292418355,“frequency”:868100000,“channel”:0,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-55,“loRaSNR”:8.8,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREACwAK39iwvH9X”}
2018-11-20 13:11:48,272 [15004] [spy:DEBUG] gw-tx-10 :{“token”:61068,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:293418355,“frequency”:868100000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAYyIKiOz2sELq”}
2018-11-20 13:11:57,932 [15004] [spy:DEBUG] gw-rx-12 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:302417779,“frequency”:868100000,“channel”:0,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-51,“loRaSNR”:9.5,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREADAAKrDq2XtOc”}
2018-11-20 13:11:58,265 [15004] [spy:DEBUG] gw-tx-11 :{“token”:33079,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:303417779,“frequency”:868100000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAZCIKEha4qwjP”}
2018-11-20 13:12:07,927 [15004] [spy:DEBUG] gw-rx-13 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:312417195,“frequency”:868500000,“channel”:2,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-50,“loRaSNR”:8,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREADQAKOzXWc/HT”}
2018-11-20 13:12:08,264 [15004] [spy:DEBUG] gw-tx-12 :{“token”:22460,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:313417195,“frequency”:868500000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAZSIKd7/4aAES”}
2018-11-20 13:12:17,929 [15004] [spy:DEBUG] gw-rx-14 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:322416643,“frequency”:868300000,“channel”:1,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-51,“loRaSNR”:9.2,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREADgAKkCZbYjrr”}
2018-11-20 13:12:18,262 [15004] [spy:DEBUG] gw-tx-13 :{“token”:17255,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:323416643,“frequency”:868300000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAZiIKOQxDEmIb”}
2018-11-20 13:12:27,928 [15004] [spy:DEBUG] gw-rx-15 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:332416051,“frequency”:868500000,“channel”:2,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-53,“loRaSNR”:7.5,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREADwAKR0mm2E4b”}
2018-11-20 13:12:28,270 [15004] [spy:DEBUG] gw-tx-14 :{“token”:22810,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:333416051,“frequency”:868500000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAZyIK2k2cs5/a”}
2018-11-20 13:12:37,930 [15004] [spy:DEBUG] gw-rx-16 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:342415491,“frequency”:868300000,“channel”:1,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-53,“loRaSNR”:10,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREAEAAKBS0+9xrG”}
2018-11-20 13:12:38,265 [15004] [spy:DEBUG] gw-tx-15 :{“token”:64571,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:343415491,“frequency”:868300000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAaCIKVBPiBhbr”}
2018-11-20 13:12:47,931 [15004] [spy:DEBUG] gw-rx-17 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:352414915,“frequency”:868100000,“channel”:0,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-51,“loRaSNR”:9.8,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREAEQAKd12JZUbh”}
2018-11-20 13:12:48,267 [15004] [spy:DEBUG] gw-tx-16 :{“token”:61893,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:353414915,“frequency”:868100000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAaSIKSUnU4v3p”}
2018-11-20 13:12:57,927 [15004] [spy:DEBUG] gw-rx-18 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:362414347,“frequency”:868300000,“channel”:1,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-53,“loRaSNR”:9.8,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREAEgAKEWaoZsIP”}
2018-11-20 13:13:00,101 [15004] [spy:DEBUG] gw-tx-17 :{“token”:51871,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:true,“frequency”:869525000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:12,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAaiIK50dv/X8P”}
2018-11-20 13:13:07,929 [15004] [spy:DEBUG] gw-rx-19 :{“rxInfo”:{“mac”:“0080000000011b11”,“timestamp”:372413755,“frequency”:868500000,“channel”:2,“rfChain”:1,“crcStatus”:1,“codeRate”:“4/5”,“rssi”:-59,“loRaSNR”:7.2,“size”:15,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“board”:0,“antenna”:0},“phyPayload”:“QBEREREAEwAKiBwkXbJJ”}
2018-11-20 13:13:08,267 [15004] [spy:DEBUG] gw-tx-18 :{“token”:60405,“txInfo”:{“mac”:“0080000000011b11”,“immediately”:false,“timestamp”:373413755,“frequency”:868500000,“power”:14,“dataRate”:{“modulation”:“LORA”,“spreadFactor”:7,“bandwidth”:125},“codeRate”:“4/5”,“iPol”:true,“board”:0,“antenna”:0},“phyPayload”:“YBERERGAayIK1jGZheBB”}

Normally, the downlink frame is logged (on gateway topic side) in less than 400ms after the uplink.
Sometimes, we have a strange gap, for example between gw-rx-18, and gw-tx-17 with more than 2 seconds.
It could explain why the Rx windows on my device are missed to catch the downlink.

Is there an explanation for such delay on server side?

Hello @brocaar, any idea on this delay on server side ?

This indeed could be a bug. The problem seems pretty easy to replicate. Try using another gateway to see if the issue can be replicated with a kerlink or something. If this happens with a kerlink as well, I would file a bug report on the github.