Strange problem: RFM95 + LMIC-Arduino, long JOIN delays and missing frames

Moteino and HopeRFM95
Atmel 328P and Hope RF95RFM (device says Adafruit RFM9x, but that module was not used here)
Powered on at 9:54pm, Transmit every 20 seconds.

In this case, the JOIN was under a minute, but data did not begin to populate the Application Data for 40 minutes, and then it started at counter 109. As you can see below, the Frame Counter started at 0.

Event Data for Join Request from Gateway Traffic Log. RSSI of -54 and SNR of 11.75 seems good. Gateway is about 30 feet away, 2 floors up.

{
“gw_id”: “burns_park_north_ttn_gateway”,
“payload”: “AFgAAdB+1bNwAQAAAAAAAABhtkOAyio=”,
“dev_eui”: “0000000000000001”,
“lora”: {
“spreading_factor”: 8,
“bandwidth”: 125,
“air_time”: 113152000
},
“coding_rate”: “4/5”,
“timestamp”: “2018-07-03T01:54:16.533Z”,
“rssi”: -54,
“snr”: 11.75,
“app_eui”: “70B3D57ED0010058”,
“frequency”: 905100000
}

Starting
179: engineUpdate, opmode=0x8
Packet queued
2302: EV_JOINING

Click to see the full logs
Starting
179: engineUpdate, opmode=0x8
Packet queued
2302: EV_JOINING
3471: engineUpdate, opmode=0xc
5759: TXMODE, freq=902300000, len=23, SF=7, BW=125, CR=4/5, IH=0
316269: RXMODE_SINGLE, freq=923300000, SF=7, BW=500, CR=4/5, IH=0
377930: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
387554: engineUpdate, opmode=0xc
410349: engineUpdate, opmode=0xc
410649: TXMODE, freq=903000000, len=23, SF=8, BW=500, CR=4/5, IH=0
721113: RXMODE_SINGLE, freq=923300000, SF=7, BW=500, CR=4/5, IH=0
782773: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
792398: engineUpdate, opmode=0xc
1001381: engineUpdate, opmode=0xc
1001683: TXMODE, freq=905100000, len=23, SF=8, BW=125, CR=4/5, IH=0
1316020: RXMODE_SINGLE, freq=926900000, SF=8, BW=500, CR=4/5, IH=0
1320870: EV_JOINED
1320897: engineUpdate, opmode=0x808
1321356: TXMODE, freq=907700000, len=26, SF=8, BW=125, CR=4/5, IH=0
1386973: RXMODE_SINGLE, freq=925100000, SF=8, BW=500, CR=4/5, IH=0
1449794: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
1454230: EV_TXCOMPLETE (includes waiting for RX windows)
1454275: engineUpdate, opmode=0x900
2704276: engineUpdate, opmode=0x908
2704734: TXMODE, freq=907900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
2771567: RXMODE_SINGLE, freq=925700000, SF=8, BW=500, CR=4/5, IH=0
2834387: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
2838824: EV_TXCOMPLETE (includes waiting for RX windows)
2838869: engineUpdate, opmode=0x900
4088868: engineUpdate, opmode=0x908
4089327: TXMODE, freq=908100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
4156224: RXMODE_SINGLE, freq=926300000, SF=8, BW=500, CR=4/5, IH=0
4219044: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
4223479: EV_TXCOMPLETE (includes waiting for RX windows)
4223525: engineUpdate, opmode=0x900
5473524: engineUpdate, opmode=0x908
5473983: TXMODE, freq=908300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
5540880: RXMODE_SINGLE, freq=926900000, SF=8, BW=500, CR=4/5, IH=0
5603700: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
5608136: EV_TXCOMPLETE (includes waiting for RX windows)
5608180: engineUpdate, opmode=0x900
6858180: engineUpdate, opmode=0x908
6858639: TXMODE, freq=908500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
6925535: RXMODE_SINGLE, freq=927500000, SF=8, BW=500, CR=4/5, IH=0
6988355: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
6992866: EV_TXCOMPLETE (includes waiting for RX windows)
6992912: engineUpdate, opmode=0x900
8242911: engineUpdate, opmode=0x908
8243369: TXMODE, freq=908700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
8310266: RXMODE_SINGLE, freq=923300000, SF=8, BW=500, CR=4/5, IH=0
8373086: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
8377522: EV_TXCOMPLETE (includes waiting for RX windows)
8377567: engineUpdate, opmode=0x900
9627567: engineUpdate, opmode=0x908
9628026: TXMODE, freq=908900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
9694923: RXMODE_SINGLE, freq=923900000, SF=8, BW=500, CR=4/5, IH=0
9757743: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
9762179: EV_TXCOMPLETE (includes waiting for RX windows)
9762223: engineUpdate, opmode=0x900
11012223: engineUpdate, opmode=0x908
11012683: TXMODE, freq=909100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
11079451: RXMODE_SINGLE, freq=924500000, SF=8, BW=500, CR=4/5, IH=0
11142335: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
11146643: EV_TXCOMPLETE (includes waiting for RX windows)
11146691: engineUpdate, opmode=0x900
12396692: engineUpdate, opmode=0x908
12397152: TXMODE, freq=909300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
12463857: RXMODE_SINGLE, freq=925100000, SF=8, BW=500, CR=4/5, IH=0
12526676: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
12531048: EV_TXCOMPLETE (includes waiting for RX windows)
12531096: engineUpdate, opmode=0x900
13781097: engineUpdate, opmode=0x908
13781557: TXMODE, freq=909500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
13848325: RXMODE_SINGLE, freq=925700000, SF=8, BW=500, CR=4/5, IH=0
13911145: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
13915516: EV_TXCOMPLETE (includes waiting for RX windows)
13915564: engineUpdate, opmode=0x900
15165564: engineUpdate, opmode=0x908
15166024: TXMODE, freq=909700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
15232792: RXMODE_SINGLE, freq=926300000, SF=8, BW=500, CR=4/5, IH=0
15295613: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
15299921: EV_TXCOMPLETE (includes waiting for RX windows)
15299969: engineUpdate, opmode=0x900
16549968: engineUpdate, opmode=0x908
16550428: TXMODE, freq=909900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
16617133: RXMODE_SINGLE, freq=926900000, SF=8, BW=500, CR=4/5, IH=0
16679952: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
16684324: EV_TXCOMPLETE (includes waiting for RX windows)
16684372: engineUpdate, opmode=0x900
17934373: engineUpdate, opmode=0x908
17934833: TXMODE, freq=910100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
18001601: RXMODE_SINGLE, freq=927500000, SF=8, BW=500, CR=4/5, IH=0
18064421: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
18068869: EV_TXCOMPLETE (includes waiting for RX windows)
18068916: engineUpdate, opmode=0x900
19318916: engineUpdate, opmode=0x908
19319375: TXMODE, freq=910300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
19386144: RXMODE_SINGLE, freq=923300000, SF=8, BW=500, CR=4/5, IH=0
19448964: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
19453336: EV_TXCOMPLETE (includes waiting for RX windows)
19453384: engineUpdate, opmode=0x900
20703385: engineUpdate, opmode=0x908
20703845: TXMODE, freq=910500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
20770549: RXMODE_SINGLE, freq=923900000, SF=8, BW=500, CR=4/5, IH=0
20833369: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
20837741: EV_TXCOMPLETE (includes waiting for RX windows)
20837789: engineUpdate, opmode=0x900
22087788: engineUpdate, opmode=0x908
22088248: TXMODE, freq=910700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
22155017: RXMODE_SINGLE, freq=924500000, SF=8, BW=500, CR=4/5, IH=0
22217838: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
22222210: EV_TXCOMPLETE (includes waiting for RX windows)
22222258: engineUpdate, opmode=0x900
23472257: engineUpdate, opmode=0x908
23472717: TXMODE, freq=910900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
23539487: RXMODE_SINGLE, freq=925100000, SF=8, BW=500, CR=4/5, IH=0
23602306: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
23606678: EV_TXCOMPLETE (includes waiting for RX windows)
23606726: engineUpdate, opmode=0x900
24856727: engineUpdate, opmode=0x908
24857187: TXMODE, freq=911100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
24923892: RXMODE_SINGLE, freq=925700000, SF=8, BW=500, CR=4/5, IH=0
24986711: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
24991083: EV_TXCOMPLETE (includes waiting for RX windows)
24991131: engineUpdate, opmode=0x900
26241132: engineUpdate, opmode=0x908
26241592: TXMODE, freq=911300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
26308360: RXMODE_SINGLE, freq=926300000, SF=8, BW=500, CR=4/5, IH=0
26371181: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
26375553: EV_TXCOMPLETE (includes waiting for RX windows)
26375601: engineUpdate, opmode=0x900
27625602: engineUpdate, opmode=0x908
27626062: TXMODE, freq=911500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
27692832: RXMODE_SINGLE, freq=926900000, SF=8, BW=500, CR=4/5, IH=0
27755652: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
27760024: EV_TXCOMPLETE (includes waiting for RX windows)
27760072: engineUpdate, opmode=0x900
29010071: engineUpdate, opmode=0x908
29010531: TXMODE, freq=911700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
29077235: RXMODE_SINGLE, freq=927500000, SF=8, BW=500, CR=4/5, IH=0
29140055: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
29144502: EV_TXCOMPLETE (includes waiting for RX windows)
29144550: engineUpdate, opmode=0x900
30394550: engineUpdate, opmode=0x908
30395010: TXMODE, freq=911900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
30461778: RXMODE_SINGLE, freq=923300000, SF=8, BW=500, CR=4/5, IH=0
30524599: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
30528907: EV_TXCOMPLETE (includes waiting for RX windows)
30528955: engineUpdate, opmode=0x900
31778954: engineUpdate, opmode=0x908
31779414: TXMODE, freq=912100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
31846182: RXMODE_SINGLE, freq=923900000, SF=8, BW=500, CR=4/5, IH=0
31909002: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
31913374: EV_TXCOMPLETE (includes waiting for RX windows)
31913423: engineUpdate, opmode=0x900
33163423: engineUpdate, opmode=0x908
33163883: TXMODE, freq=912300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
33230652: RXMODE_SINGLE, freq=924500000, SF=8, BW=500, CR=4/5, IH=0
33293473: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
33297844: EV_TXCOMPLETE (includes waiting for RX windows)
33297892: engineUpdate, opmode=0x900
34547892: engineUpdate, opmode=0x908
34548351: TXMODE, freq=912500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
34615121: RXMODE_SINGLE, freq=925100000, SF=8, BW=500, CR=4/5, IH=0
34677940: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
34682249: EV_TXCOMPLETE (includes waiting for RX windows)
34682296: engineUpdate, opmode=0x900
35932296: engineUpdate, opmode=0x908
35932756: TXMODE, freq=912700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
35999526: RXMODE_SINGLE, freq=925700000, SF=8, BW=500, CR=4/5, IH=0
36062346: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
36066718: EV_TXCOMPLETE (includes waiting for RX windows)
36066766: engineUpdate, opmode=0x900
37316765: engineUpdate, opmode=0x908
37317225: TXMODE, freq=912900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
37383994: RXMODE_SINGLE, freq=926300000, SF=8, BW=500, CR=4/5, IH=0
37446813: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
37451185: EV_TXCOMPLETE (includes waiting for RX windows)
37451234: engineUpdate, opmode=0x900
38701234: engineUpdate, opmode=0x908
38701694: TXMODE, freq=913100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
38768463: RXMODE_SINGLE, freq=926900000, SF=8, BW=500, CR=4/5, IH=0
38831283: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
38835656: EV_TXCOMPLETE (includes waiting for RX windows)
38835703: engineUpdate, opmode=0x900
40085703: engineUpdate, opmode=0x908
40086162: TXMODE, freq=913300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
40152932: RXMODE_SINGLE, freq=927500000, SF=8, BW=500, CR=4/5, IH=0
40215752: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
40220199: EV_TXCOMPLETE (includes waiting for RX windows)
40220247: engineUpdate, opmode=0x900
41470248: engineUpdate, opmode=0x908
41470708: TXMODE, freq=913500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
41537476: RXMODE_SINGLE, freq=923300000, SF=8, BW=500, CR=4/5, IH=0
41600297: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
41604669: EV_TXCOMPLETE (includes waiting for RX windows)
41604717: engineUpdate, opmode=0x900
42854716: engineUpdate, opmode=0x908
42855176: TXMODE, freq=913700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
42921946: RXMODE_SINGLE, freq=923900000, SF=8, BW=500, CR=4/5, IH=0
42984831: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
42989139: EV_TXCOMPLETE (includes waiting for RX windows)
42989187: engineUpdate, opmode=0x900
44239186: engineUpdate, opmode=0x908
44239646: TXMODE, freq=913900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
44306350: RXMODE_SINGLE, freq=924500000, SF=8, BW=500, CR=4/5, IH=0
44369170: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
44373542: EV_TXCOMPLETE (includes waiting for RX windows)
44373590: engineUpdate, opmode=0x900
45623591: engineUpdate, opmode=0x908
45624051: TXMODE, freq=914100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
45690819: RXMODE_SINGLE, freq=925100000, SF=8, BW=500, CR=4/5, IH=0
45753639: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
45758010: EV_TXCOMPLETE (includes waiting for RX windows)
45758058: engineUpdate, opmode=0x900
47008058: engineUpdate, opmode=0x908
47008518: TXMODE, freq=914300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
47075286: RXMODE_SINGLE, freq=925700000, SF=8, BW=500, CR=4/5, IH=0
47138106: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
47142415: EV_TXCOMPLETE (includes waiting for RX windows)
47142462: engineUpdate, opmode=0x900
48392462: engineUpdate, opmode=0x908
48392922: TXMODE, freq=914500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
48459691: RXMODE_SINGLE, freq=926300000, SF=8, BW=500, CR=4/5, IH=0
48522510: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
48526882: EV_TXCOMPLETE (includes waiting for RX windows)
48526930: engineUpdate, opmode=0x900
49776931: engineUpdate, opmode=0x908
49777391: TXMODE, freq=914700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
49844160: RXMODE_SINGLE, freq=926900000, SF=8, BW=500, CR=4/5, IH=0
49906980: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
49911353: EV_TXCOMPLETE (includes waiting for RX windows)
49911401: engineUpdate, opmode=0x900
51161402: engineUpdate, opmode=0x908
51161862: TXMODE, freq=914900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
51228632: RXMODE_SINGLE, freq=927500000, SF=8, BW=500, CR=4/5, IH=0
51291452: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
51295834: EV_TXCOMPLETE (includes waiting for RX windows)
51295882: engineUpdate, opmode=0x900
52545883: engineUpdate, opmode=0x908
52546343: TXMODE, freq=902300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
52613047: RXMODE_SINGLE, freq=923300000, SF=8, BW=500, CR=4/5, IH=0
52675867: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
52680239: EV_TXCOMPLETE (includes waiting for RX windows)
52680287: engineUpdate, opmode=0x900
53930286: engineUpdate, opmode=0x908
53930746: TXMODE, freq=902500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
53997514: RXMODE_SINGLE, freq=923900000, SF=8, BW=500, CR=4/5, IH=0
54060335: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
54064707: EV_TXCOMPLETE (includes waiting for RX windows)
54064755: engineUpdate, opmode=0x900
55314756: engineUpdate, opmode=0x908
55315216: TXMODE, freq=902700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
55381985: RXMODE_SINGLE, freq=924500000, SF=8, BW=500, CR=4/5, IH=0
55444806: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
55449178: EV_TXCOMPLETE (includes waiting for RX windows)
55449226: engineUpdate, opmode=0x900
56699225: engineUpdate, opmode=0x908
56699685: TXMODE, freq=902900000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
56766390: RXMODE_SINGLE, freq=925100000, SF=8, BW=500, CR=4/5, IH=0
56829209: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
56833580: EV_TXCOMPLETE (includes waiting for RX windows)
56833628: engineUpdate, opmode=0x900
58083628: engineUpdate, opmode=0x908
58084088: TXMODE, freq=903100000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
58150857: RXMODE_SINGLE, freq=925700000, SF=8, BW=500, CR=4/5, IH=0
58213676: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
58218048: EV_TXCOMPLETE (includes waiting for RX windows)
58218096: engineUpdate, opmode=0x900
59468095: engineUpdate, opmode=0x908
59468555: TXMODE, freq=903300000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
59535323: RXMODE_SINGLE, freq=926300000, SF=8, BW=500, CR=4/5, IH=0
59598143: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
59602515: EV_TXCOMPLETE (includes waiting for RX windows)
59602563: engineUpdate, opmode=0x900
60852564: engineUpdate, opmode=0x908
60853024: TXMODE, freq=903500000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
60919729: RXMODE_SINGLE, freq=926900000, SF=8, BW=500, CR=4/5, IH=0
60982549: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
60986921: EV_TXCOMPLETE (includes waiting for RX windows)
60986969: engineUpdate, opmode=0x900
62236970: engineUpdate, opmode=0x908
62237430: TXMODE, freq=903700000, len=26, SF=8, BW=125, CR=4/5, IH=0
Packet queued
62304198: RXMODE_SINGLE, freq=927500000, SF=8, BW=500, CR=4/5, IH=0
62367018: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0

