New LTE Firmware release v1.18.1.r3 & CAT-M1 firmware & modem updater


  • administrators

    @danielm @panda

    As mentioned a fix for the init issue is already on GitHub and I will release this shortly. I'm also preparing the new NB-IoT firmware release for today.

    lte.isattached returns True even without calling lte.attach().

    Does this still happen with v1.18.1.r4? If it does, could you please check the two commands:

    print(lte.send_at_cmd('AT+CGATT?'))
    print(lte.send_at_cmd('AT+CEREG?'))

    According to Sequans, AT+CGATT? should be enough to detect if the modem is attached, however I found this is not always the case so I kept a mix of the "old" CEREG? and "new" CGATT method as the CEREG method doesn't always work correctly either.

    The problem is that any socket communication is almost impossible. Maybe there are some timing issues on the UART interface of Sequans modem? Could it behave differently with NB1-40343?

    Please check with the new firmware and let us know.

    I am seeing different behavior when connecting to CAT M1 with 1.18.1.r3 and 39529.

    I tested this with our Amarisoft LTE-M emulator but did not observe this issue so far.



  • @danielm said in New LTE Firmware release v1.18.1.r3 & CAT-M1 firmware & modem updater:

    @xykon I see the same thing with 1.18.1.r3. I can init the LTE class form the REPL, but not in a py script. The init just hangs.

    I traced it to activity before the init. For example the following works:

    def initLTE():
        lte = LTE()
    

    And the following hangs on the init

    import logger
    def initLTE():
       logger.info("bla bla bla bla")
       lte = LTE()
    

    I don't think the issue is specific to the logger class, but something in the logger causes the issue.

    Again, No issues with 1.18.1.r1



  • I am seeing different behavior when connecting to CAT M1 with 1.18.1.r3 and 39529.

    Previously the following would work fine:

    lte = LTE(carrier='verizon')
    lte.attach()

    ...

    lte.connect(cid=3)

    With the latest firmwares I get the following error:

    lte.connect(cid=3)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    OSError: the requested operation failed

    I tried with other carrier and cid values and same result.

    If I remove the carrier on init and cid parameter I can connect successfully. Are there new rules about how to connect to various carriers?



  • @xykon
    With v1.18.1.r3 suggested way to initialize LTE from REPL worked:

    from network import LTE
    lte = LTE()
    

    However it did not work in our application.
    Then I noticed v1.18.1.r4 pushed to the GitHub. I built it and tested LTE initialization which works both ways without any issues and in our application as well.

    The problem is that any socket communication is almost impossible. Maybe there are some timing issues on the UART interface of Sequans modem? Could it behave differently with NB1-40343?

    Edit: lte.isattached returns True even without calling lte.attach(). Snychro state of the modem is OFF.

    Pycom MicroPython 1.18.1.r4 [dfa1176] on 2018-11-12; FiPy with ESP32
    Type "help()" for more information.
    >>> from network import LTE
    >>> lte = LTE()
    >>> lte.isattached()
    True
    >>> lte.send_at_cmd('AT!="showphy"', delay = 100)
    '\r\nDL SYNCHRO STATISTICS\r\n=====================\r\n    Synchro state                         : OFF\r\n    PPU SIB1 ACQ watchdog                 : 0\r\n    Frequency Hypothesis RF  (Hz)         : 0\r\n    RSRP (dBm)                            : 0.00\r\n    RSRQ  (dB)                            : 0.00\r\n    Channel estimation state (Cell-spec.) : LOW CINR\r\n    Channel estimation state (UE-spec.)   : LOW CINR\r\n    Channel estimation state (MBSFN)      : LOW CINR\r\n    Channel estimation CINR               : 0.00\r\n    Channel length                        : SHORT\r\n  AGC\r\n    AGC RX gain (dB)                      : 0.00\r\n    RX PSD BO (dBFs)                      : 0.00\r\n    RX PSD (dBm)                          : 0.00\r\n    Noise level RS (dBm)                  : 0.00\r\n    Digital gain (dB)                     : 0.00\r\n    CINR RS (dB)                          : 0.00\r\n  NARROWBANDS\r\n    Last DL NB                            : 0\r\n    Last UL NB                            : 0\r\n  AFC\r\n    Frequency offset RF  (Hz)             : 0\r\n    Frequency offset BB  (Hz)             : 0\r\n  PBCH\r\n    MIB received quantity                 : 0\r\n    MIB timeout quantity                  : 0\r\n\r\nOK\r\n'
    

    Synchro state remains to be OFF even after calling lte.attach()


  • administrators

    @danielm I'm not quite sure why but it also makes a difference how you initialise the LTE class.

    Could you please try this instead:

    from network import LTE
    lte = LTE()
    

  • administrators

    @danielm said in New LTE Firmware release v1.18.1.r3 & CAT-M1 firmware & modem updater:

    Is v1.18.1.r3 supposed to work with NB1-38729?
    I am testing on FiPy and calling network.LTE() throws OSError: the requested operation failed - not immediately but after some timeout.

    The sqnsupgrade scripts use the UART class to connect directly to the modem from MicroPython and sometimes it doesn't release the peripheral, which causes LTE.init() to hang (it's trying to send several commands to the modem but never gets a response). You can try to run del sqnsupgrade to force unload it otherwise a hard reset should fix it too.

    If this happens even without loading sqnsupgrade, I'm currently testing NB1-40343 which fixes the DNS issue and a few other things. I'm expecting to release this within the next 24 hours and so far have not observed any issues during LTE.init() that are not related to sqnsupgrade.



  • @xykon
    Is v1.18.1.r3 supposed to work with NB1-38729?
    I am testing on FiPy and calling network.LTE() throws OSError: the requested operation failed - not immediately but after some timeout.

    Pycom MicroPython 1.18.1.r3 [v1.8.6-849-3aac0f3] on 2018-11-08; FiPy with ESP32
    Type "help()" for more information.
    >>> import sqnsupgrade
    >>> sqnsupgrade.info()
    <<< Welcome to the SQN3330 firmware updater [1.2.0] >>>
    >>> FiPy with firmware version 1.18.1.r3
    Your modem is in application mode. Here is the current version:
    UE6.0.0.0
    LR6.0.0.0-38729
    >>> import network
    >>> lte = network.LTE()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    OSError: the requested operation failed
    


  • @tlanier
    Got the update to work!

    Here's some things that might help other people getting started like me:

    • The Pycom Firmware Update program (V1.15.1) is used to update the GPy firmware to the stable version 1.18.1 r3. The Hi Speed must be selected or the update will time out.
      [https://pycom.io/downloads/]

    • The upgdiff_38638-to-39529.dup file is placed in the /flash directory, which is the same directory python code is placed. I originally placed the file in a folder I created called flash thinking my code was in the root folder. In fact my code was already in the /flash folder; if you have your project open in Visual Studio Code pointing to the flash folder, you may not notice this.

    • Even after changing global Pymakr.json to include .dup files (sync_file_types), Visual Studio Code will not upload the large file (times out). I had to use FTP instead.

    Connect using WIFI
    SSID: gpy-wlan-becc
    FTP to 192.168.4.1
    user: micro
    password: python
    FileZilla - must select passive + limit number of simultaneous connects to 1

    • Don't forget to erase the file after the update to free up space.


  • @xykon

    When I do an import sqnsupgrade I get an error ImportError: no module named 'sqnsupgrade'

    I'm running Pycom MicroPython 1.19.0.b4 on 2018-07-13 which was flashed using the latest download from [https://pycom.io/downloads/]

    How can I get the latest code on my GPy?

    Do I need to download the code from GitHub to upgrade?

    I've tried downloading and building the code from Ubuntu 18.04. I get an error on the last step when trying to flash the code to the GPy.

    $ sudo make BOARD=GPY flash

    make: *** No rule to make target '/components/esp32/ld/esp32.ld', needed by 'build/GPY/release/esp32_out.ld'

    I will describe in detail my steps to download and build if that is necessary.



  • Never mind. It was hidden formatting in my copy/paste. Typed out, it worked just fine.



  • I updated the Fipy just fine. But when I try to upgrade the modem I get "Exception when checking file upgdiff_38638-to-39529.dup... wrong file name?"

    I placed the file in the root of /flash. Then:

    import sqnsupgrade
    sqnsupgrade.run('upgdiff_38638-to-39529.dup')

    Also tried with upgdiff_33080-to-39529.dup with the same results.

    Any ideas?



  • @xykon I haven't upgraded my FiPy yet, waiting on a failure-free process. To apply these upgrades do I apply BOTH the CAT-M1 and NB-Iot firmware upgrades or is it only one or the other?

    Anyone?


  • administrators

    @rskoniec said in New LTE Firmware release v1.18.1.r3 & CAT-M1 firmware & modem updater:

    @Xykon Just for sure, can I safely use SD card as source for differential update?

    Yes the firmware can also be loaded from an SD card without problems.


  • administrators

    @danielm said in New LTE Firmware release v1.18.1.r3 & CAT-M1 firmware & modem updater:

    Regarding new NB-IoT modem firmware which should be available during next week - are there some other improvements on top of DNS fix, especially in regards to connection stability? My experience is that long-running NB-IoT connection fails in several hours.

    Yes the new firmware will also contain stability improvements.

    Differential upgrade of modem firmware seems to be very interesting feature. Do you think that something similar might be possible for ESP32 Pycom firmware as well?

    We're looking into this but as the technology is very different I can't make any promises at this time.



  • @Xykon Just for sure, can I safely use SD card as source for differential update?

    sqnsupgrade.run('/sd/upgdiff_38638-to-39529.dup')
    


  • @xykon
    Thanks, the packages seem to be ok now.

    Maybe you could answer to questions from my previous post as well :) :

    Regarding new NB-IoT modem firmware which should be available during next week - are there some other improvements on top of DNS fix, especially in regards to connection stability? My experience is that long-running NB-IoT connection fails in several hours.

    Differential upgrade of modem firmware seems to be very interesting feature. Do you think that something similar might be possible for ESP32 Pycom firmware as well?


  • administrators

    @danielm Sorry the correct packages should now be on the software server ready for download.



  • @xykon
    I am glad to find out that most of current issues should be fixed with this new release. We will start testing tomorrow as the devices are currently "frozen" at remote location.

    Regarding new NB-IoT modem firmware which should be available during next week - are there some other improvements on top of DNS fix, especially in regards to connection stability? My experience is that long-running NB-IoT connection fails in several hours.

    Differential upgrade of modem firmware seems to be very interesting feature. Do you think that something similar might be possible for ESP32 Pycom firmware as well?

    Btw, trying to download following package returns Unauthorized:
    https://software.pycom.io/downloads/CATM1-39529.zip

    I checked latest NB-IoT firmware package and it does not contain any differential upgrade files:
    https://software.pycom.io/downloads/NB1-38729.zip


 

Hello World?

Pylife on Kickstarter - November 2018








Back Us On Kickstarter >

Pycom on Twitter