Skip to content
This repository has been archived by the owner on Sep 16, 2024. It is now read-only.

Releases: pycom/pycom-micropython-sigfox

Firmware release candidate v1.20.2.rc9

11 Jun 08:30
1a257d8
Compare
Choose a tag to compare
Pre-release
  • pybytes 1.5.0
  • bugfixes

Firmware release candidate v1.20.2.rc7

11 Jun 08:30
6d01270
Compare
Choose a tag to compare
Pre-release
  • LTE: add PSM Power Saving Mode

Firmware release candidate v1.20.2.rc6

28 Feb 17:59
01f49f7
Compare
Choose a tag to compare
Pre-release
  • IDF recompiled with v98 compiler
  • Ctrl-D works if pybytes is disabled (pycom.pybytes_on_boot(False))
  • update.py supports additional pybytes options
  • Sigfox: finalizing certification RCZ1, 2, 4
  • internal bugfixes

Firmware release candidate v1.20.2.rc3

05 Feb 10:55
Compare
Choose a tag to compare
Pre-release

Fix pybytes autostart

Firmware release candidate v1.20.2.rc2

04 Feb 23:57
Compare
Choose a tag to compare
Pre-release
  • BLE: Allow static passwords, remove bonded when pin changes

  • mods/pybadc.c: Fix the argument handling of bits=x for adc.init()

Before, the only accepted argument & value for adc.init() was bits=12, and even that was
discarded. With that change, the function meets the documentation and works as expected.

  • mods/pyblte.c: Fix the lenght field for AT commands

At three places the length field was not set when AT commands werde
issued, causing lte.attach() with the band=xx option to fail.
Also, affected: lte_get_modem_version()

  • Support Sigfox registration for Pybytes

  • PYFW-390: Update .gitignore to allow esp32/lib libraries to be updated

  • MDNS advertisement works

  • Adding text to advertisement works

  • Query works

  • Free up internal query results

  • Change host_name to hostname

  • Rename text to txt

  • Adding libmdns.a to esp32/lib

  • Adding scripts for PyJTAG and short Readme

  • update sigfox libraries

  • Replace xQueueSendFromISR call with xQueueSend when called from BLE event

Use the callback queue to notify the LoRa Timer Thread
Do context switch in TimerCallback only if needed

  • Replacing "switch-case" with "if-else if" in Region.c to avoid generated Assembly instructions which are reading the Flash from IRAM functions causing bad00bad issue

  • BLE characteristic update messages are lost if they sent too frequently

In modbt.c it can happen that received packets are lost, because the user registered callback is not called fast enough (via gatts_char_callback_handler()), which means it can happen that the value of a characteristic is updated 2 times in a row (via gatts_event_handler()) without giving the possibility to the callback to run and fetch the new value. In this specific example the first callback will show the 2nd change, and the 2nd callback will show that actually nothing happened. The 1st change gets lost.
The fix of this issue breaks backward compatibility, because the prototype of the user registered Python callback is changed:
OLD: callback(characteristic)
NEW: callback(characteristic, (event, value)) → (event, value) is a tuple, where data is bytearray containing the value of the request if the “event” is WRITE, otherwise “value” is “None”. “event” shows the correct event any time.

  • PYFW-394: mod_ssl_setup_socket() allocates memory while GIL is not locked

  • PYFW-401: Mutex of LFS can be locked in wlan_read_file or mod_ssl_read_file

  • PYFW-402: wlan_do_connect() allocates memory while GIL is not locked

PYFW-403: mod_network_register_nic() using MicroPython functions outside of GIL in wlan_setup_ap()

  • PYFW-404: bt_connect_helper() uses MicroPython functions outside of GIL

  • PYFW-405: lte_send_at_cmd() uses MicroPython functions outside of GIL

  • refactor lte_add_band() out of lte_attach()

  • add bands=() parameter to lte.attach()

