New firmware release 1.10.0.b1 (External 4MByte RAM support)

  • UPDATE: Some users are experiencing Guru meditation errors on the 4MByte of RAM devices with this update. An intermediate solution for this while we release a new version of the updater is to patch the current one.

    Please follow these instructions:

    1. Find the location where the Pycom Firmware Update application is installed. Then enter the directory (on Mac OS you need to right click and select "Show Package Contents").

    2. Within the files of the app, locate the one named

    3. Inside that file find the following 3 lines which appear twice:

       args.flash_size = 'detect'
       args.flash_mode = 'dio'
       args.flash_freq = '80m'
    4. Change the lines to read:

       args.flash_size = '4MB'
       args.flash_mode = 'dio'
       args.flash_freq = '40m'

    A new firmware release is out. The version is v1.10.0.b1. This release brings full external RAM support for the newer modules. With this the MicroPython heap is increased to 3 MBytes (1 Mbyte is reserved for internal use).

    The Github sources have been updated as well with the changes from this release.

    Here's the full change log:

    • esp32: Add AWS IoT SDK as frozen modules.
    • esp32: Add function to get the remaining deep sleep time after wake-up.
    • esp32: Add support for frozen
    • esp32: Update IDF libraries to properly support devices with and without external RAM.
    • esp32: Add .voltage() method and calibration functions to the ADC class.

    As usual this new firmware can be applied using our firmware update tool:


  • @seb Thanks, I found them and was able to start playing with the new calls.

  • @eric24 Hi the method has been added to the docs

  • @eric24 Sorry this feature hasn't been documented yet. I will get back to you as soon as it is documented.

  • @seb Sorry, but I'm not seeing where "esp32: Add function to get the remaining deep sleep time after wake-up" is documented. Can you point me to the page in the docs?

  • @ksid The API and tutorial docs have been updated to add the new methods as well as the procedure for calibrating the ADC

  • Where is this documented? "esp32: Add function to get the remaining deep sleep time after wake-up."

  • @xykon
    thanks - this worked

  • administrators

    @ksid We're currently doing some additional testing on this... we should be able to put this into the documentation in the next few days.

  • @daniel Do you know when we can expect to see the updated docs on how to use ADC.voltage() and .calibration()?

  • administrators

    @ssmith I'm actually looking into this at the moment.

  • I'd like to suggest that PyCom develop a Beta program for firmware releases. Developers could test out the code and supply feedback before it is pushed to the update server. With the current scheme, anyone who updates the firmware with the update tool gets the latest firmware without a choice. Whatever is pushed by the update tool should be a fully working and tested version.

  • administrators

    @pauls said in New firmware release 1.10.0.b1 (External 4MByte RAM support):

    Where can I get older firmware to revert to a working version?

    I posted links to the previous firmware in this thread, along with a link to the downgrade instructions.

  • @marmarti said in New firmware release 1.10.0.b1 (External 4MByte RAM support):
    I'm also not able to send any sigfox messages with this version. Where can I get older firmware to revert to a working version?

  • @smeedy I think you meant P2 here or G23 on the breakout. This is exactly what I needed and solved my problem. As a note to others after erasing the flash I had to remove and re-apply power before running the UI flasher.

  • I found an issue with this version on sipy. I was simply not able to send a message to sigfox.

  • Last remark. Since 1.10.0.b1 a fragment on the UART was preventing the REPL input as it seems when using the serial connection. I commented the following part:

    # uart = UART(0, 115200)
    # os.dupterm(uart)

    and I was able to use the REPL again on the 1.10.0.b1 firmware

  • @daniel said in New firmware release 1.10.0.b1 (External 4MByte RAM support):

    @affoltep can you be more specific? The new firmware has the same amount of MicroPython heap available as before (67K). What is the error that you are seeing in your app?


    I was wrong. It doesn't seem to be a memory issue, but a deepsleep shield for LoPy issue. As soon I want to use the deepsleep shield an error message occurs. Unfortunately I can not send you the message, because I flashed back to the old version before doing a print.

    But here is the code I used to check:

    import deepsleep
    ds = deepsleep.DeepSleep()
    # get the wake reason and the value of the pins during wake up
    wake_s = ds.get_wake_status()
    if wake_s['wake'] == deepsleep.PIN_WAKE:
        print("Pin wake up")
    elif wake_s['wake'] == deepsleep.TIMER_WAKE:
        print("Timer wake up")
    else:  # deepsleep.POWER_ON_WAKE:
        print("Power ON reset")
    #Initiate deep sleep shield
    ds = deepsleep.DeepSleep()
    ds.disable_pullups(['P17', 'P18'])
    ds.disable_wake_on_raise(['P17', 'P18'])
    ds.go_to_sleep(20)  # go to sleep for 60 seconds

  • Ok. Managed to get the system up and running again by putting P24 low and erasing the flash using the esptool and start clean. I now have the REPL input back on the LoPy.

    So if you haven't already

    pip3 install esptool --port /dev/ttyUSB2 --baud 230400 --chip esp32 erase_flash

    now you can use the UI flasher for 1.10.0.b1

  • @crumble Have you been able to fix this?

    Probably related. I just updated two plain LoPy units to the 1.10.0.b1 and lost the ability to use the REPL for input. Looks like some timings are wrong. I am able to send an occasional ctrl-c if I'm lucky - as it is still running the old, which is odd in it self after the flash.

Log in to reply

Pycom on Twitter