How to check if the RAK3172 module is busy?

Hi all,

Developing a function to send messages with the RAK3172 module and RUI3 v4.1.0, I had a problem, when sending the first messages after entering the network, the module could exchange messages with the network without me knowing. So, in this case, I need a way to identify that the module is busy, to avoid sending another message and receiving an AT_BUSY_ERROR.
What is the best way to check if the module is busy? Is there any AT command for this?

NOTE: I am using the LA915 band

I thought of a solution to find out if the process of sending a message over the network has already been completed, but I don’t want to use a meaningless command to do this check. Example:

You have to wait after AT+SEND until the RAK3172 reports an +EVT event which could be TX_DONE or an error.

I am trying to cover this with an AT command library that I am working on at the moment, but it is still in early beta and a lot of testing is still required. RUI3-Arduino-Library

Yes, this is understood, but the problem is: In cases such as exchanging messages right after joining the network, after receiving a TX_DONE, the LoRa module can continue exchanging messages without your knowledge. For this reason, I wanted to know if there is an official way of asking the module for your current status, to find out if it is busy exchanging messages without you knowing.

the LoRa module can continue exchanging messages without your knowledge

What messages would it exchange outside of the TX/RX windows?

The only scenario I have seen where after a device is continuing to do something is when multiple downlinks are queued up in the LoRaWAN server. In this case the RAK3172 will continue TX/RX cycles until it has received all downlinks. But each of these are reported with :EVT messages over the UART.

Right after joining the network, this is an example of what happens after sending the first message.
You can see that there is an involuntary exchange of DL and UL, by which I mean that it was not caused by me, but rather initiated by the network itself together with the module.
NOTE: In the image “Port:0” identifies UL and DL between network and module

What LoRaWAN region are you using?
In AS923, EU868 and other bands, after joining the LoRaWAN server is telling the node what frequencies to use to send packets.
These bands have only 2 or 3 frequencies enabled and the LoRaWAN server is sending them the list of the other 5 or 6 frequencies.

This is not involuntary, it is part of the LoRaWAN protocol and you will see an :EVT in the AT command interface.

The same can happen (as I explained earlier), if there are already downlinks waiting on the LoRaWAN server and they will be pushed to the device one by one. Again not involuntary, but expected behavior and again you will see :EVT events.

I am using region LA915. Thanks for the explanation, I was already aware of these details, however the initial idea was to know if there is a command or an official way to check if the module is busy executing some protocol process, to avoid trying to send messages during this process.

1 Like