Feather M0 EV_JOIN_TXCOMPLETE: no JoinAccept problem

I don’t know for sure how LMIC determines the first data rate to use for OTAA. (Indeed, I thought it started joining using whatever was set using LMIC_setDrTxpow, but maybe not.)

However, an OTAA Join Accept downlink is not much different from a regular downlink (except for RX1 being 5 seconds rather than 1, RX2 being 6 seconds instead of 2, and for RX2 in EU868 using SF9 like configured automatically in the EU868 Join Accept). So, it may be easier to test regular downlinks first (maybe even using ABP, along with manually setting LMIC.dn2Dr = DR_SF9 for EU868).

Also, to increase the chances a specific gateway is used (if you suspect that some gateway may not transmit the Join Accept, like due to network latency of that very gateway), you may want to move closer to a specific gateway, to see if that helps. If duty cycle limitations allow for it then TTN will usually select the gateway with the best reception of the uplink (Join Request) to transmit the downlink (Join Accept).

1 Like

I would agree, if your at a dead end then just ensure that basic downlink functionality is working by setting up as ABP, this then takes the question off the table - you can obviously send downlinks from the console to the device then and watch the device logs as the downlinks are received, I like to test with ACK set too.

Your problem looks similar to when (D)IO1 of the RFM95/SX1276 LoRa module is not correctly wired/mapped.

In that case downlinks will not work and hence OTAA joins will fail.
(LMIC uses DIO0 for uplinks and for downlinks it also needs DIO1.)

Example ttn-abp.ino uses ABP and by default sends / tests uplink messages only.
Example ttn-otaa.ino uses OTAA which requires downlink messages to work, otherwise OTAA joins will fail. This is why I always suggest to try the LMIC example ttn-abp.ino first.

Have you actually (manually) wired (D)IO1 to digital pin 6 (and verified this)?
This is sometimes overlooked and also bad breadboard connections/wires may cause issues.

Thanks for your help!
To my understanding, the Feather board seems to be wired correctly. I am using the integrated Feather/LoRa board. It has the Radio already wired up as described here, with CS -> #8, DIO0/IRQ -> #3, and Reset -> #4. In addition, I followed the setup here, which additionally connects DIO1 -> #6. This should match my pinmap.

Indeed, the downlink seems to be working sporadically. I can get an OTAA JOIN to work in something between 20 minutes and 2 hours. And with ABP and a manually scheduled confirmed downlink form the TTN console, I eventually receive that downlink within 20 min to two hours as well, when transmitting one packet per minute continuously.

If you check your application / device in the TTN console, when clicking on a message in the Data log you can see which gateways have received the message and with what RSSI and SNR values.
How many gateways actually do receive your messages? What RSSI and SNR does each gateway report? And what spreading factor (SFx) is reported when using OTAA?

Maybe the gateways are too far or obstructed and/or the quality of your antenna is insufficient.

The Feather M0 LoRa appears not to have an I-PEX/U.FL antenna connector mounted by default, which only leaves the possibility to solder a simple wire as antenna.
The exact length of this wire is very critical, especially if gateways are not very nearby (and being a monopole antenna, the effect of a good antenna groundplane (or lack thereof) can have major effect on antenna effectiveness). The wire antenna should also nicely standup straight in order to function properly.

Looking at some Feather M0 LoRa images of the bottom PCB side I notice that there is place for soldering an I-PEX/U.FL antenna connector on the PCB.
This would allow for attaching a better quality antenna to the board, but also requires the skills to solder tiny SMT parts.
If not already present I really don’t understand why a U.FL antenna connector (costing few cents) has not been mounted at the factory by default already (those Adafruit boards are expensive enough already).

When using ABP, do your uplink messages arrive almost instantly on the TTN console, or does that take 20 minutes to hours as well?
You really should check this (using ttn-abp.ino).

I’m in central Berlin, with quite a few gateways in range.

When the JOIN finally went through, at SF12 because of the flaky downlink, I could see 5 gateways in the TTN Console.