Summary:
With all my Arduino-LMIC nodes, sometimes the JOIN is fast and most of the time it is very slow. Since I had no slow JOINs with these tests, maybe the relaxed timing is working now.

The same goes for the . Most of the time the Application Data it is delayed 30 minutes or more, but sometimes the data starts populating right away,
as with the Dragino node above.

See if you can make any sense out of this. I can send more data if you need it.

I am experiencing much of the same issues as @tweil is seeing on my RFM95 based node, an Adafruit Feather M0 with an RFM95W in my case. My other node is a Multitech MDot. I tried both nodes on two separate gateways. Both use OTAA. I have no issues with the MDot, it just works. I am simply using Multitech’s build-in AT command processor over a serial terminal. MT has embedded the LoRa stack and AT command processor into the module’s STM32. The RFM95 is using LMIC on Arduino IDE. The M0/Arduino/RFM95 node takes a few tries before it joins successfully, and then the data, sent at 30s intervals during testing, takes 5-15 minutes before I see data packets in the gateway traffic console and in the TTN data console. I was beginning to think that I must have a bad RFM95 module until I came across this thread. Perhaps we both have bad modules but I am now beginning to wonder if temperature stability is an issue. I did just notice that the RFM’s op temp range -20/70C while the Mdot is -40/85C.

