3G Electron on 2G Networks

@rickkas7

I’m using your CellularHelper repo as a jumping off point for testing cellular connectivity however the part where I read what type of network I’ve connected to with

CellularHelperEnvironmentCellData::postProcess()

is confusing me.

The band that this function is parsing is coming out as either DCS 1800 or GSM 900 , even though I am testing on a U-260 Electron.

Note that I am using AT+UBANDSEL to successfully select the 850 and 1900 MHz bands as per:

[ Modem::getBandAvailable ] = = = = = = = = = =
    10.753 AT send      15 "AT+UBANDSEL=?\r\n"
    10.764 AT read  +   27 "\r\n+UBANDSEL: (0,850,1900)\r\n"
    10.775 AT read OK    6 "\r\nOK\r\n"
0000010775 [app.main] INFO: Available bands: 
0,850,1900

[ Modem::getBandSelect ] = = = = = = = = = =
    10.776 AT send      14 "AT+UBANDSEL?\r\n"
    10.786 AT read  +   23 "\r\n+UBANDSEL: 850,1900\r\n"
    10.796 AT read OK    6 "\r\nOK\r\n"
0000010796 [app.main] INFO: Selected bands: 
850,1900
0000010796 [app.main] INFO: Trying band: BAND_0

[ Modem::setBandSelect ] = = = = = = = = = =

[ Modem::getBandAvailable ] = = = = = = = = = =
    10.797 AT send      15 "AT+UBANDSEL=?\r\n"
    10.808 AT read  +   27 "\r\n+UBANDSEL: (0,850,1900)\r\n"
    10.818 AT read OK    6 "\r\nOK\r\n"

[ Modem::getBandSelect ] = = = = = = = = = =
    10.818 AT send      14 "AT+UBANDSEL?\r\n"
    10.829 AT read  +   23 "\r\n+UBANDSEL: 850,1900\r\n"
    10.839 AT read OK    6 "\r\nOK\r\n"
0000010839 [app.main] WARN:  band(s) set! Value will be saved in NVM when powering off modem.
0000010839 [app.main] INFO: Checking that band really was set correctly....

[ Modem::getBandSelect ] = = = = = = = = = =
    10.840 AT send      14 "AT+UBANDSEL?\r\n"
    10.851 AT read  +   23 "\r\n+UBANDSEL: 850,1900\r\n"
    10.861 AT read OK    6 "\r\nOK\r\n"
0000010861 [app.main] INFO: Selected bands: 
850,1900
0000010861 [app.main] WARN: --------------------DONE GET/SET BANDS---------------------

:hamburger:
and

[ Modem::getBandAvailable ] = = = = = = = = = =
    77.071 AT send      15 "AT+UBANDSEL=?\r\n"
    77.081 AT read  +   27 "\r\n+UBANDSEL: (0,850,1900)\r\n"
    77.091 AT read OK    6 "\r\nOK\r\n"
0000077091 [app.main] INFO: Available bands: 
0,850,1900

[ Modem::getBandSelect ] = = = = = = = = = =
    77.092 AT send      14 "AT+UBANDSEL?\r\n"
    77.102 AT read  +   23 "\r\n+UBANDSEL: 850,1900\r\n"
    77.112 AT read OK    6 "\r\nOK\r\n"
0000077112 [app.main] INFO: Selected bands: 
850,1900
0000077112 [app.main] INFO: Trying band: BAND_850

[ Modem::setBandSelect ] = = = = = = = = = =

[ Modem::getBandAvailable ] = = = = = = = = = =
    77.113 AT send      15 "AT+UBANDSEL=?\r\n"
    77.124 AT read  +   27 "\r\n+UBANDSEL: (0,850,1900)\r\n"
    77.134 AT read OK    6 "\r\nOK\r\n"

[ Modem::getBandSelect ] = = = = = = = = = =
    77.134 AT send      14 "AT+UBANDSEL?\r\n"
    77.145 AT read  +   23 "\r\n+UBANDSEL: 850,1900\r\n"
    77.155 AT read OK    6 "\r\nOK\r\n"
    77.155 AT send      17 "AT+UBANDSEL=850\r\n"
    78.576 AT read OK    6 "\r\nOK\r\n"
0000078576 [app.main] WARN:  band(s) set! Value will be saved in NVM when powering off modem.
0000078576 [app.main] INFO: Checking that band really was set correctly....

[ Modem::getBandSelect ] = = = = = = = = = =
    78.577 AT send      14 "AT+UBANDSEL?\r\n"
    78.588 AT read  +   18 "\r\n+UBANDSEL: 850\r\n"
    78.598 AT read OK    6 "\r\nOK\r\n"
0000078598 [app.main] INFO: Selected bands: 
850
0000078598 [app.main] WARN: --------------------DONE GET/SET BANDS---------------------

:hamburger:
and

