Cellular Phone Forum / General / GSM / January 2008
How to sense 3G or GPRS?
|
|
Thread rating:  |
Martin Evans - 11 Jan 2008 09:55 GMT I have an application that makes data connections and would like to be able to report if the connection will be 3G or GPRS based. Which modem commands are related to this?
Ideally I would like to also be able to detect "signal" strengths for both and therefore choose which to use. I realise AT+CSQ is not suitable.
The solution might need to work on different phones/modems so if there are also proprietary commands they would also be really useful to know.
Thanks
Martin
John Henderson - 13 Jan 2008 01:05 GMT > I have an application that makes data connections and would > like to be able to report if the connection will be 3G or GPRS > based. I'm interested in buying a 3G (UMTS) dedicated modem, but the range seems very limited at present. As I live in Australia, I'd want one covering both 850 and 2100 MHz UMTS bands. I've also read that 900 MHz UMTS will be used here for rural coverage by Optus and Vodafone.
At the moment, I've done only very limited experimentation with a Sony Ericsson V600i GSM/UMTS phone.
> Which modem commands are related to this? I presume you've got a copy of 3GPP specification 27.007.
AT+CGEQREQ and AT+CGEQMIN seem to be specific commands for UMTS, but I've not yet come to terms with how they work.
The old AT+COPS command also seems to offer some possibilities with the addition of the <AcT> (access technology) parameter:
AT+COPS=[<mode>[,<format>[,<oper>[,< AcT>]]]]
My V600i doesn't support the <AcT> parameter. Otherwise, it seems to me that:
AT+COPS=1,2,"50503",2
might restrict this phone to Vodafone Australia UMTS (3G) services, for example, and exclude their GSM cells.
> Ideally I would like to also be able to detect "signal" > strengths for both and therefore choose which to use. I > realise AT+CSQ is not suitable. I presume you're getting "99" (not known or not detectable) from UMTS cells. At least that's what I'm getting:
AT+COPS=3,2 OK AT+CREG=2 OK
+CREG: 1,"FB00","0BB846C4" AT+CSQ;+CIND? +CSQ: 99,99
+CIND: 5,2,0,0,1,0,0,0,0,0
+CREG: 1,"FB00","0BB846E2" AT+CSQ;+CIND? +CSQ: 99,99
+CIND: 5,1,0,0,1,0,0,0,0,0
whereas with ordinary GSM cells I get the likes of:
+CREG: 1,"290A","00005A17" AT+CSQ;+CIND? +CSQ: 13,99
+CIND: 5,5,0,0,1,0,0,0,0,0
where my parameter 2 in the "+CIND: " result is signal quality in the range 0-5. On this phone, I find I can get this same limited resolution signal information as "+CIEV: 2,<n>" unsolicited result codes (for GSM and UMTS cells alike) with the command:
AT+CMER=3,0,0,1
like this:
AT+CMER=3,0,0,1
OK
+CREG: 1,"FB00","0BB846E2"
+CIEV: 2,1
+CREG: 1,"290A","00005A52"
+CIEV: 2,3
> The solution might need to work on different phones/modems so > if there are also proprietary commands they would also be > really useful to know. And I'd like info on any of those too.
John
Martin Evans - 15 Jan 2008 11:17 GMT I do have a copy of the 3GPP but thanks for pointing that out as at least I now know it was the right thing to be working from. The description in there is not always real world so seeing your responses to the various commands was useful. I seem to remember one of my tests with the <AcT> was a bit odd, it reported the setting but failed to let it be configured.
After a bit of monitoring, we were able to spot the AT^SYSCFG command being used by a huawei device and from this it was possible finally to switch the unit into 3G. It is just a shame that 3GPP isn't always being followed/spec'd for such operations.
Yep, getting the 99 on the AT+CSQ command, but this has been the case for many years. I have one phone that happily reports a good signal strength for GSM calls and the second you make a GPRS call it freezes at whatever value was last read. This could be 0,30,99 etc, this can easily throw off any monitoring code waiting for a signal before dialling.
Here area a selection of responses from the is device:
Sending ATI3:
Manufacturer: huawei Model: E270 Revision: 11.304.02.03.00 IMEI: .......................... +GCAP: +CGSM,+FCLASS,+DS
OK
Sending AT^SYSCFG=?:
OK
Sending AT^SYSCFG?:
^SYSCFG:13,1,3FFFFFFF,1,2
OK
Sending AT+CSQ=?:
+CSQ: (0-31,99),(99)
OK
Sending AT+CSQ:
+CSQ: 9,99
OK
Sending AT+CREG=?:
+CREG: (0-2)
OK
Sending AT+CREG?:
+CREG: 0,1
OK
Sending AT+CGREG=?:
+CGREG: (0-2)
OK
Sending AT+CGREG?:
+CGREG: 0,1
OK
Sending AT+CGEQREQ=?:
+CGEQREQ: "IP",(0-4),(0-2048),(0-16000),(0-2048),(0-16000),(0-2),(0-1520),("0E0","1E1","1E2","7E3","1E3","1E4","1E5","1E6"),("0E0","5E2","1E2","5E3","4E3","1E3","1E4","1E5","1E6","6E8"),(0-3),(0,100-4000),(0-3) +CGEQREQ: "PPP",(0-4),(0-2048),(0-16000),(0-2048),(0-16000),(0-2),(0-1520),("0E0","1E1","1E2","7E3","1E3","1E4","1E5","1E6"),("0E0","5E2","1E2","5E3","4E3","1E3","1E4","1E5","1E6","6E8"),(0-3),(0,100-4000),(0-3)
OK
Sending AT+CGEQREQ?:
+CGEQREQ: 1,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 2,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 3,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 4,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 5,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 6,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 7,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 8,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 9,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 10,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 11,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 12,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 13,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 14,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 15,2,0,0,0,0,2,0,"0E0","0E0",3,0,0 +CGEQREQ: 16,2,0,0,0,0,2,0,"0E0","0E0",3,0,0
OK
Sending AT+CGEQMIN=?:
+CGEQMIN: "IP",(0-4),(0-2048),(0-16000),(0-2048),(0-16000),(0-2),(0-1520),("0E0","1E1","1E2","7E3","1E3","1E4","1E5","1E6"),("0E0","5E2","1E2","5E3","4E3","1E3","1E4","1E5","1E6","6E8"),(0-3),(0,100-4000),(0-3) +CGEQMIN: "PPP",(0-4),(0-2048),(0-16000),(0-2048),(0-16000),(0-2),(0-1520),("0E0","1E1","1E2","7E3","1E3","1E4","1E5","1E6"),("0E0","5E2","1E2","5E3","4E3","1E3","1E4","1E5","1E6","6E8"),(0-3),(0,100-4000),(0-3)
OK
Sending AT+CGEQMIN?:
+CGEQMIN:
OK
Sending AT+CIND=?:
COMMAND NOT SUPPORT
Sending AT+CIND?:
COMMAND NOT SUPPORT
Sending AT+CMER=?:
COMMAND NOT SUPPORT
Sending AT+CMER?:
COMMAND NOT SUPPORT
Sending AT+CIEV=?:
COMMAND NOT SUPPORT
Sending AT+CIEV?:
COMMAND NOT SUPPORT
>> I have an application that makes data connections and would >> like to be able to report if the connection will be 3G or GPRS [quoted text clipped - 90 lines] > > John
|
|
|