I have one door sensor since few days. It was joining fine with OTAA out of the box but mess with the ADR at first try. It was stuck in SF9 after join. It did receive new frequencies from the chirpstack server, acknowledge them, and then when the server tried to set the device to DR6 (SF7 250kHz) it acknowledge again and just did not change the spread factor. It looks like a bug in the firmware of the device. I changed the service profile on chirpstack to stick between DR0 to DR5 (not DR6) and now it works like a charm and change spread factor on order.
I did not had time to dig further, I will try to put some capture of the join and the firsts ADR frames soon.
Here is the config that I programmed on the device using the serial interface (in this order, not all are needed).
// enable log
// Set AppEUI
// Set AppKey
// enable OTAA (default)
// frequencies mask (default)
// ?? do not remember what it is
// class A only (default)
// unconfirmed uplinks (default)
// disable ADR to change datarate
// set default datarate to SF9 (default)
// uplink port (default)
// send uplink every 24h
// downlink frequency (default)
// RX1 delay 1s (default)
// send message on door open-close (default)
// enable ADR (default)
// start auto join (60s delay, 255 retry) (256 like datasheet will overflow)
// disable log
// save config to EEPROM
// go to deep sleep
Here is the chirpstack config:
max EIRP 0
uplink interval 86400
join OTAA enabled
I just copy the device EUI from the device to chirpstack and generated a new application key from chirpstack that I copied on the device. But you can enter what is on the box of the device in chirpstack and this will works fine.
Hope this helps.