Feather M0 EV_JOIN_TXCOMPLETE: no JoinAccept problem

Even though the issue here seems to be rather old, I’m running into it anew.

My setup:

  • Feather M0 LoRa with the D-stepping silicon (so there should be no problem with SPI timing)
  • Latest Adafruit SAMD BSP, v. 1.6.1
  • MCCI LMIC 3.2.0

Pinmap:

const lmic_pinmap lmic_pins = {
.nss = 8,
.rxtx = LMIC_UNUSED_PIN,
.rst = 4,
.dio = {3, 6, LMIC_UNUSED_PIN},
.rxtx_rx_active = 0,
.rssi_cal = 8
}

I used the example application ten-otaa-feather and adjusted the band for eu-868. I registered an application and my device at the TTN console and correctly entered APPEUI, DEVEUI and APPKEY, respecting endianness. I adjusted the clock error tolerance and set the RX2 listening mode to SF9 - all recommendations from various threads here.

Yet, OTAA joining repeatably fails on the first attempts, even though I can see the packets arriving in the TTN console. That is, even the first join packet at SF7, 125kHz arrives at the TTN, but the reply seems to get lost. In the TTN console, I do see how the radio increases the spreading factor with every other attempt. After about 10 trials, at SF10 or SF11, a join finally succeeds. However, by then, four or five gateways are picking up the signal (I’m in central Berlin) - so, coverage is definitively not the problem.

I found similar problems in various threads here, dating back to 2016. By now, boards, libraries and the TTN have evolved, so I suspect things should work fine. What am I doing wrong? How can I pinpoint the problem?

Thanks very much for your help!