Using values from commands into Midlet | Telit Cinterion IoT Developer Community
November 30, 2016 - 10:35am, 3283 views
Hello,
In our Midlet we need to check the signal quality just after the starting to can be sure that our files could be copied into Module.
As I undertand in order to know the signal quality are two commands: AT+SCQ and AT^SMONI. For conections with 3G is recomended to use AT^SMONI.
According to this discussion in the forum the conditions to begin the transfer are:
values RSCP > -100 dBm and Ec/No > -14 dBm can be considered like the acceptable conditions
Values RSCP > - 47 and Ec/No > -4 dBm can be considered like optimal conditions
https://iot-developer.thalesgroup.com/threads/atsmoni-vs-atcsq-ehs6-sign...
using:
private ATCommand atc;
private String check_Quality ="";
check_Quality=atc.send("AT^SMONI\r");
I'm getting the signal quality answer:
^SMONI: 3G,10788,413,-12.0,-89,250,99,6D02,499AE0F,6,20,NOCONN
and I would like to use these values" -12.0 ( Ec/n0),-89 (RSCP) "in my Java code. To can do something like:
if (Ec/n0 && RSCP are good enough) SHOW signal is good enough, ready to download
So my question, how is posible to obtain precisely this values and use them inside the code?
I also notified that in SL Portal, on network tab, Signal (RSCP) and RSSI are in diferents positions, so seems to me that ***** to be a way to can use this values.
regards
Hello,
it is true that signal strength that you can get with AT+CSQ is not the best signal quality indicator for 3G. Ec/n0 and RSCP are better - the values range is more or less arbitrary but you need to have some. The link quality indicator (values 0-9) used on the platform is also calculated from Ec/n0 and RSCP.
To get the values form the presented string you need to parse it, you can do that in a different ways, here's one example method:
static String getSubStringBySeparator(String text, int blockNumber, char separator) {
String result = "";
int index = 0;
if (text.indexOf(separator) > -1) {
while (index > -1 && blockNumber >= 0) {
if (blockNumber == 0 && text.indexOf(separator, index) == -1) {
return text.substring(index);
} else if(blockNumber == 0 && text.indexOf(separator, index) != -1) {
return text.substring(index,text.indexOf(separator, index));
}
index = text.indexOf(separator, index) + 1;
blockNumber --;
}
}
return result;
}
Regards,
Bartłomiej
Thanks,
And in case of "ME is camping on a GSM (2G) cell"
Syntax:
^SMONI: ACT,ARFCN,BCCH,MCC,MNC,LAC,cell,C1,C2,NCC,BCC,GPRS,ARFCN,TS,timAdv,dBm,Q,ChMod
Example:
^SMONI: 2G,673,-80,262,07,4EED,A500,35,35,7,4,G,643,4,0,-80,0,S_FR
There is not rssi, rscp or ecn0, which values are necessary to check and between which limits can be considered good?
There is 2G in your example and these parameters are not available there. For 2G you can just use the RSSI parameter which you can get with AT+CSQ command. And again it is arbitrary which value you will consider as a border value for a good reception, 16 should be good.
Regards,
Bartłomiej
A little bit late to the party here...
Is it possible to estimate some sort of signal quality if you only have the SMONI parameters but not CSQ? Can RSSI be derrived from the SMONI parameters?
Hello,
In 2G you need CSQ. For 3/4G RSSI is not a good indicator. Please check out this thread: https://iot-developer.thalesgroup.com/threads/response-atsmoni
BR,
Bartłomiej
I understand. Thank you for you reply.