It is more useful to do some retries and show logging where the issues DO happen.

Looking at your first logs I observe the following:

  • Things Uno does a JOIN REQUEST on SF10BW125. JOIN ACCEPT received on SF10BW500.
    It does the join request on SF10BW125 and not one of the lower spreading factors.
    Is this US / 915MHz specs or a ‘feature’ of the Things Uno / RN2903 (sketch)?

  • After Things Uno receives the JOIN ACCEPT the first message is transmitted on SB7BW125. How does it know to transmit on SB7, is this ADR already ‘kicking in’ embedded in the join accept? is this US / 915MHz specs? or is this a feature of the Things Uno / RN2903 (sketch)?

  • The Arduino Uno starts its JOIN REQUEST on SF9BW125, not SF10BW125 like Things Uno and JOIN accept is received on SF9BW500.
    Why does it start the request on SF9BW125 while Things Uno starts on SF10BW125?

  • Arduino Uno starts it first message on SF9BW125, which is different from Things Uno.
    After first (uplink) message a downlink message is received on SF9BW500. The next message is sent at SF7BW125, so apparently this is ADR kicking in. A separate downlink message appears to be used for this, that downlink message is not visible in the log for Things Uno.

  • After the second uplink message another downlink message is received (at SB7BW125). What is it for? Maybe another ADR related message to adjust the power?

