Hello everyone, I’m having an issue with remote sensors.
The scenario is as follows:
we have a Milesight UG67 gateway (installed on a 30-meter-tall tower), and the end nodes are 9 units of the EM300-TH brand (Milesight), installed at a height of 1.5 meters each.
Operating on the AU915 band, with ChirpStack V3 NS and AS servers updated to the latest version on google cloud integrated with mqtt (QoS) 0.
We’ve tried everything, such as setting the installation_margin value to 12 in the chirpstack-network-server.toml file. We’ve also enforced the Maximum Allowed Data Rate in the service profile to be 4, which sets it to SF8, preventing it from dropping to SF7 (if left unchecked, it drops to SF7 but never returns to SF8 or SF9).
The end nodes don’t change SF, only changed until after rejoin.
The sensors are in fixed locations, but they exhibit significant variation in Signal-to-Noise Ratio (SNR) values. There’s no interference signal from cell phones (GSM coverage is very weak). I’m struggling to find a way to mitigate these disconnections.
The frames are sent every 20 minutes. Both the end nodes and the GW (Gateway) and LNS (LoRa Network Server) are configured on channels 8-15. The RP002-1.0.3 (AU915) settings are also configured. I would like to avoid disabling ADR (Adaptive Data Rate).
Here are the questions addressed:
1.Does ChirpStack V4 offer any improvements for distant nodes?
2.Is there a data loss rate for nodes using SF8, SF9, or even SF10?
3. Should I consider the coverage limit reached when end nodes reach the GW with SNR > -7.5 approximately? What is the purpose of using SF8 → SF10 if it doesn’t mitigate packet loss?
4. Do you know of a way to mitigate this?
5. we should reclaim to miesigth?
{
"txInfo": {
"frequency": 923300000,
"power": 30,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 500,
"spreadingFactor": 12,
"codeRate": "4/5",
"polarizationInversion": true
},
"board": 0,
"antenna": 0,
"timing": "DELAY",
"delayTimingInfo": {
"delay": "2s"
},
"context": "mMHGTw=="
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataDown",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 33,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": {
"margin": 1,
"gwCnt": 1
}
}
]
},
"fPort": null,
"frmPayload": null
},
"mic": "694e365a"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T15:01:42.360998Z",
"timeSinceGPSEpoch": "1376838120.360s",
"rssi": -116,
"loRaSNR": -8.8,
"channel": 2,
"rfChain": 0,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16156,
"longitude": -66.22438,
"altitude": 186,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "mMHGTw==",
"uplinkID": "s/ee4W4KTQ6S8zqqRPLYZw==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 917200000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 68,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": null
}
]
},
"fPort": 85,
"frmPayload": [
{
"bytes": "82lFuKnlpg=="
}
]
},
"mic": "59f7ae55"
}
},
{
"txInfo": {
"frequency": 923300000,
"power": 30,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 500,
"spreadingFactor": 12,
"codeRate": "4/5",
"polarizationInversion": true
},
"board": 0,
"antenna": 0,
"timing": "DELAY",
"delayTimingInfo": {
"delay": "2s"
},
"context": "CbWYYQ=="
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataDown",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 32,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": {
"margin": 0,
"gwCnt": 1
}
}
]
},
"fPort": null,
"frmPayload": null
},
"mic": "9171282c"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T14:21:42.420945Z",
"timeSinceGPSEpoch": "1376835720.420s",
"rssi": -117,
"loRaSNR": -10.2,
"channel": 3,
"rfChain": 0,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16146,
"longitude": -66.22436,
"altitude": 215,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "CbWYYQ==",
"uplinkID": "BJeFTnxrSGKrrs/Ht6QrWQ==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 917400000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 66,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": null
}
]
},
"fPort": 85,
"frmPayload": [
{
"bytes": "iR15PlKA1Q=="
}
]
},
"mic": "2e952a06"
}
},
{
"txInfo": {
"frequency": 923300000,
"power": 30,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 500,
"spreadingFactor": 12,
"codeRate": "4/5",
"polarizationInversion": true
},
"board": 0,
"antenna": 0,
"timing": "DELAY",
"delayTimingInfo": {
"delay": "2s"
},
"context": "eqlr9A=="
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataDown",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 31,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": {
"margin": 0,
"gwCnt": 1
}
}
]
},
"fPort": null,
"frmPayload": null
},
"mic": "fc898be4"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T13:41:42.481283Z",
"timeSinceGPSEpoch": "1376833320.481s",
"rssi": -117,
"loRaSNR": -10,
"channel": 5,
"rfChain": 1,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16146,
"longitude": -66.22436,
"altitude": 215,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "eqlr9A==",
"uplinkID": "8Q8zeLPySI+7VhorR8bv/g==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 917800000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 64,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": null
}
]
},
"fPort": 85,
"frmPayload": [
{
"bytes": "ap44I8h8Og=="
}
]
},
"mic": "4d660ce6"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T11:21:43.607337Z",
"timeSinceGPSEpoch": "1376824921.607s",
"rssi": -118,
"loRaSNR": -8.8,
"channel": 7,
"rfChain": 1,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16153,
"longitude": -66.22444,
"altitude": 174,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "hf2EPg==",
"uplinkID": "Skcn9Q5lQLe5LrDv/0uPeQ==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 918200000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 57,
"fOpts": null
},
"fPort": 85,
"frmPayload": [
{
"bytes": "VZVxxkT90A=="
}
]
},
"mic": "edd8ed54"
}
},
{
"txInfo": {
"frequency": 923300000,
"power": 30,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 500,
"spreadingFactor": 12,
"codeRate": "4/5",
"polarizationInversion": true
},
"board": 0,
"antenna": 0,
"timing": "DELAY",
"delayTimingInfo": {
"delay": "2s"
},
"context": "PncWgg=="
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataDown",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 30,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": {
"margin": 0,
"gwCnt": 1
}
}
]
},
"fPort": null,
"frmPayload": null
},
"mic": "35b8dbda"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T11:01:42.615070Z",
"timeSinceGPSEpoch": "1376823720.615s",
"rssi": -117,
"loRaSNR": -12,
"channel": 2,
"rfChain": 0,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16153,
"longitude": -66.22444,
"altitude": 174,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "PncWgg==",
"uplinkID": "YpkiQVPqQ5+uHkSbwl1P2g==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 917200000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 56,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": null
}
]
},
"fPort": 85,
"frmPayload": [
{
"bytes": "z8Hdw48SDg=="
}
]
},
"mic": "97a40dfb"
}
},
{
"txInfo": {
"frequency": 923300000,
"power": 30,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 500,
"spreadingFactor": 12,
"codeRate": "4/5",
"polarizationInversion": true
},
"board": 0,
"antenna": 0,
"timing": "DELAY",
"delayTimingInfo": {
"delay": "2s"
},
"context": "IF255A=="
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataDown",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 29,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": {
"margin": 0,
"gwCnt": 1
}
}
]
},
"fPort": null,
"frmPayload": null
},
"mic": "e44ffb25"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T09:41:42.669109Z",
"timeSinceGPSEpoch": "1376818920.669s",
"rssi": -117,
"loRaSNR": -11.5,
"channel": 1,
"rfChain": 0,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16153,
"longitude": -66.22444,
"altitude": 174,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "IF255A==",
"uplinkID": "V90ILHDPT5GjFsVw2Yf2/g==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 917000000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 52,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": null
}
]
},
"fPort": 85,
"frmPayload": [
{
"bytes": "9Rw8WMlHGg=="
}
]
},
"mic": "ff97b4cd"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T09:21:42.678203Z",
"timeSinceGPSEpoch": "1376817720.678s",
"rssi": -117,
"loRaSNR": -6.8,
"channel": 6,
"rfChain": 1,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16154,
"longitude": -66.22441,
"altitude": 187,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "2NdRfQ==",
"uplinkID": "j4l2l+yvRKakdgyNdDDJzA==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 918000000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 51,
"fOpts": [
{
"cid": "LinkADRReq",
"payload": {
"channelMaskAck": true,
"dataRateAck": true,
"powerAck": true
}
}
]
},
"fPort": 85,
"frmPayload": [
{
"bytes": "CGxbdGORyA=="
}
]
},
"mic": "a9bb6adf"
}
},
{
"txInfo": {
"frequency": 923300000,
"power": 30,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 500,
"spreadingFactor": 12,
"codeRate": "4/5",
"polarizationInversion": true
},
"board": 0,
"antenna": 0,
"timing": "DELAY",
"delayTimingInfo": {
"delay": "2s"
},
"context": "kXNZRg=="
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataDown",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 28,
"fOpts": [
{
"cid": "LinkCheckReq",
"payload": {
"margin": 0,
"gwCnt": 1
}
},
{
"cid": "LinkADRReq",
"payload": {
"dataRate": 4,
"txPower": 14,
"chMask": [
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
true,
true,
true
],
"redundancy": {
"chMaskCntl": 0,
"nbRep": 1
}
}
}
]
},
"fPort": null,
"frmPayload": null
},
"mic": "86d58cfd"
}
},
{
"rxInfo": [
{
"gatewayID": "JOEk//71W8w=",
"time": "2023-08-23T09:01:44.944242Z",
"timeSinceGPSEpoch": "1376816522.944s",
"rssi": -117,
"loRaSNR": -10,
"channel": 3,
"rfChain": 0,
"board": 0,
"antenna": 0,
"location": {
"latitude": -39.16154,
"longitude": -66.22441,
"altitude": 187,
"source": "UNKNOWN",
"accuracy": 0
},
"fineTimestampType": "NONE",
"context": "kXNZRg==",
"uplinkID": "9j/SkTBaRRChyUqLAdacfQ==",
"crcStatus": "NO_CRC"
}
],
"txInfo": {
"frequency": 917400000,
"modulation": "LORA",
"loRaModulationInfo": {
"bandwidth": 125,
"spreadingFactor": 8,
"codeRate": "4/5",
"polarizationInversion": false
}
},
"phyPayload": {
"mhdr": {
"mType": "UnconfirmedDataUp",
"major": "LoRaWANR1"
},
"macPayload": {
"fhdr": {
"devAddr": "00f2197e",
"fCtrl": {
"adr": true,
"adrAckReq": false,
"ack": false,
"fPending": false,
"classB": false
},
"fCnt": 50,
"fOpts": [
{
"cid": "LinkADRReq",
"payload": {
"channelMaskAck": true,
"dataRateAck": true,
"powerAck": true
}
},
{
"cid": "LinkCheckReq",
"payload": null
}
]
},
"fPort": 85,
"frmPayload": [
{
"bytes": "7x9IGEO+Uw=="
}
]
},
"mic": "9b21091e"
}
},
]
I’ll also share some examples of LoRa communication frames. I understand that packet losses can occur, but consecutive windows of 3 or 4 or more packets are not acceptable. Apologies for my English, which was translated using GPT chat.