I’m working to minimize both the connection session time and overal traffic while sending 100-200kb of data.Perfect solution for both is to use build in TCP/IP stack in data mode with hardware flow control.Unfirtunately I monitor huge delays (20-30 seconds and more even infinitely) caused by the RTS/CTS flow control after sending some data initially.
Modem is: GE864-Quad V2
Firmware: 10.0.002 – delays are usually 24-5 seconds
Firmware: 10.1.020 – delays are around 50 seconds
What I’m doing now is to check periodicaly socket info how much bytes are waiting for ACK and if they are more than 10000 to wait until they become less. This introduces some delays that seem to help, but is far from perfect – it need switching back to command mode, reduces the bandwidth, because of the reduced bandwidth TCP frames are smaller which increases the tcp/ip headers size etc. i.e. this goes in oposite direction of my goal.
I can attach logic analyzer traces if you want to see exact timings, etc.
Can you please suggest me how to do proper flow control?
Will CMUX for example help in this case?
The performance should be already at optimal levels and the HW flow control should take care of the optimal data transfer.
You module in best network conditions can achieve a maximum upload speed of 40 kbps.Therefore, to upload a file of 200kB, it should take at least 40 seconds.
If this time becomes considerably longer, you should monitor the network conditions with AT#SERVINFO or with AT#MONI=7;#MONI or maybe AT+CSQ.
The CMUX can help you to use one instance AT in data mode (to transfer data) and another instance AT, to monitor the condition of the socket (eg. AT#SI) and the condition of the network (eg. AT#SERVINFO).
If you experience this “considerably longer” transfer times, then provide us a log of the AT commands that you use and the response from this commands:
Hit enter to search or ESC to close
Knowledge Base & Download Zone