Cellular radio firmware release (SQN3330) for both Cat-M1 and NB-IoT


  • administrators

    Hello everyone,

    I know many of you were expecting this. We have made available 2 new firmware files for the Cellular radio in the FiPy, GPy and G01 modules. All the details and instructions can be found here:

    https://github.com/pycom/pycom-libraries/tree/master/lib/sqnsupgrade

    Cheers,
    Daniel



  • Hey Guys, I see this has been a problem for a few people and I have battled it for a few hours today. Initially, I was unable to get the firmware update to occur under any conditions. Always the same result:

    <<< Welcome to the SQN3330 firmware updater >>>
    Entering recovery mode
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/flash/lib/sqnsupgrade.py", line 100, in run
    OSError: AT+SMSWBOOT=3,0 failed!
    >>>
    

    I have now performed the upgrade three times successfully and each time under slightly different conditions. Here's my setup:

    • Pycom GPy (w/ firmware 1.17.5.b2)
    • LTE antenna attached
    • nano SIM for Telstra (Australia)
    • Expansion Board 2.0
    • SanDisk Ultra 16GB microSD card

    Procedure:

    • Remove all partitions from SD and format as single FAT32 partition
    • Copy to SD, FIPY_GPY_CATM1_33988.dup from https://software.pycom.io/downloads/sequans.html. Check file size 5,533KB.
    • Put SIM in GPy. Put SD card in Expansion Board 2.0. GPy on EB2.0
    • Power from USB. Join Wi-Fi AP provided by GPy with password www.pycom.io.
    • Create Atom IDE project folder. Use Settings - Project Settings to set Address: 192.168.4.1. Connect. Do not use Reset button: if reset is required, power down by unplugging, wait 10 seconds, reconnect.
    • Use REPL to check contents of SD card:
    >>> import os
    >>> from machine import SD
    >>> sd = SD()
    >>> os.mount(sd, '/sd')
    >>> os.listdir('/sd')
    ['System Volume Information', 'FIPY_GPY_CATM1_33988.dup']
    
    import sqnsupgrade
    sqnsupgrade.run('/sd/FIPY_GPY_CATM1_33988.dup', 921600)
    
    • If successful, expect:
    >>> import sqnsupgrade
    >>> sqnsupgrade.run('/sd/FIPY_GPY_CATM1_33988.dup', 921600)
    <<< Welcome to the SQN3330 firmware updater >>>
    Entering recovery mode
    Resetting.
    
    Starting STP (DO NOT DISCONNECT POWER!!!)
    STP started
    Session opened: version 1, max transfer 8192 bytes
    Sending 5665583 bytes: [#########################               ]  63%Sending 5665583 bytes: [#########################Sending 5665583 bytes: [########################################] 100%
    Code download done, returning to user mode
    Resetting (DO NOT DISCONNECT POWER!!!).
    .........
    Deploying the upgrade (DO NOT DISCONNECT POWER!!!)...
    Resetting (DO NOT DISCONNECT POWER!!!).
    ...
    Upgrade completed!
    Here's the current firmware version:
    UE5.0.0.0c
    LR5.1.1.0-33988
    OK
    >>>
    >>>
    

    Since the first update I also tried the above conditions with the following changes:

    • Serial connection instead of Wi-Fi ... OK
    • Expansion Board 3.0 instead of Expansion Board 2.0 ... OK

    Honestly I think one of two things made the difference: Getting all the libraries loaded and the firmware image on the SD card before powering down. On first power up everything seemed to work the first time. If I reset, or if I'd had a failed attempt, only powering down and restarting made it work again.

    The other option that might have had effect is doing the initial update using Expansion Board 2.0 (no firmware, FTDI only). Maybe once the first firmware update took hold subsequent updates were more likely to succeed.

    Hoping that helps anyone still stuck with this. Chris.



  • @danielm
    Could you shed some details on how you resolved the problem?? By manully mounting card-folder (/sd) using script via serial REPL?
    I am having similar similar ussue:
    https://forum.pycom.io/topic/3142/firmware-upgrade-tool-for-the-sequans-monarch-sqn3330
    Thanks a lot.



  • I successfully managed to upgrade my FiPy. I don't have any GPy but I have custom board with G01 ready. I am not able to try the upgrade, because there is no SD card slot on that board. About 10 days ago Daniel wrote me that they are working on scripts for upgrade through serial interface.

    There was no new firmware release for about a month already. I just hope that there is not any hardware flaw in boards equipped with Sequans LTE modem.



  • Hi everyone,

    Is there a reason why sequans cellular radio is not upgraded with the gpy last firmware?

    I ask this as the sequans upgrade method never work with our 3 gpy. ( Issue created on https://pycomiot.atlassian.net/servicedesk/ but no answer for now ).

    We waited months for the sequans upgrade so we could use Nb-IOT and progress in our R&D but now we're stucked with 3 pycom we can not use anymore...

    Is it normal people have so much problems with this upgrade?

    Thanks in advance



  • @flo242
    Please note the modem firmware update process takes quite some time to complete - possibly over the 5 minute mark.

    Please let it do it's thing. Unfortunately its hard to tell what's the state of your modem now without running some diagnostics through the test points.



  • @tealbrains Since I ran out of other options I even tried Safe-Boot but as expected it didn't revive the bricked modem (the FiPy itself works without any problem).



  • @flo242 Have you tried a "safe boot"?



  • @daniel

    I seem to have run into an unrecoverable problem while trying to upgrade the modem with the latest CAT-M1 firmware (it had the stock firmware, no previous upgrade yet). I wanted to try NB-IoT, so I followed the instructions to first upgrade to the latest CAT-M1 firmware before flashing the NB-IoT firmware. I was using Pysense (firmware pysense_0.0.8.dfu) and FiPy (firmware 1.17.3.b1), connected via serial. No SIM card was inserted, because in my first try it caused the modem to not accept the initial AT+SMSWBOOT=3,0 command to enter the recovery mode.

    >>> import sqnsupgrade
    >>> sqnsupgrade.run('/sd/FIPY_GPY_CATM1_33988.dup', 921600)
    <<< Welcome to the SQN3330 firmware updater >>>
    Entering recovery mode
    Resetting..
    ..
    Starting STP (DO NOT DISCONNECT POWER!!!)
    STP started
    Session opened: version 1, max transfer 8192 bytes
    Sending 5665583 bytes: [########################################] 100%
    Code download done, returning to user mode
    Resetting (DO NOT DISCONNECT POWER!!!).
    ......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/flash/lib/sqnsupgrade.py", line 129, in run
      File "/flash/lib/sqnsupgrade.py", line 59, in wait_for_modem
    KeyboardInterrupt:
    >>>
    >>> from network import LTE
    >>> lte = LTE()
    >>> lte.send_at_cmd('AT')
    ''
    

    After waiting almost 5 minutes there was no hope that it would ever finish, and after CTRL-C the modem didn't reply anymore. After a hard-reset I also can no longer create an LTE object, it just sits there forever. Obviously I am unable to retry the firmware upgrade since the modem doesn't respond anymore, what other options are left?

    Thanks in advance!



  • @kevin Thanks, that fixed it.



  • @nathanh

    2 cents worth, used fileZilla and had a similar problem trying to transfer the upgrade ~5.4mb file. Would only transfer 786432 bytes (20 seconds ish) before timing out and closing the connection. So wrote part file only! - Fix for me was to mount card-folder (/sd) using script via serial REPL console, then use fileZilla (via wifi connection) to write entire 5.4mb file (to /sd path).

    0_1523513947902_FTP01.jpg

    ---- Script I used ----

    from machine import SD
    import os
    import time
    import gc

    sd = SD()
    os.mount(sd, '/sd')

    #check the content
    os.listdir('/sd')

    #found this helps with NOT SHUTTING down Link after 20-30 Seconds, used filezilla while this was running to upload file

    xx = 1
    while xx < 40:
    print('Going to sleep')
    time.sleep(5) # in seconds
    print('waking up')
    print(str(xx))
    xx += 1

    os.unmount('/sd')
    gc.collect()



  • @cssmacs01 Still looks like you got something odd happening there but interesting that it states your version to be the latest... Guess this is one for the @administrators to comment on.



  • @nathanh You think I'm good?

    0_1523413796777_939d93d5-5512-4a66-b422-20c019e00c51-image.png



  • @nathanh Yes sir! For so much of my night I wasn't able to mount the SD, so that's why I went that route. I just finally mounted and it's transferring 5.5megs. Cross fingers!

    0_1523412444484_0e12ca15-bd4b-4afa-84ce-141494ba2d94-image.png



  • @cssmacs01 Just looking at your output there (and maybe I am reading it incorrectly), but are you sure you have the right firmware file because a) you were able to save it onto the flash and load it from there (and I thought it was too big hence needing the SD card) and it is only reporting the size of around ~780k vs the ~5.4mb that it should be.



  • @cssmacs01 .....addtional information. I've gone through the code line by line and manually sent the AT CMDS through UART and it all works up until AT+SMUPGRADE and then it errors. Feels like the two devices I got from Digi-key are bad or I'm missing something.

    0_1523410857209_297f4634-835b-41ff-b90a-d08b1a42b7c2-image.png



  • @daniel I need some help here to see if my devices are bricked. I attempted to update the cellular radio firmware and it was taking a realllllyyyyyy long time to reset so I CTRL+C and now all my AT+cmds are Errors. How do I get back online?

    0_1523402217665_72f1f079-2a23-4ef0-87e6-af6b828c462a-image.png



  • @vigmeister Sorry it did not resolve your upgrade issue as well. Just fyi, I used the lte library to send the AT command from REPL:

    >>> from network import LTE
    >>> lte = LTE()
    >>> lte.send_at_cmd('AT^RESET')
    

    Probably doesn't make any difference though.



  • @kevin Thanks for sharing progress! I tried the same on the FiPy. I was able to keep the REPL alive until the AT^RESET command was sent (using uart.write() ), but no dice. Still stuck with the same symptoms.



  • Update on my issue: I found that AT^RESET was required after flashing the board with new FW, and before attempting the sqnsupgrade procedure. After that, the upgrade seems to have completed successfully.


Log in to reply
 

Pycom on Twitter

Looks like your connection to Pycom Forum was lost, please wait while we try to reconnect.