Seeed XIAO NRF52840 + SX1276 "no JoinAccept"

Hello, I’m trying to get a connection with my Seeed XIAO nrf52840 sense and a 868MHz SX1276 LoRa Breakout Board with the The Things network.

this is my pin connection:

// Pin mapping
const lmic_pinmap lmic_pins = {
.nss = 1,
.rst = 5,
.dio = {6, 7, LMIC_UNUSED_PIN},

This is the board lay-out:


This is the chip lay-out:


I connected the wire to the 3.3V
I connected DI00 to tx
I connected DI01 to rx
I connected GND to GND

My keys
AppEUI lsb all zeros 16x

DevEUI lsb random 16x

AppKey msb random 32x

This is what I get, no connection can somebody help me? is it possible to use the Arduino-LMIC library (“MCCI LoRaWAN LMIC Library”) or not?


81176696: TXMODE, freq=868300000, len=23, SF=10, BW=125, CR=4/5, IH=0

start single rx: now-rxtime: -28

81510986: RXMODE_SINGLE, freq=868300000, SF=10, BW=125, CR=4/5, IH=0

rxtimeout: entry: 81517150 rxtime: 81511014 entry-rxtime: 6136 now-entry: 0 rxtime-txend: 311126

start single rx: now-rxtime: -22

81573242: RXMODE_SINGLE, freq=869525000, SF=12, BW=125, CR=4/5, IH=0

rxtimeout: entry: 81589660 rxtime: 81573264 entry-rxtime: 16396 now-entry: 0 rxtime-txend: 373376

81589660: EV_JOIN_TXCOMPLETE: no JoinAccept

81589660: engineUpdate, opmode=0xc

106507324: engineUpdate, opmode=0xc

I live at the red dot

Forum search will reveal many many answers including:

Someone that’s wired up an XIAO board and documented its use.

The perils of using all zeros with LMIC

and so much more.

It looks like you don’t have a gateway of your own to use so we won’t be able to see the details. But the unformatted log (please use </> on the toolbar) shows it’s talking to the radio.

So I’m going to go with the all zeros issue.

Okay, if this is the problem can you maybe lead me in the right direction for finding the AppEUI? I have some trouble finding it because I bought the 868MHz SX1276 LoRa Breakout Board on

As above, forum search should locate the details for you.

i’ve been searching very hard for two days that’s why my post on the forum (often it succeeds by just searching) and really can’t figure it out maybe i’m looking wrong for the all zeros change which then does fit well with my sx1276 board.

What are you typing for searching?

AppEUI all zeros lmic

Or just use the DevEUI as the AppEUI.

It’s not, it’s the difference between now & rxTime.

Thanks, I can use this for the appEUI

What a coincidence - I just tried that now - found old posts I’d forgotten about!

I’ve consulted with the author of that page and he says it’s not entirely random - for EUI’s it produces a properly formatted “locally administered address”. It is for the AppKey, but they are meant to be totally random.

I changed the code:

// This EUI must be in little-endian format, so least-significant-byte

// first. When copying an EUI from ttnctl output, this means to reverse

// the bytes. For TTN issued EUIs the last bytes should be 0xD5, 0xB3,

// 0x70.

static const u1_t PROGMEM APPEUI[8]={0x74, 0x80, 0x04, 0x87, 0x78, 0x52, 0x0E, 0x4E};

void os_getArtEui (u1_t* buf) { memcpy_P(buf, APPEUI, 8);}

// This should also be in little endian format, see above.

static const u1_t PROGMEM DEVEUI[8]={0xD1, 0xC4, 0x05, 0xD0, 0x7E, 0xD5, 0xB3, 0x70};

void os_getDevEui (u1_t* buf) { memcpy_P(buf, DEVEUI, 8);}

// This key should be in big endian format (or, since it is not really a

// number but a block of memory, endianness does not really apply). In

// practice, a key taken from ttnctl can be copied as-is.

static const u1_t PROGMEM APPKEY[16] = {0x72, 0x6D, 0x97, 0x6D, 0x12, 0xB6, 0xC7, 0xF1, 0x76, 0xA1, 0x04, 0x78, 0x29, 0x28, 0x07, 0x2D};

void os_getDevKey (u1_t* buf) { memcpy_P(buf, APPKEY, 16);}

but I still get the same answer:

4569702: EV_TXSTART
4569763: TXMODE, freq=868100000, len=23, SF=7, BW=125, CR=4/5, IH=0
start single rx: now-rxtime: -28
4884704: RXMODE_SINGLE, freq=868100000, SF=7, BW=125, CR=4/5, IH=0
rxtimeout: entry: 4887756 rxtime: 4884732 entry-rxtime: 3024 now-entry: 0 rxtime-txend: 311126
start single rx: now-rxtime: -22
4946960: RXMODE_SINGLE, freq=869525000, SF=12, BW=125, CR=4/5, IH=0
rxtimeout: entry: 4963378 rxtime: 4946982 entry-rxtime: 16396 now-entry: 0 rxtime-txend: 373376
4963378: EV_JOIN_TXCOMPLETE: no JoinAccept
4963378: engineUpdate, opmode=0xc
8860900: engineUpdate, opmode=0xc

6 posts were merged into an existing topic: EUI generator

IIRC where some reported problems with all zeros in the past it was sometimes solved with 000…01 - might also be worth trying?

@Johan_Scheepers has already ponied up the EUI generator …

Assuming you re-registered on TTN so it’s got the up to date App/JoinEUI and you are not seeing a Join Request / Accept on the device console, then the most likely answer is that the device wasn’t heard by a gateway.

Before there are any protestations about the Long Range that is LoRa, it has to be pretty much line of sight - ie you can see the gateway antenna from the devices antenna (you do have an antenna, don’t you?) and it needs there to be minimal clutter on that line of sight that could mess with the signal - like a motorway. Forum search on “no Join Accept” will reveal many many discussions initiated by people that don’t have gateways. Please read some of them.

You have two choices. Get real close to the university cluster or buy a gateway.

For DIY device builders a gateway is an essential tool as it allows you to see if the device is being heard. Without it you don’t know if it really is managing to transmit a decent signal or if the credentials are failing for some reason.

1 Like

95% chance you are too far from a gateway,


A post was merged into an existing topic: EUI generator