Hi Tom,
The screenshot is from TTN. I don’t have a problem with TTN, so far. The problem is with another network, MyDevices. The profile they set up for my sensors expects MAC 1.0.2, Regional Parameters Rev B.
While watching uplink/downlink traffic, I noticed that TTN has not been sending downlinks. However, after the first uplink, MyDevices sends a packet back to the sensor. I previously called this an unsolicited downlink. MyDevices didn’t like my nomenclature. This was their reply:
Our network server is not sending an unsolicited downlink message. In fact, it is sending a Mac Command that the device should at least interpret. The downlink our network server is sending is a MAC Command on fPort 0 indicating that ADR is enabled on the server and the device should comply. If the device doesn’t support ADR, it shouldn’t stop working and instead refuse the ADR requests. We have a handful of devices that receive unsupported ADR requests from the server, but continue to send uplink data.
I’m attaching the logs from our server to send to device manufacturers for review.
Here’s the log they sent (.json):
[
{
“downlinkMetaData”: {
“txInfo”: {
“gatewayID”: “AACAApz1CcA=”,
“frequency”: 925100000,
“power”: 20,
“modulation”: “LORA”,
“loRaModulationInfo”: {
“bandwidth”: 500,
“spreadingFactor”: 7,
“codeRate”: “4/5”,
“polarizationInversion”: true
},
“board”: 0,
“antenna”: 0,
“timing”: “DELAY”,
“delayTimingInfo”: {
“delay”: “1s”
},
“context”: “t3YPSw==”
}
},
“phyPayload”: {
“mhdr”: {
“mType”: “UnconfirmedDataDown”,
“major”: “LoRaWANR1”
},
“macPayload”: {
“fhdr”: {
“devAddr”: “01f4e1fa”,
“fCtrl”: {
“adr”: true,
“adrAckReq”: false,
“ack”: false,
“fPending”: false,
“classB”: false
},
“fCnt”: 0,
“fOpts”: [
{
“bytes”: “AwAAAHADMAD/AQ==”
}
]
},
“fPort”: null,
“frmPayload”: null
},
“mic”: “da33519b”
}
},
{
“uplinkMetaData”: {
“rxInfo”: [
{
“gatewayID”: “AACAApz1CcA=”,
“time”: null,
“timeSinceGPSEpoch”: null,
“rssi”: -35,
“loRaSNR”: 9.5,
“channel”: 3,
“rfChain”: 0,
“board”: 0,
“antenna”: 0,
“location”: {
“latitude”: 0,
“longitude”: 0,
“altitude”: 0,
“source”: “UNKNOWN”,
“accuracy”: 0
},
“fineTimestampType”: “NONE”,
“context”: “t3YPSw==”,
“uplinkID”: “fp+zpKk2Sq60Tpt52DiARQ==”,
“crcStatus”: “CRC_OK”
}
],
“txInfo”: {
“frequency”: 904500000,
“modulation”: “LORA”,
“loRaModulationInfo”: {
“bandwidth”: 125,
“spreadingFactor”: 7,
“codeRate”: “4/5”,
“polarizationInversion”: false
}
}
},
“phyPayload”: {
“mhdr”: {
“mType”: “UnconfirmedDataUp”,
“major”: “LoRaWANR1”
},
“macPayload”: {
“fhdr”: {
“devAddr”: “01f4e1fa”,
“fCtrl”: {
“adr”: false,
“adrAckReq”: false,
“ack”: false,
“fPending”: false,
“classB”: false
},
“fCnt”: 0,
“fOpts”: null
},
“fPort”: 20,
“frmPayload”: [
{
“bytes”: “S+iqKg==”
}
]
},
“mic”: “38ad024c”
}
},
{
“downlinkMetaData”: {
“txInfo”: {
“gatewayID”: “AACAApz1CcA=”,
“frequency”: 925100000,
“power”: 20,
“modulation”: “LORA”,
“loRaModulationInfo”: {
“bandwidth”: 500,
“spreadingFactor”: 10,
“codeRate”: “4/5”,
“polarizationInversion”: true
},
“board”: 0,
“antenna”: 0,
“timing”: “DELAY”,
“delayTimingInfo”: {
“delay”: “5s”
},
“context”: “to0HjA==”
}
},
“phyPayload”: {
“mhdr”: {
“mType”: “JoinAccept”,
“major”: “LoRaWANR1”
},
“macPayload”: {
“bytes”: “Ut72loh7XJ+ABZWT”
},
“mic”: “56d96546”
}
},
{
“uplinkMetaData”: {
“rxInfo”: [
{
“gatewayID”: “AACAApz1CcA=”,
“time”: null,
“timeSinceGPSEpoch”: null,
“rssi”: -34,
“loRaSNR”: 10.5,
“channel”: 3,
“rfChain”: 0,
“board”: 0,
“antenna”: 0,
“location”: {
“latitude”: 0,
“longitude”: 0,
“altitude”: 0,
“source”: “UNKNOWN”,
“accuracy”: 0
},
“fineTimestampType”: “NONE”,
“context”: “to0HjA==”,
“uplinkID”: “xyzA9FbFSY2vDBCVnbo+wQ==”,
“crcStatus”: “CRC_OK”
}
],
“txInfo”: {
“frequency”: 904500000,
“modulation”: “LORA”,
“loRaModulationInfo”: {
“bandwidth”: 125,
“spreadingFactor”: 10,
“codeRate”: “4/5”,
“polarizationInversion”: false
}
}
},
“phyPayload”: {
“mhdr”: {
“mType”: “JoinRequest”,
“major”: “LoRaWANR1”
},
“macPayload”: {
“joinEUI”: “425249474e4f4c45”,
“devEUI”: “70b3d5068000178f”,
“devNonce”: 14010
},
“mic”: “d742b72e”
}
},
{
“downlinkMetaData”: {
“txInfo”: {
“gatewayID”: “AACAApz1CcA=”,
“frequency”: 927500000,
“power”: 20,
“modulation”: “LORA”,
“loRaModulationInfo”: {
“bandwidth”: 500,
“spreadingFactor”: 10,
“codeRate”: “4/5”,
“polarizationInversion”: true
},
“board”: 0,
“antenna”: 0,
“timing”: “DELAY”,
“delayTimingInfo”: {
“delay”: “5s”
},
“context”: “tYH85A==”
}
},
“phyPayload”: {
“mhdr”: {
“mType”: “JoinAccept”,
“major”: “LoRaWANR1”
},
“macPayload”: {
“bytes”: “VWG4v49AMBoihzDg”
},
“mic”: “1d567d76”
}
},
{
“uplinkMetaData”: {
“rxInfo”: [
{
“gatewayID”: “AACAApz1CcA=”,
“time”: null,
“timeSinceGPSEpoch”: null,
“rssi”: -35,
“loRaSNR”: 11.3,
“channel”: 7,
“rfChain”: 1,
“board”: 0,
“antenna”: 0,
“location”: {
“latitude”: 0,
“longitude”: 0,
“altitude”: 0,
“source”: “UNKNOWN”,
“accuracy”: 0
},
“fineTimestampType”: “NONE”,
“context”: “tYH85A==”,
“uplinkID”: “to0xcUPiRl6U44bHzy2gog==”,
“crcStatus”: “CRC_OK”
}
],
“txInfo”: {
“frequency”: 905300000,
“modulation”: “LORA”,
“loRaModulationInfo”: {
“bandwidth”: 125,
“spreadingFactor”: 10,
“codeRate”: “4/5”,
“polarizationInversion”: false
}
}
},
“phyPayload”: {
“mhdr”: {
“mType”: “JoinRequest”,
“major”: “LoRaWANR1”
},
“macPayload”: {
“joinEUI”: “425249474e4f4c45”,
“devEUI”: “70b3d5068000178f”,
“devNonce”: 3431
},
“mic”: “77d2b45c”
}
},
{
“uplinkMetaData”: {
“rxInfo”: [
{
“gatewayID”: “AACAApz1CcA=”,
“time”: null,
“timeSinceGPSEpoch”: null,
“rssi”: -34,
“loRaSNR”: 10.8,
“channel”: 6,
“rfChain”: 1,
“board”: 0,
“antenna”: 0,
“location”: {
“latitude”: 0,
“longitude”: 0,
“altitude”: 0,
“source”: “UNKNOWN”,
“accuracy”: 0
},
“fineTimestampType”: “NONE”,
“context”: “tHbwjA==”,
“uplinkID”: “YbW/YXtsRXKgA2RZX6ihCQ==”,
“crcStatus”: “CRC_OK”
}
],
“txInfo”: {
“frequency”: 905100000,
“modulation”: “LORA”,
“loRaModulationInfo”: {
“bandwidth”: 125,
“spreadingFactor”: 10,
“codeRate”: “4/5”,
“polarizationInversion”: false
}
}
},
“phyPayload”: {
“mhdr”: {
“mType”: “JoinRequest”,
“major”: “LoRaWANR1”
},
“macPayload”: {
“joinEUI”: “425249474e4f4c45”,
“devEUI”: “70b3d5068000178f”,
“devNonce”: 26111
},
“mic”: “59112f39”
}
}
]
Paul