Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    Unable to update GPy modem firmware

    Scheduled Pinned Locked Moved Issues & Bugs
    firmware updategpylte m1lte nb iot
    34 Posts 10 Posters 6.4k Views 13 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B Offline
      bqpd @florianrdt
      last edited by

      @florianrdt Hmm, I think the sqnupgrade.info() method also tries to create an instance of "LTE" and is also failing.
      Sorry I can't really help you. I hope your Sequans modem isn't bricked.
      Maybe the developer team has some better insights and can help you. As @Paul-Thornton said, they are looking into the whole modem firmware upgrade process in the near future.

      F 1 Reply Last reply Reply Quote 0
      • F Offline
        florianrdt @bqpd
        last edited by

        @bqpd ok, thanks anyway for your support!

        1 Reply Last reply Reply Quote 0
        • C Offline
          combaindeft @florianrdt
          last edited by

          @florianrdt

          did you try to reset the modem?

          lte.reset()
          lte.disconnect()
          lte.dettach()
          

          I had the same issues ... and it's because the modem has been turned / power off in "active" state ... and it remembers that as it saves it state to it's internal memory ...

          B F 2 Replies Last reply Reply Quote 1
          • B Offline
            bqpd @combaindeft
            last edited by

            @combaindeft Wait, so DID your upgrade of the sequans modem on the FiPy (where it failed in the first place) succeed AFTER you did:

            lte.reset()
            lte.disconnect()
            lte.dettach()
            

            or did i misunderstand you and it is still not working?
            Sadly i have no SIM-card at the moment so i can't test it myself for the next few days.
            Did it actually work in the end just doing sqnsupgrade.run('NB1-40343.dup', debug=True) even without using the update.elf file after you did the lte.reset()?

            @combaindeft said in Unable to update GPy modem firmware:

            We bought a bunch of FiPy's ... and one one of them, had the same issue.
            ...
            but that didn't work, so I just ran

            sqnsupgrade.run('NB1-40343.dup', debug=True)
            
            C 1 Reply Last reply Reply Quote 0
            • F Offline
              florianrdt @combaindeft
              last edited by

              @combaindeft I can't try this because I can't initialize the LTE object. The comand freeze.

              C 1 Reply Last reply Reply Quote 0
              • C Offline
                combaindeft @bqpd
                last edited by combaindeft

                @bqpd said in Unable to update GPy modem firmware:

                @combaindeft Wait, so DID your upgrade of the sequans modem on the FiPy (where it failed in the first place) succeed AFTER you did:

                lte.reset()
                lte.disconnect()
                lte.dettach()
                

                Affirmative! ...

                I couldn't get it to update the modem firmware ... and I read somewhere, that the update firmware function won't work if the modem is in "active mode" ... ergo I tired to Reset, disconnect and dettach it ... and followed by a reboot (I did a reboot, just to make sure...) ... I could update the firmware of the modem.

                or did i misunderstand you and it is still not working?

                No, It is working superfine now :-)

                Sadly i have no SIM-card at the moment so i can't test it myself for the next few days.
                Did it actually work in the end just doing sqnsupgrade.run('NB1-40343.dup', debug=True) even without using the update.elf file after you did the lte.reset()?

                @combaindeft said in Unable to update GPy modem firmware:

                We bought a bunch of FiPy's ... and one one of them, had the same issue.
                ...
                but that didn't work, so I just ran

                sqnsupgrade.run('NB1-40343.dup', debug=True)
                

                Step 1)

                lte.reset()
                lte.disconnect()
                lte.dettach()
                

                Step 2)
                reboot the device.

                Step 3a) identify if this is the ABSOLUTE 1ST TIME that you are updating the modem firmware

                sqnsupgrade.run('upgdiff_33080-to-40343.dup', 'updater.elf', debug=True)
                time.sleep(5)
                sqnsupgrade.run('NB1-40343.dup', debug=True)
                

                Step 3b) - if not 3a) ... That is, it this isn't the 1st time you are updating the modem's firmware

                sqnsupgrade.run('NB1-40343.dup', 'updater.elf', debug=True)
                time.sleep(5)
                sqnsupgrade.run('NB1-40343.dup', debug=True)
                

                Step 4) if 3a) and 3b) both fail ... by this point you might try this step too ...

                sqnsupgrade.run('NB1-40343.dup', debug=True)
                

                ... and yes ... since 3a) and 3b) failed me ... i did Step 4) as I didn't have anything to loose ...and it worked *yay-me*

                - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                Lastly - a tiny explanation - as may be asking yourselves "Why do you run two firmware updates after each other?!?!?" - in Step 3a) & 3b) ....

                As explained in the "Modem Firmware Update" in the docs: https://docs.pycom.io/tutorials/lte/firmware.html

                "After you have updated your modem once using the recovery method, you can now flash your modem again using just the CATM1-38638.dup or NB1-37781.dup file without specifying the updater.elf file. However, should the upgrade fail, your modem may end up in recovery mode and you will need the updater.elf file again. The updater will check for this and prompt you if using the updater.elf file is necessary."

                B 1 Reply Last reply Reply Quote 0
                • C Offline
                  combaindeft @florianrdt
                  last edited by combaindeft

                  @florianrdt said in Unable to update GPy modem firmware:

                  @combaindeft I can't try this because I can't initialize the LTE object. The comand freeze.

                  Step 1)

                  ###
                  ### STEP ONE
                  ###
                  import pycom
                  print('LOG: pycom.lte_modem_en_on_boot() # to check, should be False')
                  print(pycom.lte_modem_en_on_boot()) # to check, should be False
                  
                  print('LOG: pycom.lte_modem_en_on_boot(0) #set to False if above command is True')
                  print(pycom.lte_modem_en_on_boot(0)) #set to False if above command is True
                  
                  print('LOG: pycom.lte_modem_en_on_boot() # to check again if change was made')
                  print(pycom.lte_modem_en_on_boot()) # to check again if change was made
                  
                  

                  Step 2)

                  • A) It is imperative that you do a "HARD" reset of the board!
                    DO NOT PRESS THE "RESET" BUTTON ON THE BOARD

                  • B) To do a "HARD" reset:

                    • Un-plug any battery source you might have attached!
                    • Un-plug the USB-mini cable from the board
                    • wait a few seconds
                    • Re-attach the USB-mini to power up the device
                    • continue to Step 3)

                  Step 3)

                  ###
                  ### STEP THREE
                  ###
                  from network import LTE
                  lte = LTE()
                  lte.reset()
                  lte.disconnect()
                  lte.dettach()
                  
                  # few AT commands to check if modem is alive and responsive
                  lte.send_at_cmd('AT') 
                  lte.send_at_cmd('ATI')
                  lte.send_at_cmd('ATZ')
                  

                  If you got back your LTE() ... done the "Reset", "Disconnect" and "Dettach" ... and could execute the AT commands... continue to Step 3a) or 3b) in https://forum.pycom.io/topic/4022/unable-to-update-gpy-modem-firmware/24

                  F 1 Reply Last reply Reply Quote 0
                  • F Offline
                    florianrdt @combaindeft
                    last edited by

                    @combaindeft said in Unable to update GPy modem firmware:

                    STEP THREE

                    from network import LTE
                    lte = LTE()

                    Thank you for your reply, but unfortunately the command freezes again.

                    import pycom
                    print(pycom.lte_modem_en_on_boot())
                    

                    was already set to False.

                    C 1 Reply Last reply Reply Quote 0
                    • B Offline
                      bqpd @combaindeft
                      last edited by

                      @combaindeft Thanks a lot for the in-depth step-by-step walkthrough! I will try this tomorrow, when I get my NB-IoT SIM-card back and i will share if it works for me as well.

                      I really appreciate your help, thanks again!

                      1 Reply Last reply Reply Quote 1
                      • B Offline
                        bqpd @ktleh
                        last edited by bqpd

                        @ktleh @wtrocel @Paul-Thornton @combaindeft
                        It works now for me as well!

                        So following the steps @combaindeft suggested did indeed result in a successful upgrade of the firmware.
                        One slight change: if using the upgdiff-file the updater.elf is not needed as @Paul-Thornton said, so for me (using an SD card)

                        sqnsupgrade.run('/sd/upgdiff_33080-to-40343.dup',  debug=True)
                        

                        worked perfectly fine.
                        (Update paused at 96% for about 15 seconds as described in the guide at https://docs.pycom.io/tutorials/lte/firmware.html - whole upgrade took about 5-7 minutes)

                        So the whole process was:

                        >>> from network import LTE
                        >>> lte = LTE()
                        >>> import pycom
                        >>> print(pycom.lte_modem_en_on_boot())
                        False
                        >>> lte.reset()
                        >>> lte.disconnect()
                        >>> lte.dettach()
                        >>>
                        >>> lte.send_at_cmd('AT')
                        '\r\nOK\r\n'
                        >>> lte.send_at_cmd('ATI')
                        '\r\nSEQUANS Communications\r\nVZM20Q\r\n'
                        >>> lte.send_at_cmd('ATZ')
                        '\r\nOK\r\n'
                        >>> lte.reset()
                        

                        Hard Reset

                        >>> from machine import SD
                        >>> sd = SD()
                        >>> os.mount(sd, '/sd')
                        >>> os.listdir('/sd')
                        ['NB1-40343.dup', 'updater.elf', 'upgdiff_33080-to-40343.dup', 'upgdiff_38729-to-40343.dup']
                        >>> import sqnsupgrade
                        >>> sqnsupgrade.run('/sd/upgdiff_33080-to-40343.dup', debug=True)
                        

                        This first upgrade took about 3-5 minutes -> it resulted in:

                        SYSTEM VERSION
                        ==============
                          FIRMWARE VERSION
                            Bootloader0  : 5.1.1.0 [33080]
                            Bootloader1  : 6.0.0.0 [40343]
                            Bootloader2* : 5.1.1.0 [38638]
                            NV Info      : 1.1,0,0
                            Software     : 6.0.0.0 [40343] by robot-soft at 2018-11-07 13:57:00
                            UE           : 6.0.0.0
                          COMPONENTS
                            ZSP0         : 1.0.99-3171
                            ZSP1         : 1.0.98-3170
                        

                        I then did the full update without using the differential file:

                        >>> time.sleep(5)
                        >>> sqnsupgrade.run('/sd/NB1-40343.dup', debug=True)
                        >>> sqnsupgrade.info()
                        <<< Welcome to the SQN3330 firmware updater [1.2.1] >>>
                        >>> FiPy with firmware version 1.18.1.r7
                        Your modem is in application mode. Here is the current version:
                        UE6.0.0.0
                        LR6.0.0.0-40343
                        

                        Thousand thanks to @combaindeft again for the great hint with the LTE.disconnect/reset/dettach
                        This hint should be added to the renewed version of the upgrade guide.

                        C John BairdJ G 3 Replies Last reply Reply Quote 1
                        • C Offline
                          combaindeft @florianrdt
                          last edited by combaindeft

                          @florianrdt said in Unable to update GPy modem firmware:

                          from network import LTE
                          lte = LTE()

                          hmm, if you can't do that ... then I think there is an issue with our board / modem ...

                          What is our "main board?" ... a PySense, PyTrack or PyScan? ... you are using with your GPy?

                          And ...

                          • did you update the firmware on the "main board"?
                          • did you update the firmware on the GPy?

                          As it's most recommended that you

                          • 1st - update the firmware on the "main board" to the latest
                          • 2nd - update the firmware on the "Logic board" .. GPy in your case ... to the latest stable version.
                          1 Reply Last reply Reply Quote 0
                          • C Offline
                            combaindeft @bqpd
                            last edited by

                            @bqpd

                            You are welcomed :-)

                            1 Reply Last reply Reply Quote 0
                            • R Offline
                              Redferne
                              last edited by

                              Was given a FiPY which had failed a modem upgrade. I have now tried almost every trick in the book and cannot get any life signs from the modem:

                              
                              >>> import pycom
                              >>> print(pycom.lte_modem_en_on_boot())
                              False
                              
                              >>> os.uname()
                              (sysname='FiPy', nodename='FiPy', release='1.18.1.r1', version='v1.8.6-849-b0520f1 on 2018-08-29', machine='FiPy with ESP32', lorawan='1.0.2', sigfox='1.0.1')
                              
                              >>> sqnsupgrade.run('/sd/CATM1-39529.dup', '/sd/updater.elf', debug=True)
                              File /sd/updater.elf has size 429340
                              File /sd/CATM1-39529.dup has size 6059510
                              Modem state: None
                              Resume: False Retry: False
                              <<< Welcome to the SQN3330 firmware updater >>>
                              mirror? False  recover? False  resume? False  direct? False  atneg_only? False bootrom? True
                              Initial prepartion complete...
                              Loading built-in recovery bootrom
                              Attempting AT wakeup...
                              b''
                              count=1
                              b''
                              count=2
                              b''
                              count=3
                              b''
                              count=4
                              b''
                              count=5
                              b''
                              count=6
                              b''
                              count=7
                              b''
                              count=8
                              b''
                              count=9
                              b''
                              count=10
                              b''
                              Unable to upgrade bootrom.
                              

                              It is not possible to create a LTE() instance, the board simply hangs. Any ideas?

                              C 1 Reply Last reply Reply Quote 0
                              • C Offline
                                combaindeft @Redferne
                                last edited by combaindeft

                                @redferne

                                A) Try the: Boot modes and safe boot
                                FiPy Pin Layout

                                Hook it up to Board (PyTrack/PySense/Expansion/PyScan...) ... and shorten 3V3 + P12 with a wire for 7-9 sec ... and let go

                                B) Use the "upgdiff_33080-to*.dup" ... for the LTE-NB1 it is, and resp use the LTE-CATM1 version in the folder ...

                                sqnsupgrade.run('/sd/upgdiff_33080-to-40343.dup',  debug=True)
                                

                                C) I haven't done this myself, but if I had the issue you have, I'd try to connect to the LTE-Modem by creating my own UART instance ...

                                https://docs.pycom.io/firmwareapi/pycom/machine/uart.html

                                Use the info from: https://github.com/pycom/pycom-micropython-sigfox/tree/master/esp32/lte

                                To figure out how to conf the UART instance ...

                                and lastly figure out how to send it the following AT_Command:

                                "AT!=\"setlpm airplane=1 enable=1\""
                                

                                This will shut the modem down ... and after a Hard-reset (unplug everything, battery and usb-cable!) ... try to:

                                from network import LTE
                                lte = LTE()
                                

                                and then run the firmware process ...

                                1 Reply Last reply Reply Quote 0
                                • John BairdJ Offline
                                  John Baird @bqpd
                                  last edited by

                                  @bqpd Thank you!! I've managed to un-brick a FiPy and a GPy by following these instructions. Very much appreciated!

                                  1 Reply Last reply Reply Quote 2
                                  • G Offline
                                    grpatt @bqpd
                                    last edited by

                                    @bqpd Thank you from the future.

                                    1 Reply Last reply Reply Quote 0

                                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                    With your input, this post could be even better 💗

                                    Register Login
                                    • 1
                                    • 2
                                    • 2 / 2
                                    • First post
                                      Last post

                                    Pycom on Twitter

                                    Pycom