While the Arduino Uno + RFM95 + LMIC-Arduino combination appears to be working fine here, there are some notable differences with how the Things Uno behaves.

(FYI, as noted before I have little knowledge about US / 915MHz specs/specifics.)

Observations:

  • With the Moteino JOIN REQUEST starts on SF8BW125. This is different from both Things Uno and Arduino Uno.

  • I see 3 downlink messages. For Arduino Uno there were only two, For Things Uno there were none.

  • Frame counter starts at 109 instead of 0.
    The time lapse between JOIN ACCEPT and the first message visible (frame 109) is around 30 minutes.
    With around 1 uplink message every 20 seconds that whould be about 30 x 3 = 90 messages which comes close to the frame count 109.

  • Message with framecounter 109 appears to be the first message that is successfully received on the backend, because you see ‘almost directly’ appear three downlink messages after that which are probably ADR related. With Arduino Uno these downlink messages came ‘quickly after’ the join accept so it is plausible that the backend sees uplink message with framecounter 109 as the first successful uplink message (which is an assumption).

  • Once ‘the flow has started’ everything appears to continue normally.

Questions:

  • Assuming message with frame 109 was the first successfully received message by the backend, then what could be causing this?:
    – An error on the node (in LMIC-Arduino)?
    Would it be possible that the node periodically increments the framecounter every 20 seconds without actually sending out any message for half an our?
    An error on the node appears the most plausible.
    – An error on the gateway side? Less likely (but not impossible).
    – An error on the backend side? Less likely (but not impossible).

  • Is this issue US / 915MHz related?
    Would this be easy to pinpoint in LMIC-Arduino?

