OTAA Join Request/Accept Succeeds in ChirpStack UI, But Device Does Not Join

Hi everyone,

I’ve set up a gateway and ChirpStack stack (v4) on an STM32MP1 board. I’m using Semtech Basic Station with chirpstack-gateway-bridge, chirpstack-network-server, and chirpstack-application-server all running on the same device. I’ve registered the gateway and a LoRaWAN device (OTAA) in the ChirpStack UI.

The issue:

The device sends a JoinRequest, and ChirpStack successfully sends back a JoinAccept. Both messages are visible in the ChirpStack UI under the device’s frame logs. However, the device never completes the join — it doesn’t proceed to send any uplink data, and behaves like it didn’t receive the JoinAccept.

My setup:

  • Region: AU915
  • Gateway: UDP Packet Forwarder (SX1302 Pi HAT)

My question:

  • What might be preventing the JoinAccept from reaching the device?
  • Is there any way to verify if the downlink was truly transmitted by the gateway?
  • Are there extra config steps required in Chirpstack to support OTAA?

Any help or pointers would be greatly appreciated!

Thanks,
Shreyas

Are you sure you have the components chirpstack-network-server and chirpstack-application-server? If so you are actually using V3 and not V4 and you should upgrade. In V4 those two pieces were both merged into one.

As for the actual issue. This join-looping is typically a band-mismatch issue between device->gateway->server. Verify that all of those are on the same band and subband. Have you configured your MQTT topic prefix? If it’s not those, double check the LoRaWAN and MAC versions of your device profile. Also if you are getting any errors in the Chirpstack logs that would help identify the issue.

You check the GUI of the gateway to see if the gateway receives the JoinAccept packet and on which frequency?

first double check all the keys are correct, in this case the app key (device → otaa keys → application key).

also check signal strength for joins.