When transmitting with ABP at SF9, I consistently see 2 gateways receiving my uplink messages, with {RSSI: -120dBm, SNR: -12.5dB} and {RSSI: -120dBm, SNR: -3 dB}. For some transmissions, I see a third gateway with {RSSI: -118 dBm, SNR: - 6,5 dB}., So, the uplink seems to ok. Messages get through quickly, in a matter of seconds.

I am aware that the receiver on a small embedded radio is probably much worse than a receiver at a gateway, which typically has a much better LNA and a much better antenna. However, given that the uplink is fine at SF9, I do not think that my radio is so bad that it cannot pick up the downlink signal even at SF12 most of the time.

I am not a RF specialist that can judge and interpret these numbers well, but RSSI -120 dBm with -12.5dB SNR does not look exactly great to me.

Just curious, have you tried sending with ABP with SF7 and SF8 and then looked at RSSI and SNR values?

Have you tried testing your node at other locations (not nearby your current) (in Berlin)?

What about your antenna?


Question to others: is it possible that a SCPF (single channel packet forwarder) is causing the experienced downlink issues (could one of the reported gateways be a SCPF)?
Although probably less likely due to “I consistently see 2 gateways”.

I haven’t found the place in the LoRa specification that shows the bit-error-rate and packet-error-rate curves for each SF and coding rate vs. SNR. These would be the reference to judge which SNR values are ok and which are not. Does anyone know where to find these figures?

If you want to be sure that this is not a problem caused by your code, you can try the latest release of the paxcounter software. I am testing in central Berlin, too, and get immediately join with a TTGO T-Beam 1.0 and paxcounter (based on MCCI LMIC 3.2.0)

What use has PaxCounter on Feather M0 LoRa?

It is not ESP32 and has neither WiFi nor Bluetooth.

oops, sorry, didn’t look at that.

Here is a paper with analytical results and numerical evaluations for the symbol error rate (SER) and the frame error rate (FER) for LoRa reception in Gaussian noise and in the presence of unsynchronised interference from other LoRa transmissions. Fig. 9 provides an estimate of the required SNR for successful reception.

From Figure -12 dB SNR seems to be ok for SF10 and SF11 under the rather sever interference conditions assumed in the paper. With no interference, Fig. 2 implies that -12 dB should be ok for SF9 as well.

As mentioned, these not great numbers.

A possibility they raise, is that if the gateway is receiving the node that weakly, the signal from the gateway at the node may also be weak.

LoRa modulation is far more resistant to a lot of types of noise than other radio schemes, but that immunity is not total. You might consider things like trying a an electrically quieter power supply.

You might verify the antenna is of the right length, and you might stand it up and put a ground plane under it.

You might also try finding a better location to test from - ie take it up on a roof balcony, find a hill to climb, etc.

Ultimately its far easier to debug node firmware if you have physical and administrative access to a conventional gateway with open-source software running on an embedded Linux host.

Hi, I am having the same problem “EV_JOIN_TXCOMPLETE: no JoinAccept” but i think its due to the fact that i dont know how to register my Feather M0 Lora devide in the new V3 console.

Does anybody know how to add the device?

Yes many users know because they read documentation and information already available on the forum. :wink:

You will also be able to find enough information on the forum about possible reasons for why joins are failing and only seeing EV_JOIN_TXCOMPLETE. The Search tool is there to assist you.

You may also have a look at:

I could not find any topic that involver the adafruit Feather M0 Lora and TTN Console V3. I would greatly appreciate if you point me in the right direction.

1 Like

Apart from this thread (!) what does a forum search of “Feather M0” (or Feather M0 V3 or Feather M0 TTN(CE) ) give you? Anthing useful there?

Best advice from a man around here who knows:

The Adafruit Feather M0 LoRa is just another DIY type LoRaWAN device that uses/needs the LMIC LoRaWAN library.
There is nothing special about the device so all information related to ‘LMIC and DIY type devices’ is applicable to this device.

I already gave you my best advice.

Thanks, even so i cannot find anything related with TTN Console V3 for the feather m0. I will ask in the other post. thanks

Same problem here! I have used other devices succesfully, but the EV_JOIN_TXCOMPLETE: no JoinAccept is causing me some troubles for LoRa feather. Don’t know yet if related to hardware or software.

It takes a while sometimes to join, but there are times that it never joins.

In the following example it took a while to join.