Todo:

  • What do you see happening in Console Gateway Overview in the received messages counter, does it increment between the Moteino’s JOIN REQUEST and sending the ‘first’ uplink message (framecounter 109)?

  • Similar for Console Device Overview.
    What do Status , Frames up and Frames down show between JOIN REQUEST and transmitting the ‘first’ uplink message (framecounter 109)?

In the Arduino Uno? and Moteino node logs the join requests appear to be starting at SB7BW125 and then the spreading factor is gradually increased. This is not visible on the console logs but is probably because you have not included the failed join requests in the console log screendumps()?

This at least explains the behavior of and the difference between Arduino Uno succeeding the join at SF10BW125 and the Moteino succeeding the join at SF9BW125 (they both started joining at SF7BW125 but it is just not visible on the Console screen dumps).
This (failing to join at SF7BW125) behavior with Arduino’s and LMIC is normally fixed with relaxing LMIC timing.

It does not explain why Things Uno initally joins at SF10BW125 (which the directly switches to SF7BW125 when transmitting its first message).

The Arduino M0 uses a SAMD ARM based microcontroller which is very different from the ATmega328(u4) AVR microcontrollers. It uses a diffenrent tool chain and different Arduino core.

You could experience similar experiences but the underlying technology is different.
Another MCU that can give problems in combination with LMIC-Arduino are (certain) STM32 ARM based microcontrollers. These also use a different toolchain and different Arduino core than the Atmel AVR controllers.
In case of the STM32 the issues manifest that LMIC completely hangs, which is different from your issues with Arduino M0.

It might be worth noting that there were 4 minutes between JOIN REQUEST and JOIN ACCEPT or it might be expected. Here are the logs:

