Join procedure, how long does it keep trying?
When I call the following:
lora.join(activation, auth, * ,timeout=None, dr=None)
If the device for some reason, is not able to join a network, how long will the device send join requests?
Is it possible to for example: Send join requests for 15s, if its not able to join then tell it to stop sending join requests, and then try again for 15s after some time?
Also, is it possible to the internal 15s retry intervall?
From docs: Internally the stack will automatically retry every 15 seconds until a Join Accept message is received.
If i read the code correctly ( https://github.com/pycom/pycom-micropython-sigfox/blob/master/esp32/mods/modlora.c : 1737 )
Pycom Software try to send joinrequest until timeout is expired.
A joinRequest is TXtime, 5 secondes,RX1, 1secondes time wait,RX2
With small DR5(SF7) TXtime is less than 100ms but at DR0 (SF12) it long 1.4 secondes.
When i read the software i see that OVER_THE_AIR_ACTIVATION_DUTYCYCLE is set to 10s so the lorawan stack try to send a join request after every 10s (with small SF we found the nearly (10+5)s but for SF12 it will be more than that (aprox 16.5s). BUT when maximum time on air is reached (as join is done only on 3 frequency in EU868) the lorawan stack will delay the tx. (max time on air is 1% in on band so 36 sec tx time on air by hours) and time grows to 1 hours after 108 try.
As pycom use Semtec original stack it's use have a 48 try pattern
7 DR5 then DR4 7 DR5 then DR3 and so on last try is done with SF12.
With a 768 (basically 48*16) secondes timeout you will be sure that all joinrequest is tryied without succes, so your device is unable to communicate (no network coverage).
robert-hh last edited by
@Asb As far as I recall my observations, the join request is not automatically repeated. If a device did not receive a join confirmation after 6 seconds, it considers the join request as failed. Your script may then repeat the join request.