RAK 811 Payload Size Limit Problem?

I am trying to send data from RAK811 AS923 module using RAK811 Arduino Library to The Things Network (TTN). Initially I send 2 bytes of data and it successfully receives at TTN. I then extend the payload to 11 bytes and it receives well. However after extend the payload size to 12 or more bytes, I cannot receive it from TTN. At the application server, the message is: “payload is not provided”. While LoRaWAN module from different chipmaker can send the payload to more than 20 bytes without any problem. Does it a limitation in RAK811 hardware or it is a firmware issue?
FYI, I am using a code below in initialize the buffer and send the payload.

char* buffer = “112233445566778899001122”;
bool sent = Serial.println(RAKLoRa.rk_sendData(packetsflag, 1, buffer));
The serial monitor response as follows
Send data ok!
However, it never appear at TTN. Only if the payload size is less than 12 bytes, data will appear at TTN.

I am waiting the response. Thank you.

Why there is no response from forum. Does anyone try to send data more than 11 bytes using RAK811 and check the received payload in TTN?

Just an idea,

The following command is sent successfully:

the at specification says that the payload is in hex.

When you try do that:
char* buffer = “112233445566778899001122”;
bool sent = Serial.println(RAKLoRa.rk_sendData(packetsflag, 1, buffer));

You are may be sending
31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 30 30 31 31 32 32

When you try with a shorter buffer “1122”, what do you receive in the TTN console ?
1122 or 31 31 32 32 ?

Yes, using command at+send=0,1,112233445566778899001122 is sent successfully. However, when you look at TTN, the message for the payload is: “payload is not provided”

I think in at command specification, command at+send=<type>,<port>,<data>\r\n means <data>= <hex value> hex value(no space). So that is why I send 112233…99 because it is still in hex value.

When I try shorter buffer, of course if the buffer less than 11 bytes, i.e. 1122334455667788990011, it will be received as 1122334455667788990011, not 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 30 30 31 31 as you said. Only buffer exceeding 11 bytes will result an error.

I have tested the same way using other module from different chip-maker, there is no problem with the payload more than 11 bytes received in TTN. I guess this problem only in RAK811

Please check AS923 region in lorawan_regional_parameters_v1.0.2_final_1944_1 of official document.Different region support sending data with different length limits, which is also related to the datarate.


e.g CN470 region with DR0,maxpayload is 51 bytes.

Dear , thank you for your information. If you don’t mind, could you please to give a very simple way to read both tables?

In case I use AS-923 firmware with SF10, so according the lorawan_regional_parameters_v1.0.2_final_1944_1 of official document, if I set UplinkDwellTime = 0 so I can send payload maximum 59 bytes - 8 bytes (for FOpt) = 51 bytes. If I set UplinkDwellTime = 1 so I can send maximum payload maximum 19 bytes - 8 bytes (for FOpt) = 11 bytes. Is that correct?
Note that the payload above does not include LoRaWAN header which will add 13 more bytes

My next question is how to set UplinkDwellTime in the LoRa module? I didn’t see the command UplinkDwellTime in the RAK811 LoRa AT Command User Guide v1.5. Why this only happen in RAK811 module, not in another LoRa module from different chipmaker?

Thanks in advance

We used the sx1276 lora chip of Semtech,and the official configuration provided by Semtech. For compatibility we had not been modified .

It did not give the AT command to modify UplinkDwellTime.But you can download the open source code in the github:https://github.com/RAKWireless/RAK5205-WisTrio-LoRa.git or https://github.com/RAKWireless/RAK811_LoRaNode, and modify it according to your needs.You could modify the following two parameters separately in file RegionAS923.h:

You can also use this new version RAK811_HF_V2. of firmware compiled for you.(The UplinkDwellTime and DownlinkDwellTime both have set 0)We have test it and it could send 51 bytes maxpayload with DR2(SF10).0_1547633031838_RAK811_HF_V2.

Thank you for your response. It is now clear that the limitation of max payload because of the new firmware of RAk811 follow the LoRaWAN 1.0.2 specification where the UplinkDwellTime has already set 1 in the new firmware.

I can actually do one of these options.

  1. Set the DR more than 2 (i.e. SF < 10) in the current firmware to allow payload size increase to more than 11 bytes
  2. Update the current firmware to the RAK811_HF_V2. where the UplinkDwellTime and DownlinkDwellTime both have set 0

Is that correct?

Yes,that’s it.You could also set daterate more than 2 to increase the limitation of max payload.
e.g AT command :at+dr=3 max payload is 61-8=53bytes.

Thank you very much. I will try it and report the result as soon as possible

I already tested it. I confirm that increasing the data rate to 3 (SF<10), the payload more than 11 bytes can be successfully received in TTN. Thank you very much.

I hve chaged the data rate of this RAK, its succesfull with AT command and real term, but when we try with arduino, its fail, if I read the data rate (get_dr) its value is = 3, any solution?