Starting
12270947: EV_JOINING
12271537: EV_TXSTART
12673403: EV_JOIN_TXCOMPLETE: no JoinAccept
12674844: EV_TXSTART
13055335: EV_JOIN_TXCOMPLETE: no JoinAccept
13082090: EV_TXSTART
13483959: EV_JOIN_TXCOMPLETE: no JoinAccept
13514285: EV_TXSTART
13894778: EV_JOIN_TXCOMPLETE: no JoinAccept
13928369: EV_TXSTART
14330237: EV_JOIN_TXCOMPLETE: no JoinAccept
14358653: EV_TXSTART
14739147: EV_JOIN_TXCOMPLETE: no JoinAccept
14869872: EV_TXSTART
15271739: EV_JOIN_TXCOMPLETE: no JoinAccept
15286648: EV_TXSTART
15667140: EV_JOIN_TXCOMPLETE: no JoinAccept
15760092: EV_TXSTART
16161961: EV_JOIN_TXCOMPLETE: no JoinAccept
16182163: EV_TXSTART
16562655: EV_JOIN_TXCOMPLETE: no JoinAccept
16664839: EV_TXSTART
17066705: EV_JOIN_TXCOMPLETE: no JoinAccept
17113844: EV_TXSTART
17494336: EV_JOIN_TXCOMPLETE: no JoinAccept
17720527: EV_TXSTART
18122395: EV_JOIN_TXCOMPLETE: no JoinAccept
18130371: EV_TXSTART
18510862: EV_JOIN_TXCOMPLETE: no JoinAccept
18753744: EV_TXSTART
19155611: EV_JOIN_TXCOMPLETE: no JoinAccept
19209225: EV_TXSTART
19589715: EV_JOIN_TXCOMPLETE: no JoinAccept
19590022: EV_JOIN_FAILED
19708639: EV_TXSTART
20110507: EV_JOIN_TXCOMPLETE: no JoinAccept
20144950: EV_TXSTART
20525441: EV_JOIN_TXCOMPLETE: no JoinAccept
20717324: EV_TXSTART
21119191: EV_JOIN_TXCOMPLETE: no JoinAccept
21161341: EV_TXSTART
21541833: EV_JOIN_TXCOMPLETE: no JoinAccept
21748883: EV_TXSTART
22150750: EV_JOIN_TXCOMPLETE: no JoinAccept
22210374: EV_TXSTART
22590866: EV_JOIN_TXCOMPLETE: no JoinAccept
22727882: EV_TXSTART
23129748: EV_JOIN_TXCOMPLETE: no JoinAccept
23158157: EV_TXSTART
23538648: EV_JOIN_TXCOMPLETE: no JoinAccept
23699607: EV_TXSTART
24101474: EV_JOIN_TXCOMPLETE: no JoinAccept
24103973: EV_TXSTART
24484468: EV_JOIN_TXCOMPLETE: no JoinAccept
24667765: EV_TXSTART
25069633: EV_JOIN_TXCOMPLETE: no JoinAccept
25096050: EV_TXSTART
25476544: EV_JOIN_TXCOMPLETE: no JoinAccept
25514653: EV_TXSTART
25916521: EV_JOIN_TXCOMPLETE: no JoinAccept
25952638: EV_TXSTART
26333131: EV_JOIN_TXCOMPLETE: no JoinAccept
26488257: EV_TXSTART
26890124: EV_JOIN_TXCOMPLETE: no JoinAccept
26935972: EV_TXSTART
27316464: EV_JOIN_TXCOMPLETE: no JoinAccept
27316771: EV_JOIN_FAILED
27352432: EV_TXSTART
27754300: EV_JOIN_TXCOMPLETE: no JoinAccept
27762844: EV_TXSTART
28143335: EV_JOIN_TXCOMPLETE: no JoinAccept
28175766: EV_TXSTART
28577634: EV_JOIN_TXCOMPLETE: no JoinAccept
28589249: EV_TXSTART
28969741: EV_JOIN_TXCOMPLETE: no JoinAccept
29189664: EV_TXSTART
29591530: EV_JOIN_TXCOMPLETE: no JoinAccept
29629096: EV_TXSTART
30009587: EV_JOIN_TXCOMPLETE: no JoinAccept
30182054: EV_TXSTART
30583921: EV_JOIN_TXCOMPLETE: no JoinAccept
30606275: EV_TXSTART
30986767: EV_JOIN_TXCOMPLETE: no JoinAccept
31203671: EV_TXSTART
31605540: EV_JOIN_TXCOMPLETE: no JoinAccept
31609456: EV_TXSTART
31989950: EV_JOIN_TXCOMPLETE: no JoinAccept
32093602: EV_TXSTART
32495468: EV_JOIN_TXCOMPLETE: no JoinAccept
32506968: EV_TXSTART
32887462: EV_JOIN_TXCOMPLETE: no JoinAccept
33102581: EV_TXSTART
33504448: EV_JOIN_TXCOMPLETE: no JoinAccept
33517486: EV_TXSTART
33897977: EV_JOIN_TXCOMPLETE: no JoinAccept
34047668: EV_TXSTART
34449535: EV_JOIN_TXCOMPLETE: no JoinAccept
34476585: EV_TXSTART
34857077: EV_JOIN_TXCOMPLETE: no JoinAccept
34857384: EV_JOIN_FAILED
35012269: EV_TXSTART
35414136: EV_JOIN_TXCOMPLETE: no JoinAccept
35467210: EV_TXSTART
35847703: EV_JOIN_TXCOMPLETE: no JoinAccept
36089082: EV_TXSTART
36490948: EV_JOIN_TXCOMPLETE: no JoinAccept
36538695: EV_TXSTART
36919189: EV_JOIN_TXCOMPLETE: no JoinAccept
37058755: EV_TXSTART
37460623: EV_JOIN_TXCOMPLETE: no JoinAccept
37504731: EV_TXSTART
37885223: EV_JOIN_TXCOMPLETE: no JoinAccept
38091027: EV_TXSTART
38492893: EV_JOIN_TXCOMPLETE: no JoinAccept
38540439: EV_TXSTART
38920931: EV_JOIN_TXCOMPLETE: no JoinAccept
39068050: EV_TXSTART
39469917: EV_JOIN_TXCOMPLETE: no JoinAccept
39474248: EV_TXSTART
39854740: EV_JOIN_TXCOMPLETE: no JoinAccept
40066842: EV_TXSTART
40468708: EV_JOIN_TXCOMPLETE: no JoinAccept
40496223: EV_TXSTART
40876716: EV_JOIN_TXCOMPLETE: no JoinAccept
40985511: EV_TXSTART
41387378: EV_JOIN_TXCOMPLETE: no JoinAccept
41426160: EV_TXSTART
41806652: EV_JOIN_TXCOMPLETE: no JoinAccept
41838388: EV_TXSTART
42240257: EV_JOIN_TXCOMPLETE: no JoinAccept
42268671: EV_TXSTART
42649163: EV_JOIN_TXCOMPLETE: no JoinAccept
42649468: EV_JOIN_FAILED
42701900: EV_TXSTART
43103768: EV_JOIN_TXCOMPLETE: no JoinAccept
43143852: EV_TXSTART
43524343: EV_JOIN_TXCOMPLETE: no JoinAccept
43735897: EV_TXSTART
44137765: EV_JOIN_TXCOMPLETE: no JoinAccept
44152508: EV_TXSTART
44533000: EV_JOIN_TXCOMPLETE: no JoinAccept
44535548: EV_TXSTART
44937416: EV_JOIN_TXCOMPLETE: no JoinAccept
44941368: EV_TXSTART
45321861: EV_JOIN_TXCOMPLETE: no JoinAccept
45483553: EV_TXSTART
45885420: EV_JOIN_TXCOMPLETE: no JoinAccept
45906592: EV_TXSTART
46287082: EV_JOIN_TXCOMPLETE: no JoinAccept
46323445: EV_TXSTART
46725311: EV_JOIN_TXCOMPLETE: no JoinAccept
46773868: EV_TXSTART
47154363: EV_JOIN_TXCOMPLETE: no JoinAccept
47224770: EV_TXSTART
47626637: EV_JOIN_TXCOMPLETE: no JoinAccept
47627285: EV_TXSTART
48007776: EV_JOIN_TXCOMPLETE: no JoinAccept
48122403: EV_TXSTART
48524271: EV_JOIN_TXCOMPLETE: no JoinAccept
48551447: EV_TXSTART
48931938: EV_JOIN_TXCOMPLETE: no JoinAccept
49103532: EV_TXSTART
49505399: EV_JOIN_TXCOMPLETE: no JoinAccept
49538745: EV_TXSTART
49919237: EV_JOIN_TXCOMPLETE: no JoinAccept
49919543: EV_JOIN_FAILED
50017453: EV_TXSTART
50419321: EV_JOIN_TXCOMPLETE: no JoinAccept
50436285: EV_TXSTART
50816777: EV_JOIN_TXCOMPLETE: no JoinAccept
50981616: EV_TXSTART
51383483: EV_JOIN_TXCOMPLETE: no JoinAccept
51405758: EV_TXSTART
51786250: EV_JOIN_TXCOMPLETE: no JoinAccept
52006115: EV_TXSTART
52407984: EV_JOIN_TXCOMPLETE: no JoinAccept
52461788: EV_TXSTART
52842281: EV_JOIN_TXCOMPLETE: no JoinAccept
52933563: EV_TXSTART
53335432: EV_JOIN_TXCOMPLETE: no JoinAccept
53380826: EV_TXSTART
53761319: EV_JOIN_TXCOMPLETE: no JoinAccept
53944593: EV_TXSTART
54346459: EV_JOIN_TXCOMPLETE: no JoinAccept
54379824: EV_TXSTART
54760316: EV_JOIN_TXCOMPLETE: no JoinAccept
55009050: EV_TXSTART
55410917: EV_JOIN_TXCOMPLETE: no JoinAccept
55449056: EV_TXSTART
55829550: EV_JOIN_TXCOMPLETE: no JoinAccept
55963142: EV_TXSTART
56365009: EV_JOIN_TXCOMPLETE: no JoinAccept
56396943: EV_TXSTART
56777434: EV_JOIN_TXCOMPLETE: no JoinAccept
57009135: EV_TXSTART
57411004: EV_JOIN_TXCOMPLETE: no JoinAccept
57423353: EV_TXSTART
57803848: EV_JOIN_TXCOMPLETE: no JoinAccept
57804154: EV_JOIN_FAILED
57833943: EV_TXSTART
58235812: EV_JOIN_TXCOMPLETE: no JoinAccept
58243116: EV_TXSTART
58623608: EV_JOIN_TXCOMPLETE: no JoinAccept
58869940: EV_TXSTART
59271809: EV_JOIN_TXCOMPLETE: no JoinAccept
59276012: EV_TXSTART
59656504: EV_JOIN_TXCOMPLETE: no JoinAccept
59663042: EV_TXSTART
60064909: EV_JOIN_TXCOMPLETE: no JoinAccept
60079241: EV_TXSTART
60459731: EV_JOIN_TXCOMPLETE: no JoinAccept
60656930: EV_TXSTART
61058797: EV_JOIN_TXCOMPLETE: no JoinAccept
61120010: EV_TXSTART
61500502: EV_JOIN_TXCOMPLETE: no JoinAccept
61545692: EV_TXSTART
61947560: EV_JOIN_TXCOMPLETE: no JoinAccept
61985865: EV_TXSTART
62366360: EV_JOIN_TXCOMPLETE: no JoinAccept
62369293: EV_TXSTART
62771163: EV_JOIN_TXCOMPLETE: no JoinAccept
62830029: EV_TXSTART
63210522: EV_JOIN_TXCOMPLETE: no JoinAccept
63386087: EV_TXSTART
63787957: EV_JOIN_TXCOMPLETE: no JoinAccept
63791637: EV_TXSTART
64172131: EV_JOIN_TXCOMPLETE: no JoinAccept
64389415: EV_TXSTART
64791282: EV_JOIN_TXCOMPLETE: no JoinAccept
64834942: EV_TXSTART
65215434: EV_JOIN_TXCOMPLETE: no JoinAccept
65215741: EV_JOIN_FAILED
65407176: EV_TXSTART
65809049: EV_JOIN_TXCOMPLETE: no JoinAccept
65813901: EV_TXSTART
66194392: EV_JOIN_TXCOMPLETE: no JoinAccept
66240691: EV_TXSTART
66642557: EV_JOIN_TXCOMPLETE: no JoinAccept
66650487: EV_TXSTART
67030979: EV_JOIN_TXCOMPLETE: no JoinAccept
67112905: EV_TXSTART
67514772: EV_JOIN_TXCOMPLETE: no JoinAccept
67515630: EV_TXSTART
67896122: EV_JOIN_TXCOMPLETE: no JoinAccept
68019336: EV_TXSTART
68421203: EV_JOIN_TXCOMPLETE: no JoinAccept
68453396: EV_TXSTART
68833887: EV_JOIN_TXCOMPLETE: no JoinAccept
68901963: EV_TXSTART
69303831: EV_JOIN_TXCOMPLETE: no JoinAccept
69331587: EV_TXSTART
69712080: EV_JOIN_TXCOMPLETE: no JoinAccept
69901899: EV_TXSTART
70303766: EV_JOIN_TXCOMPLETE: no JoinAccept
70362602: EV_TXSTART
70743096: EV_JOIN_TXCOMPLETE: no JoinAccept
70958174: EV_TXSTART
71360042: EV_JOIN_TXCOMPLETE: no JoinAccept
71400476: EV_TXSTART
71780968: EV_JOIN_TXCOMPLETE: no JoinAccept
71843332: EV_TXSTART
72245199: EV_JOIN_TXCOMPLETE: no JoinAccept
72246486: EV_TXSTART
72626978: EV_JOIN_TXCOMPLETE: no JoinAccept
72627283: EV_JOIN_FAILED
72827074: EV_TXSTART
73228943: EV_JOIN_TXCOMPLETE: no JoinAccept
73231516: EV_TXSTART
73612008: EV_JOIN_TXCOMPLETE: no JoinAccept
73691088: EV_TXSTART
74092956: EV_JOIN_TXCOMPLETE: no JoinAccept
74136743: EV_TXSTART
74517234: EV_JOIN_TXCOMPLETE: no JoinAccept
74691303: EV_TXSTART
75093171: EV_JOIN_TXCOMPLETE: no JoinAccept
75105901: EV_TXSTART
75486394: EV_JOIN_TXCOMPLETE: no JoinAccept
75640435: EV_TXSTART
76042303: EV_JOIN_TXCOMPLETE: no JoinAccept
76049832: EV_TXSTART
76430323: EV_JOIN_TXCOMPLETE: no JoinAccept
76680301: EV_TXSTART
77024100: EV_JOINED
netid: 19
devaddr: XX
AppSKey: XX
NwkSKey: XX
77025370: EV_TXSTART
77422125: EV_TXCOMPLETE (includes waiting for RX windows)
81235645: EV_TXSTART
81632400: EV_TXCOMPLETE (includes waiting for RX windows)
85445750: EV_TXSTART
85842504: EV_TXCOMPLETE (includes waiting for RX windows)
89655860: EV_TXSTART
90052615: EV_TXCOMPLETE (includes waiting for RX windows)
93865966: EV_TXSTART
94201395: EV_TXCOMPLETE (includes waiting for RX windows)
94232545: EV_TXSTART
94632035: EV_TXCOMPLETE (includes waiting for RX windows)
98445384: EV_TXSTART
98842140: EV_TXCOMPLETE (includes waiting for RX windows)
102655489: EV_TXSTART
103052247: EV_TXCOMPLETE (includes waiting for RX windows)
106865600: EV_TXSTART
107262357: EV_TXCOMPLETE (includes waiting for RX windows)
111075715: EV_TXSTART
111472643: EV_TXCOMPLETE (includes waiting for RX windows)
115285999: EV_TXSTART
115682759: EV_TXCOMPLETE (includes waiting for RX windows)
119496119: EV_TXSTART
119892880: EV_TXCOMPLETE (includes waiting for RX windows)
123706237: EV_TXSTART
124102996: EV_TXCOMPLETE (includes waiting for RX windows)
127916352: EV_TXSTART
128313279: EV_TXCOMPLETE (includes waiting for RX windows)

1 Like