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 using lte.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


Log in to reply
 

Pycom on Twitter