Click to see the full logs
> Starting
> 169: engineUpdate, opmode=0x8
> Packet queued
> 2291: EV_JOINING
> 3460: engineUpdate, opmode=0xc
> 5748: TXMODE, freq=902300000, len=23, SF=7, BW=125, CR=4/5, IH=0
> 316258: RXMODE_SINGLE, freq=923300000, SF=7, BW=500, CR=4/5, IH=0
> 377982: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 387544: engineUpdate, opmode=0xc
> 408404: engineUpdate, opmode=0xc
> 408704: TXMODE, freq=903000000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 719168: RXMODE_SINGLE, freq=923300000, SF=7, BW=500, CR=4/5, IH=0
> 780827: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 790452: engineUpdate, opmode=0xc
> 860912: engineUpdate, opmode=0xc
> 861213: TXMODE, freq=903700000, len=23, SF=8, BW=125, CR=4/5, IH=0
> 1175677: RXMODE_SINGLE, freq=927500000, SF=8, BW=500, CR=4/5, IH=0
> 1238433: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 1247994: engineUpdate, opmode=0xc
> 1285461: engineUpdate, opmode=0xc
> 1285763: TXMODE, freq=914200000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 1596228: RXMODE_SINGLE, freq=927500000, SF=7, BW=500, CR=4/5, IH=0
> 1657888: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 1667448: engineUpdate, opmode=0xc
> 1945076: engineUpdate, opmode=0xc
> 1945378: TXMODE, freq=909700000, len=23, SF=9, BW=125, CR=4/5, IH=0
> 2265571: RXMODE_SINGLE, freq=926300000, SF=9, BW=500, CR=4/5, IH=0
> 2328264: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 2337825: engineUpdate, opmode=0xc
> 2365286: engineUpdate, opmode=0xc
> 2365588: TXMODE, freq=911000000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 2676055: RXMODE_SINGLE, freq=926300000, SF=7, BW=500, CR=4/5, IH=0
> 2737714: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 2747350: engineUpdate, opmode=0xc
> 3407805: engineUpdate, opmode=0xc
> 3408107: TXMODE, freq=902300000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 3738734: RXMODE_SINGLE, freq=923300000, SF=10, BW=500, CR=4/5, IH=0
> 3801298: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 3810858: engineUpdate, opmode=0xc
> 3840822: engineUpdate, opmode=0xc
> 3841124: TXMODE, freq=903000000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 4151589: RXMODE_SINGLE, freq=923300000, SF=7, BW=500, CR=4/5, IH=0
> 4213249: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 4222809: EV_JOIN_FAILED
> 4222838: engineUpdate, opmode=0xc
> 4389635: engineUpdate, opmode=0xc
> 4389936: TXMODE, freq=912300000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 4720563: RXMODE_SINGLE, freq=924500000, SF=10, BW=500, CR=4/5, IH=0
> 4783127: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 4792688: engineUpdate, opmode=0xc
> 4809118: engineUpdate, opmode=0xc
> 4809420: TXMODE, freq=906200000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 5119886: RXMODE_SINGLE, freq=924500000, SF=7, BW=500, CR=4/5, IH=0
> 5181545: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 5191106: EV_JOIN_FAILED
> 5191135: engineUpdate, opmode=0xc
> 5793278: engineUpdate, opmode=0xc
> 5793580: TXMODE, freq=911700000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 6124206: RXMODE_SINGLE, freq=927500000, SF=10, BW=500, CR=4/5, IH=0
> 6186770: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 6196331: engineUpdate, opmode=0xc
> 6258031: engineUpdate, opmode=0xc
> 6258332: TXMODE, freq=914200000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 6568798: RXMODE_SINGLE, freq=927500000, SF=7, BW=500, CR=4/5, IH=0
> 6630458: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 6639955: EV_JOIN_FAILED
> 6639984: engineUpdate, opmode=0xc
> 6851697: engineUpdate, opmode=0xc
> 6851998: TXMODE, freq=908300000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 7182561: RXMODE_SINGLE, freq=926900000, SF=10, BW=500, CR=4/5, IH=0
> 7245125: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 7254760: engineUpdate, opmode=0xc
> 7299393: engineUpdate, opmode=0xc
> 7299694: TXMODE, freq=912600000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 7610224: RXMODE_SINGLE, freq=926900000, SF=7, BW=500, CR=4/5, IH=0
> 7671885: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 7681445: EV_JOIN_FAILED
> 7681475: engineUpdate, opmode=0xc
> 8361638: engineUpdate, opmode=0xc
> 8361940: TXMODE, freq=911900000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 8692502: RXMODE_SINGLE, freq=923300000, SF=10, BW=500, CR=4/5, IH=0
> 8755066: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 8764563: engineUpdate, opmode=0xc
> 8815144: engineUpdate, opmode=0xc
> 8815446: TXMODE, freq=903000000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 9125911: RXMODE_SINGLE, freq=923300000, SF=7, BW=500, CR=4/5, IH=0
> 9187571: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 9197132: EV_JOIN_FAILED
> 9197161: engineUpdate, opmode=0xc
> 10161398: engineUpdate, opmode=0xc
> 10161701: TXMODE, freq=913900000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 10492137: RXMODE_SINGLE, freq=924500000, SF=10, BW=500, CR=4/5, IH=0
> 10554700: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 10564197: engineUpdate, opmode=0xc
> 10585533: engineUpdate, opmode=0xc
> 10585837: TXMODE, freq=906200000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 10896368: RXMODE_SINGLE, freq=924500000, SF=7, BW=500, CR=4/5, IH=0
> 10958028: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 10967525: EV_JOIN_FAILED
> 10967557: engineUpdate, opmode=0xc
> 11319325: engineUpdate, opmode=0xc
> 11319628: TXMODE, freq=906100000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 11650063: RXMODE_SINGLE, freq=925100000, SF=10, BW=500, CR=4/5, IH=0
> 11712627: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 11722135: engineUpdate, opmode=0xc
> 11757196: engineUpdate, opmode=0xc
> 11757499: TXMODE, freq=907800000, len=23, SF=8, BW=500, CR=4/5, IH=0
> 12068031: RXMODE_SINGLE, freq=925100000, SF=7, BW=500, CR=4/5, IH=0
> 12129628: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 12139125: EV_JOIN_FAILED
> 12139157: engineUpdate, opmode=0xc
> 13027994: engineUpdate, opmode=0xc
> 13028297: TXMODE, freq=903900000, len=23, SF=10, BW=125, CR=4/5, IH=0
> 13358731: RXMODE_SINGLE, freq=923300000, SF=10, BW=500, CR=4/5, IH=0
> 13367039: EV_JOINED
> 13367070: engineUpdate, opmode=0x808
> 13367530: TXMODE, freq=902700000, len=26, SF=10, BW=125, CR=4/5, IH=0
> 13451741: RXMODE_SINGLE, freq=924500000, SF=10, BW=500, CR=4/5, IH=0
> 13514369: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 13518741: EV_TXCOMPLETE (includes waiting for RX windows)
> 13518789: engineUpdate, opmode=0x900
> 14768789: engineUpdate, opmode=0x908
> 14769249: TXMODE, freq=902900000, len=26, SF=10, BW=125, CR=4/5, IH=0
> Packet queued
> 14854741: RXMODE_SINGLE, freq=925100000, SF=10, BW=500, CR=4/5, IH=0
> 14917368: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 14921677: EV_TXCOMPLETE (includes waiting for RX windows)
> 14921724: engineUpdate, opmode=0x900
> 16171724: engineUpdate, opmode=0x908
> 16172183: TXMODE, freq=903100000, len=26, SF=10, BW=125, CR=4/5, IH=0
> Packet queued
> 16257739: RXMODE_SINGLE, freq=925700000, SF=10, BW=500, CR=4/5, IH=0
> 16320367: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 16324740: EV_TXCOMPLETE (includes waiting for RX windows)
> 16324787: engineUpdate, opmode=0x900
> 17574787: engineUpdate, opmode=0x908
> 17575247: TXMODE, freq=903300000, len=26, SF=10, BW=125, CR=4/5, IH=0
> Packet queued
> 17660801: RXMODE_SINGLE, freq=926300000, SF=10, BW=500, CR=4/5, IH=0
> 17723429: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 17727801: EV_TXCOMPLETE (includes waiting for RX windows)
> 17727849: engineUpdate, opmode=0x900
> 18977850: engineUpdate, opmode=0x908
> 18978310: TXMODE, freq=903500000, len=26, SF=10, BW=125, CR=4/5, IH=0
> Packet queued
> 19063866: RXMODE_SINGLE, freq=926900000, SF=10, BW=500, CR=4/5, IH=0
> 19126493: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 19130866: EV_TXCOMPLETE (includes waiting for RX windows)
> 19130914: engineUpdate, opmode=0x900
> 20380913: engineUpdate, opmode=0x908
> 20381373: TXMODE, freq=903700000, len=26, SF=10, BW=125, CR=4/5, IH=0
> Packet queued
> 20466928: RXMODE_SINGLE, freq=927500000, SF=10, BW=500, CR=4/5, IH=0
> 20529556: RXMODE_SINGLE, freq=923300000, SF=12, BW=500, CR=4/5, IH=0
> 20534003: EV_TXCOMPLETE (includes waiting for RX windows)
> 20534051: engineUpdate, opmode=0x900
> 21784050: engineUpdate, opmode=0x908
> 21784510: TXMODE, freq=903900000, len=26, SF=10, BW=125, CR=4/5, IH=0
> Packet queued
> 21870066: RXMODE_SINGLE, freq=923300000, SF=10, BW=500, CR=4/5, IH=0
> 21876412: Received downlink, window=RX1, port=-1, ack=0
> 21876459: EV_TXCOMPLETE (includes waiting for RX windows)
> 21879674: engineUpdate, opmode=0x800
> 23129674: engineUpdate, opmode=0x808
> 23130134: TXMODE, freq=904100000, len=28, SF=8, BW=125, CR=4/5, IH=0
> Packet queued
> 23197543: RXMODE_SINGLE, freq=923900000, SF=8, BW=500, CR=4/5, IH=0
> 23199491: Received downlink, window=RX1, port=-1, ack=1
> 23201195: EV_TXCOMPLETE (includes waiting for RX windows)
> 23205032: engineUpdate, opmode=0x800

