Limitation of 128 bytes for at+send data buffer on RAK5205

When trying to send data using at+send=lora , I get the message : String over max length <256 Bytes>
The string is larger than 256 bytes but every 2 bytes (hex value) ferom this AT command convert later to one byte and in Lora DR3 you might send 242 bytes which is 484 bytes in the AT+SEND command.
Why do you have the limitation of 256 bytes(128 bytes payload) ?

When the length of the data you send exceeds the length specified in the protocol, you will be prompted that you have exceeded the range of the sent length by returning String over max length <256 Bytes >. when you send the data, the mac command will occupy a part of the data length of the uplink data, so the length in the protocol cannot be sent through at version command and 2 characters represent a number, 256bytes=512 characters.

1 Like

I’m trying to send 220 bytes and from the US band spec (pg 15-16 here - it seems that for data rate 3 the application payload size should be greater.
The max length of the FOpt could be 15 bytes so the size for the app payload should be 242-15=227
What I’m missing here?
What is the allowed size for app payload for US band in DR3?

When dr=3, does sending 220 bytes indicate that it is out of range? Is it the first time it will be successfully sent, and will it be prompted to exceed it the second time?

If I want to send 220 bytes “in the air” I have to sent 440 characters in the Serial port tool.
This exceed the max range (which is not limitation of the protocol) and it also happened in the first time.
Any way you could you try it?

I probably didn’t reply clearly before. Due to the limitation of RAM, transmission through AT command can only reach 128 characters, but transmission through rui interface can reach the length of the protocol.

Do you have any work around for that?
I have to send ~1500 bytes and this limitation will double the number of packages I have to send.
BTW I intend to use Python to send the “send” at command.

Due to the limitation of RAM, we will increase its length later.

Hi @Nicholas,
I limit the package size to 118 bytes and it fix the failure that was on long package.
The problem now is that the ‘send’ AT command response return corrupted and I couldn’t verify that the package send succeeded.
In the RAK serial port tool the ‘send’ looks ok but I need to run it from script so I’m using the ‘serial’ library of python 2.7 to send the AT commands.
What is your recommended way to send AT commands from script?

The send command:

The ‘send’ response:

Did you do a better job of driving gps? I saw the printing of GPS in the reply, but I didn’t see the reply sent to the data. Can I cut more content and show it? Thank you

Thanks @Nicholas.
Following screenshot of 4 retries. The logic -

  1. Wake up - send ‘at+set_config=device:sleep:0’
  2. Read the ‘wake up’ response
  3. Send the package - 'at+send=lora:2:
  4. Wait for 6 seconds
  5. Read the send response
  • The response for the first ‘send’ command not full
  • The response of the second try include return status 80 (busy) and 101 (size error)
  • The response of the third try include error code 87 (length error)

and another question - how could I check that there is connection with the Lora gateway? I need indication that the GW is on because I intend to send it to sleep state and to sync the waking up time


at+set_config=lora:send_interval:0:5 You first turn off the automatic sending data through this AT command, because RAK5205 has its own sensor, if it is turned on, it will automatically send the sensor data, and then you send it again.

The interval is 0 but some time no “success” appears and no “error” (see below).
What should be the indication to success (or failure)?
What is the indication for live connection with the gateway?

Send the first message you must send via the AT command and after you get a successful reply from your graph, send the second data.I think you can judge before the second number when it comes upThe following data is sent after …send success…

I’m not sure I understand correctly when I can be sure that the package sent. The only indication for success is the “send success” response? When no “error” received and no “send success” received (see example in the last screanshot “…02,ROM”) what it means?

He will have a retransmission mechanism. When the previous data was not successfully transmitted, he will continue to try to retransmit it, and an error message will appear after several consecutive times.