RAK 3172 rejoins every time it sends out any data

We are using the RAK3172 module with firmware version 1.0.4.
I know that this is an old firmware and we are working on upgrading to the latest RUI3.
But the device in the field which we were long deployed with 1.0.4 are showing this weird behavior.

The device everytime it sends an uplink it first joins the network and then sends an uplink. Within our application code, the firmware queries the RAK module if it has joined the network (AT+NJS) and if it responds back with ‘0’ then the application code re-initiates a join request.
What I am not able to understand why the RAK module responds back with a ‘0’?
The data packet that we send are CONFIRMED SEND and they are sent every 15 mins.

Please include the following information, in order for us to help you as effectively as possible.

  • What product do you wish to discuss? RAK4631, RAK3372, RAK11200, RAK11310, RAK11722?
    RAK3172

  • What firmware are you using? (RUI3 or Arduino BSP or other IDE (e.g. STM32CubeIDE)?
    Old firmware V1.0.4

  • What firmware version? Can it be obtained with AT+VER=?
    1.0.4

  • Computer OS? (MacOS, Linux, Windows)
    Windows

  • What Computer OS version?
    11

  • How often does the problem happen?
    Every time once it goes into bad state.

  • How can we replicate the problem?
    No clear understanding why it goes into this state.

  • Provide source code if custom firmware is used or link to example if RAKwireless example code is used.

Welcome back to forum @adityakoparkar ,

I understand that you want to ensure that you successfully joined before sending uplinks. On your approach do you check if +EVT:JOINED or +EVT:JOIN_FAILED_RX_TIMEOUT was received by the host MCU before checking AT+NJS? Take note that when you reinitiate join request, NJS will go back to zero. If you check NJS with fixed delay, there might be occurrence that you prematurely check NJS.

Also, if my understanding is correct, you join first everytime you will do an uplink? This is not advisable when it comes to LoRaWAN architecture. In ideal scenario, the device activated via OTAA should only join once. This is how we can make a LoRaWAN network scalable.
`

1 Like

For now we have found a work around if the device misbehaves.