The Console Gateway Overview in the received messages counter does NOT increment between the Moteino’s JOIN REQUEST and sending the ‘first’ uplink message

Gateway Overview Before JOIN REQUEST and Before any frames appear in Gateway Traffic or Application Data. Received Messages: 26161

Gateway Overview shows Received messages increased 3 after JOIN REQUEST and 2 successful frames (frames 6 and 7) appear in Gateway Traffic and Application Data. Received Messages: 26164

Console Device Overview before JOIN REQUEST and while waiting for Frames to populate Application Data: Frames Up/Down: 0

Console Device Overview after JOIN Accept and 7 frames received (counter 6 and 7)

I did not purposely not include failed join requests in the console log screendumps. Is there a way to make them visible? I tried to include as much as I could.

By the way, thanks so much for all the time you have put into helping me. Hopefully, we will all learn something.

Not a problem. The join requests will be visible in the gateway traffic log and when you then see a join accept but no transmit from the first message (‘directly’) afterwards then the node hasn’t properly pickup up the accept. This is what I call ‘failed join request’.

Your screen captures have confirmed what you already said and the symptoms are not normal, but I am running out of ideas.

Tip: Changing the title to a better description of the problem may also help get more input. (e.g. “Strange problem with RFM95 + LMIC-Arduino: long OTAA JOIN delays and missing frames” or something similar.)

Maybe @matthijskooijman, @htdvisser, @GrumpyOldPizza or @kersing have an idea of what could be happening here and how it may be fixed.

with implementations for each of the popular microcontroller families and frameworks, Arduino included.

Reference implementation for STM32 and SAMD/SAML ARM only. No AVR, ESP32, ESP8266 and no Arduino support.

Good idea. How do I change the title? I searched around and can’t figure it out.

Sorry, I forgot. After +/- 3 days posts cannot be edited anymore, so you can probably also not edit the title anymore. But I can do it for you, just did. (Just let me know if you want the title different.)

Perfect. Thanks!

I’m in EU so haven’t used the US frequency plans, so bear with me …

According to:
https://www.thethingsnetwork.org/docs/lorawan/frequency-plans.html#us902-928

there are a set of uplink and a separate set of downlink frequencies. I assume that an uplink on Uplink channel 1 would result in a downlink message on the Downlink channel 1. Is that how it works?

In the Arduino-lmic logs in this threads there are transmissions on frequencies that are not listed in the frequency plan, for instance 902300000 and 912600000.

Is the node using the correct frequencies for the region?

I think the US902-928 Frequency plan listed frequency plan you mention is incomplete. I am using the arduino-lmic library and selecting the US plan by using the following in lmic/config.h, so I don’t have any control over the frequencies.

#define CFG_us915 1

This document, although not the more definitive one I was looking for, has some info on US frequencies and channels and shows they start at 902.3 Mhz and go up from there.

http://193.40.244.77/idu0310/wp-content/uploads/2015/09/Sammelsaar_Kotkasets_IoT_report.pdf