[ Modem::getBandAvailable ] = = = = = = = = = =
   143.091 AT send      15 "AT+UBANDSEL=?\r\n"
   143.101 AT read  +   27 "\r\n+UBANDSEL: (0,850,1900)\r\n"
   143.111 AT read OK    6 "\r\nOK\r\n"
0000143111 [app.main] INFO: Available bands: 
0,850,1900

[ Modem::getBandSelect ] = = = = = = = = = =
   143.112 AT send      14 "AT+UBANDSEL?\r\n"
   143.122 AT read  +   18 "\r\n+UBANDSEL: 850\r\n"
   143.132 AT read OK    6 "\r\nOK\r\n"
0000143132 [app.main] INFO: Selected bands: 
850
0000143132 [app.main] INFO: Trying band: BAND_1900

[ Modem::setBandSelect ] = = = = = = = = = =

[ Modem::getBandAvailable ] = = = = = = = = = =
   143.133 AT send      15 "AT+UBANDSEL=?\r\n"
   143.144 AT read  +   27 "\r\n+UBANDSEL: (0,850,1900)\r\n"
   143.154 AT read OK    6 "\r\nOK\r\n"

[ Modem::getBandSelect ] = = = = = = = = = =
   143.154 AT send      14 "AT+UBANDSEL?\r\n"
   143.165 AT read  +   18 "\r\n+UBANDSEL: 850\r\n"
   143.175 AT read OK    6 "\r\nOK\r\n"
   143.175 AT send      18 "AT+UBANDSEL=1900\r\n"
   165.986 AT read OK    6 "\r\nOK\r\n"
0000165986 [app.main] WARN:  band(s) set! Value will be saved in NVM when powering off modem.
0000165987 [app.main] INFO: Checking that band really was set correctly....

[ Modem::getBandSelect ] = = = = = = = = = =
   165.987 AT send      14 "AT+UBANDSEL?\r\n"
   165.998 AT read  +   19 "\r\n+UBANDSEL: 1900\r\n"
   166.008 AT read OK    6 "\r\nOK\r\n"
0000166008 [app.main] INFO: Selected bands: 
1900
0000166008 [app.main] WARN: --------------------DONE GET/SET BANDS---------------------

:grin:
:grin:
:grin:

but those just result in the following:

38.652 AT send      11 "AT+CGED=5\r\n"
38.663 AT read ERR  39 "\r\n+CME ERROR: operation not supported\r\n"
38.664 AT send      11 "AT+CGED=3\r\n"
38.684 AT read  +   22 "\r\n+CGED: RAT:\"UMTS\",\r\n"
38.694 AT read UNK  61 "\r\nMCC:302, MNC:720, LAC:cf35, CI:012020d, DLF:1037, ULF:812\r\n"
38.705 AT read OK    6 "\r\nOK\r\n"
service rat=UMTS mcc=302, mnc=720, lac=cf35 ci=12020d band=DCS 1800 dlf=1037 ulf=812

:pizza:
and

99.735 AT send      11 "AT+CGED=5\r\n"
99.746 AT read ERR  39 "\r\n+CME ERROR: operation not supported\r\n"
99.747 AT send      11 "AT+CGED=3\r\n"
99.757 AT read  +   22 "\r\n+CGED: RAT:\"UMTS\",\r\n"
99.767 AT read UNK  61 "\r\nMCC:302, MNC:720, LAC:cf35, CI:012020d, DLF:1037, ULF:812\r\n"
99.778 AT read OK    6 "\r\nOK\r\n"
service rat=UMTS mcc=302, mnc=720, lac=cf35 ci=12020d band=DCS 1800 dlf=1037 ulf=812`

:pizza:
and

192.938 AT send 11 “AT+CGED=5\r\n”
192.949 AT read ERR 39 “\r\n+CME ERROR: operation not supported\r\n”
192.950 AT send 11 “AT+CGED=3\r\n”
192.960 AT read + 22 “\r\n+CGED: RAT:“UMTS”,\r\n”
192.970 AT read UNK 59 “\r\nMCC:302, MNC:720, LAC:cf35, CI:0122fba, DLF:437, ULF:37\r\n”
192.981 AT read OK 6 “\r\nOK\r\n”
service rat=UMTS mcc=302, mnc=720, lac=cf35 ci=122fba band=GSM 900 dlf=437 ulf=37

:cactus:
:hushed::open_mouth::astonished::scream:

I’m guessing that there must be a bug in the CellularHelper code?

I tried to figure out the bug but the uBlox AT command documentation doesn’t really specify what the ULF and DLF frequencies mean:

I’m guessing since
16383 = (2^14) - 1
that these values represent some kind of bitmask? Or maybe their range is just a function of a allocated chunk of memory (14 bits?) on the modem rather than actually being used as a bitmask?

@rickkas7 should know I guess, you wrote the darn thing!