this way the user can select a set of bands they want to use when attaching

  • PYFW-391: Add changes needed for esp-idf v3.3.1

  • Updating README.md

  • Update sdkconfig.h and libraries when secure boot is ON, but CONFIG_SECURE_BOOT_ENABLED is removed from sdkconfig.h

  • Add checker which forbids compilation when CONFIG_SECURE_BOOT_ENABLED is defined but SECURE=on is not

  • Add pybytes_on_boot functionality (#87)

  • Update pycom_version.h

Update version to 1.20.2.rc2 for public release

  • Update Pybytes to version 1.3.1

Co-authored-by: oligauc oliver@pycom.io
Co-authored-by: Islam Wahdan islam@pycom.io
Co-authored-by: robert-hh robert@hammelrath.com
Co-authored-by: Géza Husi geza@pycom.io
Co-authored-by: Jirka Krepl jkrepl@pycom.io
Co-authored-by: doniks peter@pycom.io

Firmware Release v1.20.1.r2

02 Jan 22:54
Compare
Choose a tag to compare
  • Update Pybytes to version 1.3.0

Firmware Release v1.20.1.r1

08 Oct 14:01
Compare
Choose a tag to compare

Bug Fixes

Improvements

  • Restore previous wifi_on_boot behaviour.
  • Fix Pybytes OTA update failure, Add option to deinit active wifi connection when disabling wifi_on_boot
  • Update to Secure BLE

New Firmware Release 1.20.1

06 Oct 23:04
Compare
Choose a tag to compare

Release Notes:

  • SmartConfig (Smart provisioning of Wifi Credentials)
    • To disable Smart Provisioning use pybytes.smart_config(False)
  • IDF V3.2
  • Micropython V1.11
  • Secure BLE (Server side )
  • Pybytes v1.1.2
  • LittleFS v2.0
  • Light sleep support
  • RTC memory support
  • Wifi promiscuous mode
  • CoAp module
  • Esp32 touchpad functionality exposed to micropy
  • uasyncio module
  • Uzlib module
  • Add support for LoRa regions CN470 and IN865
  • Added support for LoRa Class C multicast
  • Increase App partition Size For FIPy, GPy and LoPy4 to 1980K
  • Updated Build ENV for detecting Flash Size
  • Update Make Environment for IDF version check and checkout
  • Support OTA from older v1.18 Firmwares through intermediate firmware v1.18.3
  • Updates / Bug fixes to Pycom module
  • Updates / bug fixes to UART module
  • Updates to machrmt module
  • Updates / bug fixes to machrtc module
  • Updates / Bug fixes to modlora
  • Updates / Bug Fixes to Bluetooth module
  • Updates / Bug fixes to WLAN module
  • Updates / Bug fixes to LTE module
  • Updates / Bug fixes to machine module
  • Updates / bug fixing for OS module
  • Updates / Bug fixing for modusocket module
  • General fixes and improvements to the LoRaWAN stack
  • General Makefile Updates
  • General Bug Fixing

Here is the summary of changes which can cause compatibility issues updating from 1.18 FW along with new APIs added

machrmt:

  • "pulses_send()" API can be configured as non-blocking
    "wait_tx_done" parameter is added

machrtc:

  • ntp_sync() API has new parameter: "backup_server" -> not mandatory
    memory() API is added

machuart:

  • RX Buffer length can be maximum of 512 byte on all boards
    • Previously it was 4096 bytes on FIPY and GPY
  • New parameter of UART constructor:
    • rx_buffer_size
    • New Exception is dropped if "rx_buffer_size" is bigger than 512 bytes

modlora:

  • New API: LoRa.reset() to reset sx1272 chip on LoPy1 Boards

modbt:

  • Bluetooth's constructor has new parameter: "modem_sleep”, “mtu”
    • Exception is dropped if sleep failed
  • New API of characteristic class: read_descriptor()
  • Bluetooth.deinit() closes all connections
  • Bluetooth.connect() from now drops TimeoutError and not OSError when timeout happens
  • New parameter of Bluetooth.connect()
    • Has a "timeout" parameter defining timeout for establishing connection
    • Previously it was set to 5ms
  • New API: Bluetooth.set_advertisement_params()
  • New API: Bluetooth.set_advertisement_raw()
  • New API: Bluetooth.modem_sleep()
  • New API: Bluetooth.gatts_mtu() to get mtu of the client connection to Pycom device
  • New API: Bluetooth.tx_power()

modcoap:

New module

modled:

  • set_color() has new parameter: "wait_tx"
    • Can be used to make underlying RMT operation block

modlte:

  • lte_iccid() API drops new OSError exception if SIM is not detected
  • send_at_cmd() API's "delay" parameter is removed
  • send_at_cmd() raises new TypeError exception if "cmd" is not passed
  • New Callback registering API for registering a callback function to be called when LTE coverage is Lost (Note: Depending on the Sequans modem FW it might be supported or not , if not the callback will not be triggered - an update on Sequans FW supporting this Feature will be announced later )

modmachine:

  • deepsleep_wakeup() API is renamed to sleep_wakeup
  • sleep() API is implemented for light sleep (it was an empty function)

modpycom:

  • New API: bootmgr()
  • New API: get_free_heap()
  • New APIs: related to Pybytes
  • New APIs for setting/getting stored Wifi Credentials for STA and AP mode
  • heartbeat() API drops new OSError excpetion if RGB_LED is disabled (can be disabled during build)
  • rgb_led() API drops new OSError excpetion if RGB_LED is disabled (can be disabled during build)
  • nvs_get() API returns user defined "NoExistValue" if the object does not exist in NVS. Otherwise it raises a ValueError!.
    * To maintain previous behaviour, use pycom.nvs_get('', None)

moduos:

  • New file system type is added: Little FS
  • Virtual File System concept is used
    • The /flash can be LittleFS or FatFS, the SD Card can be FatFS
    • Files System related functions are replaced, they are used via VFS
  • mkfs() API is removed and is replaced by fsformat()

moduqueue:

  • queue_put() releases the GIL during operation -> REPL will work
  • queue_get() releases the GIL during operation -> REPL will work

modusocket:

  • readall() API is removed
    • read() without parameters does the same
  • connect() API can be set as Non-BLocking
    • Only if timeout is defined: new OSError exception is dropped if settimeout operation of lwip fails
    • Only if timeout is defined: new TimeoutError exception is dropped if connection times out
    • Only if timeout is defined: new OsError exception may dropped if SSL is configured and underlying ssl operation fails
  • recv() API drops TimeoutError exception if underlying lwip returns with SSL_TIMEOUT
    • Before it only dropped this exception if MP_EAGAIN is returned
  • recvfrom() API drops TimeoutError exception if underlying lwip returns with SSL_TIMEOUT
    • Before it only dropped this exception if MP_EAGAIN is returned
  • New API: sendto()

modutime:

  • Parameters of ticks_diff() API are swapped
    • Was: start_in, end_in
    • New: end_in, start_in

modwlan:

  • New API: bandwidth()
  • New API: hostname()
  • New API: ap_sta_list()
  • New API: max_tx_power()
  • New API: country()
  • New API: joined_ap_info()
  • New API: wifi_protocol()
  • New API: send_raw()
  • New API: promiscuous()
  • New API: callback()
  • New API: events()
  • New API: smartConfig()
  • New API: Connected_ap_pwd
  • New API: wifi_packet()
  • New API: ctrl_pkt_filter()
  • WLAN's contructor/init():
    • New optional parameter: bandwidth
    • New optional parameter: max_tx_pwr
    • New optional parameter: country -> if not given as tuple TypeError is dropped
  • API scan() has new optional parameters:
    • ssid, bssid, channel, show_hidden, type, scantime -> drops exception if given incorrectly
  • API mac() may drop new exceptions depends on number of arguments and it returns Mac of both AP and STA
  • New Triggers for Wlan Callback


    Note: This new Release has support for LittleFS filesystem if you updated from 1.18 FW your Filesystem is set to FatFS and if you choose to switch to LittleFS this will cause the filesystem to be formatted .
    Note: There is an issue regarding BLE connection from Pycom Device (client) to a mobile phone (tested on Iphone) acting as Server, where connection always times out - connection from Pycom Device to another does not have that issue - will keep you updated with the fix for that problem.

Special Firmware release v1.18.3

15 Sep 18:47
Compare
Choose a tag to compare

Between version 1.18.2 and 1.20 the partition table is changed, the OTA_0 partition, among several others, is relocated because the size of the firmware has been increased due to the extended functionality of the 1.20 version. Due to this reason when updating from version 1.18.2 to 1.20 via OTA, an update to an intermediate version, numbered as 1.18.3, must be performed. The intermediate version makes sure that when OTA update to 1.20 is requested, the partition table contains correct entries and the new image will be flashed to the proper location.

The intermediate version, 1.18.3, contains the following EXTRA steps when OTA update is requested:

  • Updates bootloader
  • Moves the content of the "ota data" partition to its new location
  • Updates the partition table

Please see : https://docs.pycom.io/tutorials/all/ota/ before using this Firmware

Firmware release candidate v1.20.0.rc13

05 Feb 10:44
Compare
Choose a tag to compare
Pre-release

Improvments

  • LoRaWan refactoring and bug Fixing
  • Updated Pybytes lib
  • Updated sqnsupgrade
  • Update Make Environment for IDF version check and checkout
  • modpycom: Added API to get Internal and External Free RAM size
  • PYFW-356 support for sending bytes in lte.send_at_cmd()

Bug Fix

  • Fix PYFW-359: When building SW with "BTYPE=debug" littleFS assertion fails with crash
  • PYFW-348 updated rx buff size max size exception message
  • PYFW-354: LittleFS causing random crash
  • PYFW-353: Socket timeout in recv operation is not working in case of ssl socket
  • PYFW-356 Update AT command apending with only '\r'