Hello,
I am working on code that will attempt to reset the connection process and configure the modem to use a different Radio Access Technology (RAT) using the +URAT
AT commands.
The problem is that I can’t find a way to reset the spark firmware connection state machine.
Using Particle.disconnect()
, Cellular.disconnect()
, Cellular.off()
all fail to reset the WLAN_WD_TO
, and the connection process timeout doesn’t seem to get reset on new firmware flash either (the WLAN timeout latest value must be stored in SRAM I guess).
This results in the following typical behaviour for my test program (also note that registration is denied by about 44 seconds in, but the firmware connection process doesn’t recognize this !!! )
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2017.05.23 23:05:51 =~=~=~=~=~=~=~=~=~=~=~=
0000001555 [app.main] WARN: Waiting for serial input before proceeding
0000002055 [app.main] WARN: Waiting for serial input before proceeding
0000002556 [app.main] WARN: Waiting for serial input before proceeding
0000003056 [app.main] WARN: Waiting for serial input before proceeding
0000003556 [app.main] WARN: Received serial input, now proceeding!
0000003557 [app.main] INFO: Serial monitor open! Now proceeding!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000003558 [app.main] WARN: !!!!! CALLING Particle.disconnect() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000003559 [app.main] WARN: !!!!! CALLING Cellular.disconnect() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000003560 [app.main] WARN: !!!!! CALLING Cellular.off() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000003561 [app.main] INFO: Changing state to: CELL_INITIAL_STATE
0000003561 [app.main] INFO: Initializing state machine for first time!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000003562 [app.main] INFO: Changing state to: CELL_RESPONSIVENESS_CHECK_STATE
0000003562 [app.cellHelper] INFO: Waiting for modem to be responsive
3.563 AT send 4 "AT\r\n"
6.073 AT send 4 "AT\r\n"
0000008583 [app.main] ERROR: Modem is not responding to AT commands!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000008583 [app.main] WARN: !!!!! CALLING Cellular.on() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000008584 [app.main] INFO: Changing state to: CELL_POWERUP_WAIT_STATE
[ ElectronSerialPipe::begin ] = = = = = = = =
[ Modem::powerOn ] = = = = = = = = = = = = = =
8.896 AT send 4 "AT\r\n"
8.906 AT read UNK 3 "AT\r"
8.916 AT read OK 6 "\r\nOK\r\n"
9.126 AT send 7 "AT E0\r\n"
9.136 AT read UNK 6 "AT E0\r"
9.146 AT read OK 6 "\r\nOK\r\n"
9.146 AT send 11 "AT+CMEE=2\r\n"
9.156 AT read OK 6 "\r\nOK\r\n"
9.156 AT send 19 "AT+CMER=1,0,0,2,1\r\n"
9.168 AT read OK 6 "\r\nOK\r\n"
9.168 AT send 15 "AT+IPR=115200\r\n"
9.178 AT read OK 6 "\r\nOK\r\n"
9.278 AT send 10 "AT+CPIN?\r\n"
9.288 AT read + 16 "\r\n+CPIN: READY\r\n"
9.298 AT read OK 6 "\r\nOK\r\n"
0000013585 [app.main] INFO: Done waiting for modem to power up!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000013585 [app.main] INFO: Changing state to: CELL_RESPONSIVENESS_CHECK_STATE
0000013586 [app.cellHelper] INFO: Waiting for modem to be responsive
13.586 AT send 4 "AT\r\n"
13.596 AT read OK 6 "\r\nOK\r\n"
0000013596 [app.main] INFO: Modem is now responsive!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000013597 [app.main] INFO: Changing state to: CELL_DETACHED_STATE
0000013597 [app.main] INFO: TODO: do pre-connection chores (check IMSI number, set APN credentials, etc)
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000013598 [app.main] INFO: Changing state to: CELL_INITIATE_REGISTRATION_STATE
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000013599 [app.main] WARN: !!!!! CALLING Cellular.connect() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000013600 [app.main] INFO: Changing state to: CELL_REGISTRATION_WAIT_STATE
0000013601 [system] INFO: Sim Ready
0000013601 [system] INFO: ARM_WLAN_WD 1
[ Modem::init ] = = = = = = = = = = = = = = =
13.601 AT send 9 "AT+CGSN\r\n"
13.623 AT read UNK 19 "\r\nXXXXXXXXXXXXXXXXX\r\n"
13.633 AT read OK 6 "\r\nOK\r\n"
13.633 AT send 9 "AT+CGMI\r\n"
13.643 AT read UNK 10 "\r\nu-blox\r\n"
13.653 AT read OK 6 "\r\nOK\r\n"
13.653 AT send 9 "AT+CGMM\r\n"
13.663 AT read UNK 13 "\r\nSARA-U260\r\n"
13.673 AT read OK 6 "\r\nOK\r\n"
13.673 AT send 9 "AT+CGMR\r\n"
13.683 AT read UNK 9 "\r\n23.20\r\n"
13.693 AT read OK 6 "\r\nOK\r\n"
13.693 AT send 9 "AT+CCID\r\n"
13.703 AT read + 30 "\r\n+CCID: XXXXXXXXXXXXXXXXXXXXX\r\n"
13.715 AT read OK 6 "\r\nOK\r\n"
13.715 AT send 11 "AT+UPSV=1\r\n"
13.725 AT read OK 6 "\r\nOK\r\n"
13.725 AT send 11 "AT+CMGF=1\r\n"
13.735 AT read OK 6 "\r\nOK\r\n"
13.735 AT send 13 "AT+CNMI=2,1\r\n"
13.745 AT read OK 6 "\r\nOK\r\n"
13.745 AT send 9 "AT+CIMI\r\n"
13.755 AT read UNK 19 "\r\XXXXXXXXX\r\n"
13.765 AT read OK 6 "\r\nOK\r\n"
[ Modem::register ] = = = = = = = = = = = = = =
13.765 AT send 10 "AT+CREG?\r\n"
13.777 AT read + 14 "\r\n+CREG: 0,0\r\n"
13.787 AT read OK 6 "\r\nOK\r\n"
13.787 AT send 11 "AT+CGREG?\r\n"
13.797 AT read + 15 "\r\n+CGREG: 0,0\r\n"
13.807 AT read OK 6 "\r\nOK\r\n"
13.807 AT send 12 "AT+CGREG=2\r\n"
13.817 AT read OK 6 "\r\nOK\r\n"
13.817 AT send 11 "AT+CREG=2\r\n"
13.827 AT read OK 6 "\r\nOK\r\n"
13.827 AT send 10 "AT+CREG?\r\n"
13.837 AT read + 14 "\r\n+CREG: 2,0\r\n"
13.847 AT read OK 6 "\r\nOK\r\n"
13.847 AT send 11 "AT+CGREG?\r\n"
13.857 AT read + 15 "\r\n+CGREG: 2,0\r\n"
13.867 AT read OK 6 "\r\nOK\r\n"
28.867 AT send 10 "AT+CREG?\r\n"
28.867 AT read + 12 "\r\n+CREG: 4\r\n"
28.879 AT read + 13 "\r\n+CGREG: 4\r\n"
28.889 AT read + 14 "\r\n+CIEV: 3,0\r\n"
28.899 AT read + 14 "\r\n+CIEV: 7,0\r\n"
28.909 AT read + 14 "\r\n+CIEV: 9,0\r\n"
CIEV matched: 9,0
29.719 AT read + 14 "\r\n+CREG: 2,4\r\n"
29.729 AT read OK 6 "\r\nOK\r\n"
29.729 AT send 11 "AT+CGREG?\r\n"
29.739 AT read + 15 "\r\n+CGREG: 2,4\r\n"
29.749 AT read OK 6 "\r\nOK\r\n"
44.749 AT send 10 "AT+CREG?\r\n"
44.749 AT read + 14 "\r\n+CIEV: 2,4\r\n"
44.761 AT read + 12 "\r\n+CREG: 3\r\n"
44.771 AT read + 13 "\r\n+CGREG: 3\r\n"
44.781 AT read + 14 "\r\n+CIEV: 9,1\r\n"
CIEV matched: 9,1
46.551 AT read + 14 "\r\n+CREG: 2,3\r\n"
46.561 AT read OK 6 "\r\nOK\r\n"
46.561 AT send 11 "AT+CGREG?\r\n"
46.571 AT read + 15 "\r\n+CGREG: 2,3\r\n"
46.581 AT read OK 6 "\r\nOK\r\n"
61.581 AT send 10 "AT+CREG?\r\n"
63.381 AT read + 14 "\r\n+CREG: 2,3\r\n"
63.391 AT read OK 6 "\r\nOK\r\n"
63.391 AT send 11 "AT+CGREG?\r\n"
63.401 AT read + 15 "\r\n+CGREG: 2,3\r\n"
63.411 AT read OK 6 "\r\nOK\r\n"
78.411 AT send 10 "AT+CREG?\r\n"
80.211 AT read + 14 "\r\n+CREG: 2,3\r\n"
80.221 AT read OK 6 "\r\nOK\r\n"
80.221 AT send 11 "AT+CGREG?\r\n"
80.231 AT read + 15 "\r\n+CGREG: 2,3\r\n"
80.241 AT read OK 6 "\r\nOK\r\n"
95.241 AT send 10 "AT+CREG?\r\n"
97.041 AT read + 14 "\r\n+CREG: 2,3\r\n"
97.051 AT read OK 6 "\r\nOK\r\n"
97.051 AT send 11 "AT+CGREG?\r\n"
97.061 AT read + 15 "\r\n+CGREG: 2,3\r\n"
97.071 AT read OK 6 "\r\nOK\r\n"
0000103602 [app.main] ERROR: Waiting for cell to register to network timed out!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000103602 [app.main] INFO: Changing state to: CELL_REGISTRATION_TIMEOUT_STATE
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000103604 [app.main] INFO: Changing state to: CELL_INITIATE_RECONNECTION_STATE
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000103606 [app.main] WARN: !!!!! CALLING Particle.disconnect() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000104109 [app.main] WARN: !!!!! CALLING Cellular.disconnect() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
[ Modem::cancel ] = = = = = = = = = = = = = = =
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000104111 [app.main] INFO: Changing state to: CELL_RECONNECTION_DETACH_WAIT_STATE
0000104112 [system] WARN: Resetting WLAN due to WLAN_WD_TO()
[ Modem::powerOff ] = = = = = = = = = = = = = =
[ Modem::resume ] = = = = = = = = = = = = = = =
104.115 AT send 12 "AT+CPWROFF\r\n"
104.265 AT read OK 6 "\r\nOK\r\n"
[ Modem::cancel ] = = = = = = = = = = = = = = =
[ Modem::powerOn ] = = = = = = = = = = = = = =
[ Modem::resume ] = = = = = = = = = = = = = = =
104.577 AT send 4 "AT\r\n"
105.897 AT send 4 "AT\r\n"
107.217 AT send 4 "AT\r\n"
108.537 AT send 4 "AT\r\n"
108.547 AT read UNK 3 "AT\r"
108.557 AT read OK 6 "\r\nOK\r\n"
[ Modem::cancel ] = = = = = = = = = = = = = = =
0000108557 [system] INFO: Sim Ready
0000108557 [system] INFO: ARM_WLAN_WD 1
[ Modem::init ] = = = = = = = = = = = = = = =
0000109112 [app.main] INFO: Done waiting for modem to detach from network
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000109112 [app.main] INFO: Changing state to: CELL_RECONNECTION_STAGING_STATE
0000109113 [app.main] INFO: Changing the radio access technology being used
0000109113 [app.cellHelper] INFO: Attempting to configure the set the radio access technology (RAT) being used.
0000109114 [app.cellHelper] ERROR: Couldn't detach from network!
0000109114 [app.cellHelper] INFO: Setting radio access technology:
===> radioAccessTechnologyConfig_t || mode = RAT_SINGLE_MODE | firstChoice = UTRAN
0000109115 [app.cellHelper] INFO: Current Setting:
0000109115 [app.cellHelper] INFO: Confirm new setting:
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000109116 [app.main] WARN: !!!!! CALLING Cellular.off() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000109117 [app.main] INFO: Changing state to: CELL_POWERDOWN_WAIT_STATE
[ Modem::powerOff ] = = = = = = = = = = = = = =
[ Modem::resume ] = = = = = = = = = = = = = = =
109.118 AT send 12 "AT+CPWROFF\r\n"
109.200 AT read UNK 11 "AT+CPWROFF\r"
109.210 AT read OK 6 "\r\nOK\r\n"
[ Modem::cancel ] = = = = = = = = = = = = = = =
0000114118 [app.main] INFO: Done waiting for modem to power down!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000114118 [app.main] WARN: !!!!! CALLING Cellular.on() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000114119 [app.main] INFO: Changing state to: CELL_POWERUP_WAIT_STATE
[ Modem::powerOn ] = = = = = = = = = = = = = =
[ Modem::resume ] = = = = = = = = = = = = = = =
114.431 AT send 4 "AT\r\n"
115.751 AT send 4 "AT\r\n"
117.071 AT send 4 "AT\r\n"
117.081 AT read UNK 3 "AT\r"
117.091 AT read OK 6 "\r\nOK\r\n"
[ Modem::cancel ] = = = = = = = = = = = = = = =
0000119120 [app.main] INFO: Done waiting for modem to power up!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000119120 [app.main] INFO: Changing state to: CELL_RESPONSIVENESS_CHECK_STATE
0000119121 [app.cellHelper] INFO: Waiting for modem to be responsive
0000124121 [app.main] ERROR: Modem is not responding to AT commands!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000124121 [app.main] WARN: !!!!! CALLING Cellular.on() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000124122 [app.main] INFO: Changing state to: CELL_POWERUP_WAIT_STATE
0000129123 [app.main] INFO: Done waiting for modem to power up!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000129123 [app.main] INFO: Changing state to: CELL_RESPONSIVENESS_CHECK_STATE
0000129124 [app.cellHelper] INFO: Waiting for modem to be responsive
0000134124 [app.main] ERROR: Modem is not responding to AT commands!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000134124 [app.main] WARN: !!!!! CALLING Cellular.on() !!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
0000134125 [app.main] INFO: Changing state to: CELL_POWERUP_WAIT_STATE
0000138626 [system] WARN: Resetting WLAN due to WLAN_WD_TO()
How can I nuke the Particle firmware connection process, and make it start right from the beginning of the state machine process again so that I can configure a different RAT? (I don’t care how fast it connects at this point).