Murata AT protocol

Hello, I am using the MKR1300 for a few months and need to run some commands on the Murata module, but no luck so far. >:(
Is there any documentation for this AT commands protocol?
The file MKRWAN.h doesn't have many comments and it's my only source of information.

The basic commands, like: modem.joinOTAA(), modem.version(), modem.deviceEUI() works just fine. But I can't run a datarate change command - modem.dataRate(my_DR). Right now I am mostly interested in this dataRate command, because I would like to know if the module accepts data rates >8 for AU915 plan.
I try to run a few other commands like getDataRare, setFCU, setFCD and all of them fails.

Do you guys have more information about this AT protocol?

Thanks in advance,
Marcio Jr.

To change data rate, you can just use the modem.dataRate(x) method documented in MKRWAN.h. However, in the docs x ranges from 0 to 6, although sometimes docs are not complete, so try with other numbers.
Regarding AT commands, a list is here.
If you are not able to use the above method, update firmware and library to have the most recent methods.

Hi Mitel, thanks a lot for the information.
It seems that I had some bug on my tests. I rewrote it here and now I can get success answer for many commands.
I also checked the source code you mentioned, and I can see the implementation of AU915 plan, it looks like correct, although the comments at the Region.h (#define DR_xx) file are wrong!

The only command, I try so far, that always return -1 is the getDataRate(). The dataRate(my_DR) command works just fine.
Another curious thing about this protocol is that MKRWAN version of it has some important changes comparing to the original project from ST. Specially the AT commands sintax is different. While the original GET function is achieve by "AT+<cmd_mnemonic>=?", the MKR version is "AT+<cmd_mnemonic>?" without the "=" sign.

So, can you tell me if you can successfully retrieve the current DR, using modem.getDataRate() ?

Thanks again,
Marcio Jr.

mjunior-fitec:
So, can you tell me if you can successfully retrieve the current DR, using modem.getDataRate() ?

Yes, I can. But I have updated firmware and library; did you?

MITEL:
Yes, I can. But I have updated firmware and library; did you?

Well, I don't. My first board was bought in Oct/2018. The latest, in late December. Do they need a firmware update? Also, what library update is this?

Thanks.

Check if they need update (October surely, December depending on how old was the stock). When you run the LoraSandAndReceive example, you will see the firmware version (Your module version is: ARD-078 1.1X); current one is 1.1.9.
If you are using the Arduino IDE, you can then update the library as any other (Manage libraries, choose "updatable"; last of MKRWAN is 1.0.9).

Great, thanks for the information.
I have upgraded a few boards here. Now the behavior I got is, after connection the .getDataRate() returns correctly. But being not connected, it stills returning -1.

My lib was already at 1.0.9, but both batches (Oct and Dec) had 1.1.2 (as I saw the first stable version!) and now I upgraded to 1.1.9.

Thanks again.
Marcio Jr.

mjunior-fitec:
But being not connected, it stills returning -1.

I do not understand what you mean. Is the node communicating with the gateway (by the way, real gateway or single channel?).
If you have issues with OTAA, try ABP first.

MITEL:
I do not understand what you mean. Is the node communicating with the gateway (by the way, real gateway or single channel?).
If you have issues with OTAA, try ABP first.

Ok, let me put it more clear. Now that I've upgraded to 1.1.9, when I run a modem.getDataRate() command before performing a join it always return -1. If I run the command after a successful join it works OK. On the older FW, version 1.1.2, it was always returning -1, inspite of joining.
I had another end device - mDot from Multitech - which is also modem based and has a similar AT protocol. With this end device, I can retrieve the current DataRate doesn't matter if it's joined or not. This isn't actually much important, I just want to know what is the expected behavior.
Regarding OTAA / ABP, on the older FW (1.1.2) the ABP wasn't working and I did all my tests using OTAA.
I will run more tests with the new FW (1.1.9) to check and then I will share the results here.

BTW, I'm using a real gateway (Multitech conduit), no single channel.

Thanks.

I always set data rate after joining, however I agree the documentation is poor, I just followed some example around. And it seems that for some reason ADR should be set to true, if not the data rate will switch back to SF12....

That's good to know. I didn't try changing the ADR yet.
Anyway, can you tell me if you can retrieve the Data Rate before performing a join? The set Data Rate (modem.DataRate(xx) seems to work just fine. But can't read it.

modem.begin(YOUR_PLAN);
modem.DataRate(xx);    // -> Returns OK!
modem.getDataRate();   // -> Returns -1
if (modem.joinOTAA(appEui, appKey))
  modem.getDataRate();  // -> Returns OK

I would like to know if it's possible to retrieve the DataRate value before the join.