Not receiving Join Accept downlink on SX1262

Hi, I’ve been debugging the inability to receive a downlink message for a while and I am running out of ideas. A description of my setup is as follows:

Hardware: Waveshare core1262-868M LoRa board. Particle P2 module driving the LoRa hardware over SPI.
Software: LoRaWAN stack is ported from
Added a timer abstraction layer to hook into the P2 timer framework. These look reliable.
Added commissioning values (DevEUI, JoinEUI etc.) for the AWS-side device.

I have successfully added a device to AWS IoT LPWAN and this receives the Join Request. It sends a Join Accept and I can see this is transmitted over the air using an SDR at the correct frequency and SF. I receive a IRQ_PREAMBLE_DETECTED interrupt (0x4) but nothing further. I have successfully used the same radio hardware to perform a site survey using a range of SFs and signal strengths so I have confidence in the hardware, just not when running within a LoRaWAN stack.

I have compared the configuration of the modulation and packet parameters with the working site survey configuration (just a LoRa modem) and nothing strikes me as being wrong. As I say, I am running out of ideas of how to debug this.

I have a RAK 2287 running Basics Station which receives and forwards packets to AWS. This gives me useful debug. The timings look good for the RX window when sending the Join Accept packet to the device. Any hints would be gratefully received. Thank you in advance.