US 902-928 MHz
In the United States, LoRaWAN operates in the 902-928 MHz frequency band. Unlike
the European band, the US band has dedicated uplink and downlink channels. The
band is divided into 8 sub-bands that each have 8x125 kHz uplink channels, 1x500 kHz
uplink channel and 1x500 kHz downlink channel.
US 902-928 MHz channel frequencies:
The 915 MHz ISM Band shall be divided into the following channel plans.
- Upstream – 64 channels numbered 0 to 63 utilizing LoRa 125 kHz BW varying
from DR0 to DR3 starting at 902.3 MHz and incrementing linearly by 200 kHz to
914.9 MHz.
- Upstream – 8 channels numbered 64 to 71 utilizing LoRa 500 kHz BW at DR4
starting at 903.0 MHz and incrementing linearly by 1.6 MHz to 914.2 MHz.
- Downstream – 8 channels numbered 0 to 7 utilizing LoRa 500 kHz BW at DR10
to DR13) starting at 923.3 MHz and incrementing linearly by 600 kHz to 927.5
MHz.
US 902-928 end-devices should be capable of operating in the 902 to 928 MHz
frequency band and should feature a channel data structure to store the parameters of
72 channels. A channel data structure corresponds to a frequency and a set of data
rates usable on this frequency

Would you care to share what you think is missing? Your quote does not clarify your statement (for me).

BTW, as the listed plan is implemented and being used by several US based users with success I think it might be alright.

For LMIC frequency control you could take a look at this ancient message: LMIC Node, dropped packets? - #9 by brandonbyrne

As I look into this further, I think tlu might have hit on the problem with the missing frames and slow joins. If so, I stand corrected and apologize for jumping to conclusions. I am relatively new with LoraWan and TTN, so bear with me as I try to understand and learn.

From reading other documentation, I thought that US 915MHz LoraWan nodes could use any of 72 channels available between 902-928Mhz. I just specified US915 when using the Arduino-LMIC library with my DIY Arduino and RFM95 nodes. It seems that one has to be more specific about exactly which 9 Uplink and 8 Downlink TTN frequencies to use with Arduinio-LMIC and The Things Network, although I’m not exactly sure how to configure it. Other LoraWan 915Mhz networks may use other frequencies.

The US Frequency Plan listed on The Things Network documentation is here:https://www.thethingsnetwork.org/docs/lorawan/frequency-plans.html#us902-928

As I look at the Gateway Traffic for one of my Arduino + RN2903 nodes, similar to The Things Uno, which uses TheThingsNetwork library and specifies the TTN_FP_US915 frequency plan, sure enough I only see uplinks and downlinks on one of the 9 uplink and 8 downlink frequencies that matches the TTN documentation. The JOINs are immediate and there are no missed frames. There is nothing special one needs to do when using TheThingsNetwork library other than specify the TTN_FP_US915 frequency plan in the sketch and all the correct frequencies are used.

When I run one of my Arduino-LMIC nodes (Arduino + RFM95), I can look at both the Serial Monitor, which shows each transmitted packet along with the frequency used and I can look at the Gateway Traffic log. Each time there is a Uplink transmission shown in the Serial Monitor that is not one of the frequencies listed in the TTN documentation, nothing shows up in the TTN Gateway Traffic log. Duh! For JOINs, incorrect frequencies are rotated through until the node somewhat randomly transmits on a TTN frequency and then the JOIN works. For Uplinks, more or less the same thing happens. The node transmits Uplinks over and over with non TTN frequencies and increments the Frame Counter each time. For each of these Uplinks, nothing shows up in the Gateway log. Again, Duh! Sooner or later, the node somewhat randomly transmits an Uplink with a correct TTN frequency and the Uplink appears in the Gateway Traffic log. For some odd reason, from that point on the node always uses one of the accepted TTN frequencies for every Uplink and no more frames are missed.

So to summarize, I think the problem with the Arduino-LMIC nodes joining slowly and missing frames is that the library is not correctly configured to use only the TTN frequencies. The question now is how does one correctly configure the Arduino-LMIC library. Thank you, tlu.

Take a look at the link I included in my previous message, that shows code on how to force LMIC to use only TTN supported channels.

Gateways use the SX1301 or SX1308 from Semtech. These process 8 channels in parallel. Most gateways (all I’ve seen offered for sale so far) use only 1 of them so only support 8 of the available channels. Increasing the number of channels requires additional hardware (not only these controllers) so cost will increase.

@tweil on your OTAA problem, please be advised that there are two join receive windows RX1 and RX2 and there are stacks which have implemented only one of them. So if your sketch is only listening in RX2 and the network answers in RX1, it might seem that your join procedure is very lengthy and not robust, while in fact you are missing the join accept messages all the time.

With respect to the LMIC library: I fully agree with your observations to its complexity. We totally stripped it down and rebuilt it, and then it even fits in an ATtiny85 (8 kB)! We don’t have the full stack implemented, but all the necessary stuff is in there. This way you can make a 5 dollar node. You need to be creative with the timing because the ATtiny only has so much IO lines but it can be done. You can have robust operation, receive in RX1 and RX2, even without the DIO lines. This leaves you with one I/O for a sensor, plus the reset input that you can use (with restrictions!) for analogue input.

1 Like

The Cisco Lora Gateway supports 16 channels. https://www.cisco.com/c/en/us/products/routers/wireless-gateway-lorawan/index.html

1 Like