New firmware release v1.16.0.b1 (LoRaWAN 1.0.2 multi-region support)

  • Hello,

    We have just released firmware v1.16.0.b1. The main highlight is that we have updated the LoRaWAN stack to version 1.0.2 and now we can support 4 regions with the same firmware, and theres no need to switch between the 868 and the 915 firmware anymore.
    The regions supported are EU868, US915, AU915, and AS923.

    IMPORTANT: The LoRa constructor now receives a new argument used to select the region. You need to modify your code to specify this new argument in order to select the appropriate frequency. This is also required for raw-LoRa. Please check the API here:

    This is the complete change log:

    • esp32: Update LoRaWAN to 1.0.2. Add multi-region support.
    • esp32/mods/modwlan.c: Only get the list of APs if there's any present.
    • esp32: Support LoRa country, heartbeat_on_boot, wifi_settings
    • esp32: Protect against socket.close() crash when socket creation fails.
    • esp32: Implement hard reset with safe boot using CTRL-F. Useful for Pymakr uploads.
    • esp32: End the callback threads if an unhandled exception is raised.


  • The command line updater failed (Debian) with this error: "Something failed trying to connect to the device." After this step: "Connecting to the device to get it's information, please wait."

    Also saw this error message:
    "Exception: Failed to connect to ESP32: Timed out waiting for packet header, on line 351"

    With the gui version everything worked fine. I had to install python-qt4 to get the gui version working.

    Edit: same issue as below

  • @xykon I tried the newer upgrade version, it fails also this one, but happens some steps after.
    Now it lets select the LoRa region (868 MHz for me), than shows messages for searching / downloading firmware and than stops after

    Please be patient while the firmware is │
    │ being uploaded to the board. │
    │ │
    │ (this can take up to a minute). │
    ..." Exception: Failed to connect to ESP32: Timed out waiting for packet header, on line 351 ..."

    I find also difficult to know when is the right moment to push the reset button, I arrive to arrive to go on 1 - 2 times every 10 .
    Maybe an intermediate screen, after port and speed check could be useful, asking to push reset button could be useful.

    With the other m procedure, using bin/, is easier to do, but maybe a little bit intimidating for new users.

    note: I did all the tries with "sudo" so no write permissions problems.

  • @xykon I will wait as necessary but am frustrated in my attempt to get this operational in US915 bands as I live in Canada and cannot legitimately use 868.1

  • administrators

    @tombee I think I know what the problem is. Are you OK to wait until tomorrow as you said the GUI version is working?

  • @xykon Windows Defender on Win10, AVG on WIn7.
    I disabled AVG and tried again with different error
    Invalid head of packet <'\xe4'>, on line 351.
    PS: Since I don't have a reputation yet I must wait 600 seconds between posts :-(

  • administrators

    @tombee Do you have any anti-virus or security software installed?

  • @xykon It is the same USB connector (com13) on the same Win7 pc. I can run the GUi update and it completes successfully. I can then connect with TeraTerm and run REPL
    But it won't run the CLI version

    I am using the pysense board. Don't have the expansion board to try. So I didn't use any jumper wire when using the GUI

  • @tombee Here's the command I used with no issues on a Win10 machine..
    pycom-fwtool-cli -p com7 flash -t LoPy4-1.16.0.b1_Steve_mod.tar.gz
    Sounds like the program is not even seeing the device from your error message. Verify that it is actually going into download mode. I didn't set the region in the download command.

  • administrators

    @marcobenini I have uploaded a new version that should fix this. Please try downloading again.

    I have made another small correction after uploading this release without increasing the version again, so if you've downloaded the new version earlier please try downloading it again.

    If you still have issues with this version please let me know.

  • administrators

    @tombee From the output it looks like you are using an Expansion Board 2.0

    Did you install the jumper wire the same way you do when using the GUI firmware update tool?

  • @ssmith I pushed the reset button prior to each attempt and the LoPy flashed green.
    I was able to install using the GUI version but seem stuck at getting the US915 region setup when using the command line version. I am using a Windows 7 64bit computer where I was able to find the Pycom Firmware Update directory. It doesn;t show up in my Windows 10 pc directories.

  • @tombee Press the reset button, Make sure all other programs that use the COM port are not connect, verify the the device is actually going into programming mode by opening a COM port and seeing the waiting for download message.

  • @rskoniec I used C:\Program Files\Pycom\Pycom Firmware Update\pycom-fwtool-cli.exe --verbose -p com13 lpwan --region "US915"
    but after a Connecting ........................................____ shows for about 15 seconds it ends with
    Exception: Failed to connect to ESP32: Timed out waiting for packet header, on line 351

  • @rskoniec Thanks
    It shows up on my Windows 7 computer in the Program Files(x86)
    but NOT in my Windows 10 computer! Any ideas?

  • @tombee It should be under C:\Program Files (x86)\Pycom\Pycom Firmware Update


  • In Linux the firmware upgrade for LoPy using the command line procedure "./update" (pycom_firmware_update_1.10.1.b2.tar.gz) fails.

    Error shown
    "... usage: [-h] [-v] [-p PORT] [-s SPEED] [-c] [-x]
    ... error: argument command: invalid choice: '4190208' (choose from 'list', 'chip_id', 'wmac', 'smac', 'sigfox', 'exit', 'flash', 'write', 'cb', 'nvs', 'ota', 'lpwan', 'erase_fs', 'erase_all')

    I tried downloading the firmware file for the LoPy (file LoPy-1.16.0.b1.tar.gz)
    and use, as in downgrade firmware thread, the command
    python bin/ -t FIRMWARE_FILE_NAME.tar.gz -p SERIAL_PORT -s 921600 flash

    It doesn't work since in the new bin/ the command arguments were split in groups, while before where all put together.
    So "flash" has to before "-t FIRMWARE_FILE_NAME.tar.gz".

    So the command has to be:
    python bin/ -p SERIAL_PORT -s 921600 flash -t FIRMWARE_FILE_NAME.tar.gz

    note: -s 921600 can be omitted since it is the default value
    LoRa region Europe is default value.

  • @jcaron Where do I download the command line tool pycom-fwtool-cli ?
    I am using the Windows 10 environment with Atom and pymakr addon and cannot find it under Program files (x86) or elsewhere. My objective is to setup LoRa as US915
    I have flashed the the v1.16.0.b1 successfully using GUI and notice that with os.uname() it still shows lorawan='1.0.0'
    However, I can only get a LoPy OTAA connection at 868.1 despite using the optional region=LoRa.US915 in or

  • @this-wiederkehr
    I had troubles to flash custom firmware using latest version of CLI tool and found out that for me it only works with -t parameter after flash:

    pycom-fwtool-cli -v -p comXY -s 921600 flash -t custom_firmware.tar.gz

  • @jcaron awesome, thanks.

Log in to reply

Pycom on Twitter