I am seeing something similar. I have disabled ADR in LMIC and it doesn’t look like I’m seeing that. So what’s left seems to be some other link setup. I am sure I was getting 2 uplinks I didn’t initiate before I disabled ADR. It’s too late for me to check on that again today.
I’ve downloaded the messages from the TTN console and am using the packet decoder linked to above to examine them. I am doing my best to decode the FOpts, please forgive me if I’m wrong.
I’m wondering what happens if I don’t let LMIC free-run and send these uplinks. Our old LMIC code doesn’t use the LMIC task scheduling and only calls os_runloop_once in a tight loop between us initiating an uplink and getting a TX_COMPLETE event so LMIC never gets a chance to think about it’s internal state, aside from joining.
Anyway, here are the messages.
My first uplink, I think the 0D in FOpts is my network time request.
TS: 2022-04-11T04:50:26.477855356Z
Assuming base64-encoded packet
QL6EDSYBAAANCs6EZFZUZQ==
Message Type = Data
PHYPayload = 40BE840D260100000D0ACE8464565465
( PHYPayload = MHDR[1] | MACPayload[..] | MIC[4] )
MHDR = 40
MACPayload = BE840D260100000D0ACE84
MIC = 64565465
( MACPayload = FHDR | FPort | FRMPayload )
FHDR = BE840D260100000D
FPort = 0A
FRMPayload = CE84
( FHDR = DevAddr[4] | FCtrl[1] | FCnt[2] | FOpts[0..15] )
DevAddr = 260D84BE (Big Endian)
FCtrl = 01
FCnt = 0000 (Big Endian)
FOpts = 0D
Message Type = Unconfirmed Data Up
Direction = up
FCnt = 0
FCtrl.ACK = false
FCtrl.ADR = false
The response from the server. FOpts has 0D again, with 5 bytes 24767E4F46
which I guess is the time. Then 07, new channel req? If so, that takes another 5 bytes 07A0AF8C50
which leaves 0905
TxParamSetupReq with its single byte of data.
TS: 2022-04-11T04:50:26.699742103Z
Assuming base64-encoded packet
YL6EDSaOAAANJHZ+T0YHB6CvjFAJBXKZBn8=
Message Type = Data
PHYPayload = 60BE840D268E00000D24767E4F460707A0AF8C5009057299067F
( PHYPayload = MHDR[1] | MACPayload[..] | MIC[4] )
MHDR = 60
MACPayload = BE840D268E00000D24767E4F460707A0AF8C500905
MIC = 7299067F
( MACPayload = FHDR | FPort | FRMPayload )
FHDR = BE840D268E00000D24767E4F460707A0AF8C500905
FPort =
FRMPayload =
( FHDR = DevAddr[4] | FCtrl[1] | FCnt[2] | FOpts[0..15] )
DevAddr = 260D84BE (Big Endian)
FCtrl = 8E
FCnt = 0000 (Big Endian)
FOpts = 0D24767E4F460707A0AF8C500905
Message Type = Unconfirmed Data Down
Direction = down
FCnt = 0
FCtrl.ACK = false
FCtrl.ADR = true
Here is the uplink I didn’t initiate. 0703
could be the new channel answer, leaving 09
as the tx params setup answer, which has no payload. This was sent by LMIC while my code was just letting it run via run_osloop_once() being called every time loop() is called - so a tight loop. There is no port or payload, my code is running the standard LMIC-node so uses port 10, payload a 2-byte counter.
TS: 2022-04-11T04:50:59.583994131Z
Assuming base64-encoded packet
QL6EDSYDAQAHAwnGfM01
Message Type = Data
PHYPayload = 40BE840D26030100070309C67CCD35
( PHYPayload = MHDR[1] | MACPayload[..] | MIC[4] )
MHDR = 40
MACPayload = BE840D26030100070309
MIC = C67CCD35
( MACPayload = FHDR | FPort | FRMPayload )
FHDR = BE840D26030100070309
FPort =
FRMPayload =
( FHDR = DevAddr[4] | FCtrl[1] | FCnt[2] | FOpts[0..15] )
DevAddr = 260D84BE (Big Endian)
FCtrl = 03
FCnt = 0001 (Big Endian)
FOpts = 070309
Message Type = Unconfirmed Data Up
Direction = up
FCnt = 1
FCtrl.ACK = false
FCtrl.ADR = false
The next uplink. Another of mine, expected port & payload, not FOpts.
TS: 2022-04-11T04:51:32.382424763Z
Assuming base64-encoded packet
QL6EDSYAAgAKiSTtuQUF
Message Type = Data
PHYPayload = 40BE840D260002000A8924EDB90505
( PHYPayload = MHDR[1] | MACPayload[..] | MIC[4] )
MHDR = 40
MACPayload = BE840D260002000A8924
MIC = EDB90505
( MACPayload = FHDR | FPort | FRMPayload )
FHDR = BE840D26000200
FPort = 0A
FRMPayload = 8924
( FHDR = DevAddr[4] | FCtrl[1] | FCnt[2] | FOpts[0..15] )
DevAddr = 260D84BE (Big Endian)
FCtrl = 00
FCnt = 0002 (Big Endian)
FOpts =
Message Type = Unconfirmed Data Up
Direction = up
FCnt = 2
FCtrl.ACK = false
FCtrl.ADR = false