GPy Incorrect Firmware Version
-
I have multiple GPys that I have just received, that have not gone through any sort of firmware upgrade, that appear to be reporting the incorrect version. I'm trying to figure out how this happened, and how to determine what firmware version is actually running.
They appear to be running v1.20.2.r3:
(sysname='GPy', nodename='GPy', release='1.20.2.r3', version='v1.11-d945d33ee on 2020-03-08', machine='GPy with ESP32', pybytes='1.3.1')
Calls to
lte.init()
are occasionally failing with this error message:OSError: Couldn't connect to Modem!
However, in this commit: https://github.com/pycom/pycom-micropython-sigfox/commit/82c17cbe8ecef649ea594808882926eb339301c9
The error messages were changed to include more details ie:Couldn't connect to Modem (modem_state=disconnected)
This commit is present in
v1.20.2.r3
and in fact is present all the way back to an RC:v1.20.2.rc7
>git name-rev --tags --name-only 82c17cb v1.20.2.rc7~1^2~5^2~2
This leads me to believe that the firmware at the factory must have been incorrectly built/flashed.
-
Good to see the LTE modem is back to being connected.
There can be several solutions, mainly a reset of the GPy or usinglte.reset()
can help you out of the situation. It depends on what caused the disconnect to find out what can solve it.
In the worst case scenario you'll have to do a complete power cycle, as the LTE modem is not connected on the reset circuitry of the GPy microcontroller.
-
Here is the output for both of those commands on a GPy that I just updated (The modem is only becoming disconnected every so often and is not currently disconnected)
Pycom MicroPython 1.20.2.r4 [v1.11-ffb0e1c] on 2021-01-12; GPy with ESP32 Type "help()" for more information. >>> from network import LTE >>> lte = LTE(debug=True) [AT] 24375 AT+CFUN? [AT-OK] +30 +CFUN: 0 OK [AT] 24405 AT+SQNCTM? [AT-OK] +31 +SQNCTM: standard OK [AT] 24436 AT+CFUN=4 [AT-OK] +120 OK [AT] 24556 AT [AT-OK] +31 OK [AT] 24587 AT [AT-OK] +31 OK >>> import sqnsupgrade >>> sqnsupgrade.info(debug=True) <<< Welcome to the SQN3330 firmware updater [1.2.6] >>> >>> GPy with firmware version 1.20.2.r4 The current delay is 1000 Response (+++ #1): None Response (AT #1) b'\r\nERROR\r\n' Response (AT #2) b'\r\nOK\r\n' Response (AT+SMOD?) b'\r\n2\r\nOK\r\n' Converting response: 2 to int... Modem state: 2 Your modem is in application mode. Here is the current version: mirror? False recover? False resume? True direct? True atneg_only? False bootrom? False load_fff? False baudrate: 921600 target_baudrate: 921600 SYSTEM VERSION ============== FIRMWARE VERSION Bootloader0 : 5.1.1.0 [39529] Bootloader1* : 5.1.1.0 [47510] Bootloader2 : NA NV Info : 1.1,0,0 Software : 5.1.1.0 [47510] by robot-soft at 2020-01-24 08:44:21 UE : 5.0.0.0d COMPONENTS ZSP0 : 1.0.99-13616 ZSP1 : 1.0.99-12376 Pycom MicroPython 1.20.2.r4 [v1.11-ffb0e1c] on 2021-01-12; GPy with ESP32 Type "help()" for more information. >>> from network import LTE >>> lte = LTE(debug=True) [AT] 24375 AT+CFUN? [AT-OK] +30 +CFUN: 0 OK [AT] 24405 AT+SQNCTM? [AT-OK] +31 +SQNCTM: standard OK [AT] 24436 AT+CFUN=4 [AT-OK] +120 OK [AT] 24556 AT [AT-OK] +31 OK [AT] 24587 AT [AT-OK] +31 OK >>> import sqnsupgrade >>> sqnsupgrade.info(debug=True) <<< Welcome to the SQN3330 firmware updater [1.2.6] >>> >>> GPy with firmware version 1.20.2.r4 The current delay is 1000 Response (+++ #1): None Response (AT #1) b'\r\nERROR\r\n' Response (AT #2) b'\r\nOK\r\n' Response (AT+SMOD?) b'\r\n2\r\nOK\r\n' Converting response: 2 to int... Modem state: 2 Your modem is in application mode. Here is the current version: mirror? False recover? False resume? True direct? True atneg_only? False bootrom? False load_fff? False baudrate: 921600 target_baudrate: 921600 SYSTEM VERSION ============== FIRMWARE VERSION Bootloader0 : 5.1.1.0 [39529] Bootloader1* : 5.1.1.0 [47510] Bootloader2 : NA NV Info : 1.1,0,0 Software : 5.1.1.0 [47510] by robot-soft at 2020-01-24 08:44:21 UE : 5.0.0.0d COMPONENTS ZSP0 : 1.0.99-13616 ZSP1 : 1.0.99-12376
If you have any advice on how to avoid the modem from getting disconnected, I would love to hear it, as it is definitely causing me some problems!
-
It could indeed be the case that 1.20.2.r3 on your device is dissimilar to the 1.20.2.r3 published. You did a thorough serach there :). Though such a thing could not cause the lte modem to appear in a disconnected state.
Could you try the following for me on the latest release (1.20.2.r4)
lte = LTE(debug=True)
or
import sqnsupgrade; sqnsupgrade.info(debug=True)
Note that on later releases, the later function returns a coredump at the end, we're working on fixing this in the next release