New LTE Firmware release v1.18.1.r3 & CAT-M1 firmware & modem updater
-
Hello everyone,
A new stable firmware is now available for the LTE modules (GPy, G01, FiPy). This update has a number of changes in the LTE stack and a new Sequans firmware updater that allows using "differential" upgrade packages that are significantly smaller than the full upgrade packages (see more details below).
LTE class changes:
-
The module should no longer freeze when instantiating the LTE class multiple times or after a soft reset
-
New commands
pppsuspend()andpppresume()allow pausing & resuming the LTE ppp connection to send AT commands (These commands are not available when using the firmware installed during production). -
You can now specify the initial APN during
attach():lte.attach(apn="nb.inetd.gdsp") -
dettach()has an option parameterlte.dettach(reset=True)that automatically resets the modem before switching off the radio. This may be helpful if the modem freezes after callinglte.dettach() -
deinit()has two new parameters,lte.deinit(dettach=False)allows the modem to go into power saving mode (PSM, eDRX) without dettaching from the network. Edit: Additionally,deinit()also acceptslte.deinit(reset=True)if you calldeinit()without callingdettach()first. -
send_at_cmd()has an optional parameterlte.send_at_cmd('AT', delay=1000). The delay in milliseconds is the time the esp32 waits between sending the request to the modem and reading the response.
sqnsupgrade class changes:
-
New
info()command to check the modem state. (this command only works directly on the module). If the modem is in application mode, the current firmware version is displayed. This behaviour replaces theversion()command which now is only available inuart()mode. Optional parameters aresqnsupgrade.info(verbose=False, debug=False)
This command should definitively detect the modem after a power cycle as long as theboot.pyandmain.pyare empty. -
New optional command line option
load_ffffor thesqnsupgrade.run()command. This allows loading the new differential firmware upgrade packages into a special area of the modem. The upgrade is then applied automatically on the modem and the updater just needs to wait for the upgrade to finish. This option is enabled by default for all upgrade files that are 4MB or less in size.
Sequans firmware packages:
New firmware packages are now available at: http://software.pycom.io/downloads/sequans2.html
Please note that existing packages have been updated to include additional files so even if you have downloaded a package previously please download it again.
New CAT-M1 firmware 39529:
New CAT-M1 firmware package 39529 is now available for download. The new firmware contains stability improvements and general bug fixes.
To upgrade from the previous CAT-M1 firmware 38638 you can simply upload the upgdiff_38638-to-39529.dup file (452K) from the CATM1-39529.zip archive into the
/flashdirectory on your module and run:import sqnsupgrade sqnsupgrade.run('upgdiff_38638-to-39529.dup')If you are updating the Sequans firmware on your module for the first time, please use instead the file
upgdiff_33080-to-39529.dup(1.2M) from the same archive.Similar upgrade packages are available for the NB-IoT firmwares. We are currently waiting for Sequans to provide a new NB-IoT with working DNS. We're hoping the get the new version early next week.
P.S. The sources for this release are currently available here: https://github.com/pycom/pycom-micropython-sigfox/tree/lte-xykon
-
-
@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.zipI checked latest NB-IoT firmware package and it does not contain any differential upgrade files:
https://software.pycom.io/downloads/NB1-38729.zip -
@danielm Sorry the correct packages should now be on the software server ready for download.
-
@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?
-
@Xykon Just for sure, can I safely use SD card as source for differential update?
sqnsupgrade.run('/sd/upgdiff_38638-to-39529.dup') -
@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.
-
@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.
-
@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?
-
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?
-
Never mind. It was hidden formatting in my copy/paste. Typed out, it worked just fine.
-
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.
-
@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
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 -
@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 rundel sqnsupgradeto 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.
-
@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() -
@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()
-
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 failedI 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?
-
@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
-
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.
-
@xykon sorry I missed the r4 post. I find this forum hard to follow. Can't put my finger on it, but the reverse order of posts is one thing non-intuitive for me.
I'll try r4 in the AM. Thanks.
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