Releases: espressif/ESP8266_RTOS_SDK
Releases · espressif/ESP8266_RTOS_SDK
ESP8266_RTOS_SDK Release v3.4
This is the list of changes since release v3.3.
1. Important Notes
- Removed aws-iot component and related example, if you need to implement aws-iot, please refer to https://github.com/espressif/esp-aws-iot.
- Removed ibm-mqtt component and related example, if you need to implement MQTT, please refer to https://github.com/espressif/esp-mqtt.
- Added support policy for each SDK version.
- Supported WPA3/PMF/802.11kv.
- Updated GCC to version 8.4.0, you can run
./install.sh
in the root directory of RTOS SDK to install GCC and its related components. - For security, with RTOS v3.4, if user sets a password to connect to an AP, then it cannot connect to an open AP with the same SSID.
- Supported SmartConfig V2 and provided example.
2. Changes in Functions and Features:
2.1 App Update
- Added
App description
section in the compiled firmware.
2.2 COAP
- Synced COAP component and example from ESP-IDF.
- Added examples of COAP multicast client and sever.
2.3 Driver
- Supported SPI Flash GD25Q64 QIO mode.
- Added API reference document for I2S.
- Removed
i2s_bbpll_clk_enable
since I2S clock is enabled by default during initialization. - LEDC: Fixed PWM duty setting error.
- Supported float number in PWM.
- Optimized PWM hardware timer enable/disable, to ensure it will not be affected by other hardware drivers.
- Fixed an issue of ADC read.
2.4 ESP Common
- Added
esp-common
component, moved some common functions into it, synced from ESP-IDF.
2.5 ESP Event
- Added
esp-event
component. - Optimized example to use esp-event APIs.
2.6 ESP HTTP Client
- Synced
esp_http_client
component and example from ESP-IDF.
2.7 ESP MQTT
- Synced
esp-mqtt
component and example from ESP-IDF.
2.8 ESP TLS
- Fixed an incorrect definition issue in example.
- Fixed a compiling error with mbedTLS.
- Fixed a
wolfSSL_set_tlsext_host_name
missing error when compiling with wolfSSL.
2.9 FatFS
- Added FatFS.
2.10 Free ModBus
- Added free-modbus.
- modbus protocol supports TCP transmission.
2.11 FreeRTOS
- Added a hardware detection for task stack overflow.
- Optimized interrupt workflow to speed it up.
- Added
errno
for thread safety. - Added a feature to modify task stack depth dynamically.
2.12 Heap
- Added a configuration to enable/disable heap trace. If it is disabled, then malloc/free will be speeded up.
- Add integer overflow checks
2.13 LwIP
- Synced
esp-lwip
component and example from ESP-IDF. - Added a configuration to enable
auto-config
for IPv6 address. - Fixed an issue that system returns OK even if it actually fails to send data when ran out of Wi-Fi TX buffer.
- Increased the default TCP buffer size for sending data from 2880 bytes to 5760 bytes.
- Added an iperf example to test TCP/UDP throughput.
- Optimized the time that DHCP client needs to get an IP address.
- Supported enabling more LwIP debug log in menuconfig.
- Added IPv6 ICMP example.
- Fixed an issue of IPv6 multicast.
2.14 MbedTLS
- Fixed compiling error of unit test.
- Improved calculate speed of bignum.
2.15 mDNS
- Synced mDNS component and example from ESP-IDF.
2.16 System
- Supported print "%" with ets_printf.
- Supported GDB stub in panic.
- Added rtc uninitialized section and data uninitialized section.
- Fixed a deep sleep failure issue.
- Refactored ets timer to save memory.
- Supported link application firmware to the SPI flash's first 8MB space.
- Optimized compilation configuration, user can configure it by
. ./export.sh
. - Added
esp_random
to get hardware random number. - Fixed an issue of calling
esp_restart
. - Changed the default frequency to be 160MHz since CPU starts.
- Added non-mask watchdog to monitor the system in critical section.
- Changed the task priority of
app_main
from 15 to be 1. - Added fast boot mode, the system start-up time is about 20ms in this mode.
- Added a function to get the value of RTC hardware clock.
- Fixed a deep sleep time overflow issue.
- Fixed an issue of calling
ets_printf
when read/write SPI flash. - Updated GCC to version 8.4.0.
- Disabled warning detection by default when compiling with cmake.
- Added a configuration to support 40MHz crystal oscillator.
- Fixed an issue of closing NMI
- Fixed an issue that the system may fail to wake up if set it deep sleep for a very short time (1~6us).
2.17 TCP Transport
- Synced TCP transport component and example from ESP-IDF.
2.18 TCPIP Adapter
- Added
esp_netif_init
andesp_netif_deinit
to sync the same framework with ESP-IDF. - Increased efficiency of getting an IP address by disabling power save function during DHCP.
2.19 Util
- Removed Util component, and move arithmetic codes into mbedtls component and esp8266 component.
2.20 VFS
- Synced VFS component from ESP-IDF to support FatFS.
2.21 Wear Levelling
- Added
wear-levelling
component for FatFS.
2.22 Wi-Fi
- Updated libphy.a to version 1163.0, which saved more memory and optimized Wi-Fi performance.
- Optimized Wi-Fi sleep arithmetic to save more power in modem/light sleep mode.
- Refactor softap sleep arithmetic to increase efficiency of sending data to station.
- Refactored MAC arithmetic of sending data to increase efficiency and save memory.
- Supported WPA3.
- Supported PMF.
- Supported PMF & ESP-NOW coexistence.
- Fixed a connecting fail issue of iPhone in ESP8266 softAP mode.
- Fixed a possible beacon attack issue during beacon auth mode change.
- Fixed a possible system restart issue when Wi-Fi and PWM are used at the same time.
- Fixed some ESP-Now issues.
- Supported getting frequency offset by scanning.
- Supported rssi info and phy mode in
esp_wifi_sta_get_ap_info()
api. - Fixed an issue that softAP may fail to store PMK if system powers down unexpectedly.
- Fixed some Wi-Fi country code issues.
- Supported receiving multicast packets in ESP-NOW.
- Fixed an issue that Wi-Fi mode changed when enters deep sleep.
esp_wifi_scan_start()
returns error, if user calls it during station connecting to an AP.- Fixed an issue that device will send 802.11 ACK even if sta or softap is stopped.
- Fixed an issue that softap checked dis-assoc packet sequence with data sequence.
- Fixed an issue that softap still does 4-way handshake when station tries to connect to it with wrong ssid.
- Refactored Wi-Fi connecting arithmetic to improve its performance if there are many APs with a same SSID but different passwords.
- Fixed an issue that device may receive packets which are forwarded by AP but originally sent by itself.
- Fixed an issue that device will rewrite flash even if sets the same station config.
- Supported 802.11kv, added Wi-Fi roaming example.
- Changed default DTIM in softAP mode from 2 to be 1.
- Added a configuration to set maximum and minimum packet length in sniffer mode.
- Improved the performance of catching packets in the air in sniffer mode.
- Fixed cipher mode error when scanning AP info.
- Optimized SmartConfig efficiency.
- Changed SmartConfig to use
esp_event
to sync status. - For security, with RTOS v3.4, if user sets a password to connect to an AP, then it cannot connect to an open AP with the same SSID.
- Supported SmartConfig V2 and provided example.
- Fixed an issue that Wi-Fi RX buffer may fail to release with some specific router.
- Fixed connecting fail issues with some specific routers.
- Fixed an issue that if scanning more than 5 seconds then it will fail.
- Fixed an issue that if ESP8266 station connects to a router and also enables ESP-Now, its key pn will be updated incorrectly and Wi-Fi data may loss.
- Fixed a possible system crash issue when AMPDU registers were rewrote
- Fixed dump CCMP length error
- Fixed RF state error when scan again in scan callback function
2.23 Wi-Fi Provisioning
- Synced Wi-Fi Provisioning component and example from ESP-IDF.
2.24 WPA Supplicant
- Refactored WPA Supplicant to support WPA3, and keep the same framework with ESP-IDF.
ESP8266_RTOS_SDK Pre-release v3.4-rc
ESP8266_RTOS_SDK Pre-release v3.4-rc
This is the list of changes since release v3.3.
1. Important Notes
- Removed aws-iot component and related example, if you need to implement aws-iot, please refer to https://github.com/espressif/esp-aws-iot.
- Removed ibm-mqtt component and related example, if you need to implement MQTT, please refer to https://github.com/espressif/esp-mqtt.
- Added support policy for each SDK version.
- Supported WPA3/PMF/802.11kv.
- Updated GCC to version 8.4.0, you can run
./install.sh
in the root directory of RTOS SDK to install GCC and its related components. - For security, with RTOS v3.4, if user sets a password to connect to an AP, then it cannot connect to an open AP with the same SSID.
- Supported SmartConfig V2 and provided example.
2. Changes in Functions and Features:
2.1 App Update
- Added
App description
section in the compiled firmware.
2.2 COAP
- Synced COAP component and example from ESP-IDF.
- Added examples of COAP multicast client and sever.
2.3 Driver
- Supported SPI Flash GD25Q64 QIO mode.
- Added API reference document for I2S.
- Removed
i2s_bbpll_clk_enable
since I2S clock is enabled by default during initialization. - LEDC: Fixed PWM duty setting error.
- Supported float number in PWM.
- Optimized PWM hardware timer enable/disable, to ensure it will not be affected by other hardware drivers.
- Fixed an issue of ADC read.
2.4 ESP Common
- Added
esp-common
component, moved some common functions into it, synced from ESP-IDF.
2.5 ESP Event
- Added
esp-event
component. - Optimized example to use esp-event APIs.
2.6 ESP HTTP Client
- Synced
esp_http_client
component and example from ESP-IDF.
2.7 ESP MQTT
- Synced
esp-mqtt
component and example from ESP-IDF.
2.8 ESP TLS
- Fixed an incorrect definition issue in example.
- Fixed a compiling error with mbedTLS.
- Fixed a
wolfSSL_set_tlsext_host_name
missing error when compiling with wolfSSL.
2.9 FatFS
- Added FatFS.
2.10 Free ModBus
- Added free-modbus.
- modbus protocol supports TCP transmission.
2.11 FreeRTOS
- Added a hardware detection for task stack overflow.
- Optimized interrupt workflow to speed it up.
- Added
errno
for thread safety. - Added a feature to modify task stack depth dynamically.
2.12 Heap
- Added a configuration to enable/disable heap trace. If it is disabled, then malloc/free will be speeded up.
- Add integer overflow checks
2.13 LwIP
- Synced
esp-lwip
component and example from ESP-IDF. - Added a configuration to enable
auto-config
for IPv6 address. - Fixed an issue that system returns OK even if it actually fails to send data when ran out of Wi-Fi TX buffer.
- Increased the default TCP buffer size for sending data from 2880 bytes to 5760 bytes.
- Added an iperf example to test TCP/UDP throughput.
- Optimized the time that DHCP client needs to get an IP address.
- Supported enabling more LwIP debug log in menuconfig.
- Added IPv6 ICMP example.
- Fixed an issue of IPv6 multicast.
2.14 MbedTLS
- Fixed compiling error of unit test.
- Improved calculate speed of bignum.
2.15 mDNS
- Synced mDNS component and example from ESP-IDF.
2.16 System
- Supported print "%" with ets_printf.
- Supported GDB stub in panic.
- Added rtc uninitialized section and data uninitialized section.
- Fixed a deep sleep failure issue.
- Refactored ets timer to save memory.
- Supported link application firmware to the SPI flash's first 8MB space.
- Optimized compilation configuration, user can configure it by
. ./export.sh
. - Added
esp_random
to get hardware random number. - Fixed an issue of calling
esp_restart
. - Changed the default frequency to be 160MHz since CPU starts.
- Added non-mask watchdog to monitor the system in critical section.
- Changed the task priority of
app_main
from 15 to be 1. - Added fast boot mode, the system start-up time is about 20ms in this mode.
- Added a function to get the value of RTC hardware clock.
- Fixed a deep sleep time overflow issue.
- Fixed an issue of calling
ets_printf
when read/write SPI flash. - Updated GCC to version 8.4.0.
- Disabled warning detection by default when compiling with cmake.
- Added a configuration to support 40MHz crystal oscillator.
- Fixed an issue of closing NMI
- Fixed an issue that the system may fail to wake up if set it deep sleep for a very short time (1~6us).
2.17 TCP Transport
- Synced TCP transport component and example from ESP-IDF.
2.18 TCPIP Adapter
- Added
esp_netif_init
andesp_netif_deinit
to sync the same framework with ESP-IDF. - Increased efficiency of getting an IP address by disabling power save function during DHCP.
2.19 Util
- Removed Util component, and move arithmetic codes into mbedtls component and esp8266 component.
2.20 VFS
- Synced VFS component from ESP-IDF to support FatFS.
2.21 Wear Levelling
- Added
wear-levelling
component for FatFS.
2.22 Wi-Fi
- Updated libphy.a to version 1163.0, which saved more memory and optimized Wi-Fi performance.
- Optimized Wi-Fi sleep arithmetic to save more power in modem/light sleep mode.
- Refactor softap sleep arithmetic to increase efficiency of sending data to station.
- Refactored MAC arithmetic of sending data to increase efficiency and save memory.
- Supported WPA3.
- Supported PMF.
- Supported PMF & ESP-NOW coexistence.
- Fixed a connecting fail issue of iPhone in ESP8266 softAP mode.
- Fixed a possible beacon attack issue during beacon auth mode change.
- Fixed a possible system restart issue when Wi-Fi and PWM are used at the same time.
- Fixed some ESP-Now issues.
- Supported getting frequency offset by scanning.
- Supported rssi info and phy mode in
esp_wifi_sta_get_ap_info()
api. - Fixed an issue that softAP may fail to store PMK if system powers down unexpectedly.
- Fixed some Wi-Fi country code issues.
- Supported receiving multicast packets in ESP-NOW.
- Fixed an issue that Wi-Fi mode changed when enters deep sleep.
esp_wifi_scan_start()
returns error, if user calls it during station connecting to an AP.- Fixed an issue that device will send 802.11 ACK even if sta or softap is stopped.
- Fixed an issue that softap checked dis-assoc packet sequence with data sequence.
- Fixed an issue that softap still does 4-way handshake when station tries to connect to it with wrong ssid.
- Refactored Wi-Fi connecting arithmetic to improve its performance if there are many APs with a same SSID but different passwords.
- Fixed an issue that device may receive packets which are forwarded by AP but originally sent by itself.
- Fixed an issue that device will rewrite flash even if sets the same station config.
- Supported 802.11kv, added Wi-Fi roaming example.
- Changed default DTIM in softAP mode from 2 to be 1.
- Added a configuration to set maximum and minimum packet length in sniffer mode.
- Improved the performance of catching packets in the air in sniffer mode.
- Fixed cipher mode error when scanning AP info.
- Optimized SmartConfig efficiency.
- Changed SmartConfig to use
esp_event
to sync status. - For security, with RTOS v3.4, if user sets a password to connect to an AP, then it cannot connect to an open AP with the same SSID.
- Supported SmartConfig V2 and provided example.
- Fixed an issue that Wi-Fi RX buffer may fail to release with some specific router.
- Fixed connecting fail issues with some specific routers.
- Fixed an issue that if scanning more than 5 seconds then it will fail.
- Fixed an issue that if ESP8266 station connects to a router and also enables ESP-Now, its key pn will be updated incorrectly and Wi-Fi data may loss.
- Fixed a possible system crash issue when AMPDU registers were rewrote
- Fixed dump CCMP length error
- Fixed RF state error when scan again in scan callback function
2.23 Wi-Fi Provisioning
- Synced Wi-Fi Provisioning component and example from ESP-IDF.
2.24 WPA Supplicant
- Refactored WPA Supplicant to support WPA3, and keep the same framework with ESP-IDF.
ESP8266_RTOS_SDK Release v3.3
This is the list of changes since release v3.3-rc1.
1. Important Notes
- Update libphy.a to version 1159.0, optimize the compatibility of configuration parameters in PHY.
- Fix the inaccuracy sleep time of light sleep.
- Support dynamic resource management in mbedTLS to reduce memory allocation.
2. Changes in Functions and Features:
2.1 Bootloader
- Support enable/disable JTAG specific I/O.
2.2 Driver
- Fix an issue that the UART data may loss when closing UART.
- Fix a UART initialization issue.
- Fix an error when setting GPIO16 to be pull-up or pull-down.
2.3 ESP MQTT
- Fix API declaration issue in esp-mqtt.
2.4 ESP-TLS
- Update pthread components from esp-idf.
2.5 ESP WolfSSL
- Fix cmake compilation issue of wolfSSL.
2.6 LwIP
- Fix an illegal address issue when joining IGMPv6 multicast group.
- Fix a issue of retry when DHCP fails to rebind.
- Add header file
un.h
refer to esp-idf, to solve some compilation issue. - Add a configuration in LwIP to set the interval of TCP re-sending when timeout.
- Support
lwip_shutdown
in LwIP socket multi-thread security framework.
2.7 MbedTLS
- Update mbedTLS components to v2.16.15.
- Fix a compilation error of mbedTLS.
- Support dynamic resource management in mbedTLS to reduce memory allocation.
2.8 System
- Add information of station's IP address to the
SYSTEM_EVENT_AP_STAIPASSIGNED
event. - Fix an issue of inaccuracy system time when wake-up from light sleep by GPIO.
2.9 TCP Transport
- Update
tcp_transport
components from esp-idf.
2.10 TCPIP Adapter
- Add
esp_netif_init
andesp_netif_deinit
to keep the same framework with esp-idf.
2.11 Wi-Fi
- Fix a C++ compilation issue when calling Wi-Fi initialization structure.
- Fix a compilation issue when enable
CONFIG_ESP8266_WIFI_CONNECT_OPEN_ROUTER_WHEN_PWD_IS_SET
in menuconfig. - Fix typos in Wi-Fi configurations.
- Fix a memory leak issue when softAP received illegal packets from station.
- Fix an issue when setting incorrect authmode to softAP.
- Fix an issue that device will connect to router automatically when changing its country code.
- Fix an issue of closing WPA2-Enterprise.
- Fix the inaccuracy sleep time of light sleep.
- Update libphy.a to version 1159.0, optimize the compatibility of configuration parameters in PHY.
- Add
wifi_unregister_wap2_cb
to unregister WPA2 callback. - Support enable/disable Wi-Fi PLCP sending.
ESP8266_RTOS_SDK Release v3.1.2
This is the list of changes since release v3.1.1.
2. Changes in Functions and Features:
2.1 Driver
- Fix the returning error when setting GPIO16 Pull-UP/Pull-Down.
- Fix a UART data loss issue when close UART.
2.2 SPI Flash
- Support SPI flash GD25Q64 QIO mode.
2.3 SSC
- Update SSC library
2.4 Wi-Fi
- Update to phy 1058.14, optimize the compatibility of the configuration parameters.
- Support partial calibration.
- Fix a crash issue when ESP8266 softAP receives an illegal Wi-Fi packet.
3. Tools
- Update idf_monitor.py.
ESP8266_RTOS_SDK Pre-release v3.3-rc1
This is the list of changes since release v3.2.
1. Important Notes
- Refactor Wi-Fi software architecture to support 802.11n better.
- Refactor system low power management to be more power saving.
- Refactor xtensa LX106 panic backtrace.
- Support WPA2 Enterprise.
- IBM-MQTT, AWS-IoT and wolfSSL will be removed from SDK at next version (v3.4) and may be provided as independent projects instead.
2. Changes in Functions and Features:
2.1 APP Update
- Add a feature to read the connected AP information which stored by old SDK when update from old SDK to new SDK through OTA. Users can refer to the example ESP8266_RTOS_SDK/examples/system/ota/native_ota to use this feature.
2.2 Build System
- Update global "kconfig" and related compiling scripts.
- Update python and related packages.
- Update make and cmake compiling scripts.
- Add "make size" and related functions to analyze static resources.
- Remove unused functions and varibles to solve compiler warning.
2.3 Common Component
- Add a feature to check stack for gcc.
2.4 Cross Tools Chain(GCC)
- Fix disassembly instruction decoding error.
2.5 Driver
- Refactor SPI driver.
- Fix PWM period issue.
- Modify UART APIs to be compatibile with ESP-IDF.
- Add HSPI logic layer driver.
- Add LEDC driver.
- Add infrared transceiver driver.
2.6 ESP-Tool
- Remove segment address logs.
2.7 ESP-TLS
- Update pthread components from esp-idf.
2.8 ESP-WolfSSL
- Add ESP-WolfSSL components, but wolfSSL may be an independent project in the future version (v3.4).
2.9 ESP8266
- Remove 40MHZ XTAL option in menuconfig.
- Refactor xtensa LX106 panic backtrace.
- Refactor ccompare hardware timer driver.
2.10 Examples
- Fix a state sync issue in openSSL cilent example.
- Add low power management example in /examples/wifi/power_save.
- Add "hello_world" example.
- Add example common components.
2.11 FreeRTOS
- Enable timer pending functions.
2.12 HTTP Client
- Add default algorithm description in digest authorization.
2.13 HTTPS OTA
- Update SSL to support no certificate.
- Add an option to configure HTTP buffer and OTA buffer size.
2.14 Heap
- Add a function to get DRAM region free size.
- Add an option to enable/disable using IRAM as heap.
2.15 JSON
- Update cjson to v1.7.12.
2.16 LwIP
- Fix an issue that lacking of gcc standard header file declare when enable vfs.
- Fix aton parse wrong parameters.
- Fix ping statistical result error.
- Enable TCP queue ooseq by default to improve communication quality.
- Add TCP TX/RX debug log to make debugging easier.
- Add gratuitous ARP.
- Add an option to configue DHCP discover retransmission interval.
2.17 MQTT
- Add notes that IBM-MQTT is not supported.
2.18 MbedTLS
- Update mbedTLS components to v2.16.2.
- Update openSSL components from esp-idf.
2.19 NewLib
- Fix console uart output port error when enable vfs.
- Fix pthread macro issue when compiling C++ code.
- Fix
abort
function which may cause critical error. - Update nano mode library to support printing float format.
- Support API
clock_gettime
. - Update normal newlib to support printing null string value.
- Add function
_getpid_r
to pass compiling.
2.20 PThread
- Update pthread components from esp-idf.
2.21 SPI Flash
- Fix an issue that GD32Q64 can't enable QIO mode.
2.22 SSL
- Remove wolfSSL and its examples.
- Remove SSL component, keep mbedTLS and openSSL components.
2.23 System
- Refactor system low power management.
- Fix esp_timer crash issue.
- Fix panic reenter when reboot
- Add a macro definition of SDK software version.
2.24 TCPIP Adapter
- Fix an issue that some unsupported functions may return "OK".
2.25 Util
- Refactor SHA algorithm to speed up process.
- Add AES OFB algorithm.
- Add AES XTS algorithm.
- Add ARC4 algorithm.
- Add MD5 algorithm.
2.26 Wi-Fi
- Refactor Wi-Fi low power management.
- Refactor Wi-Fi software architecture to support 802.11n better.
- Fix an issue that device may fail to connect to router.
- Fix an issue that Wi-Fi connection may break in some cases.
- Fix an issue that receiving AMPDU package may cause crash.
- Fix an issue that getting bandwidth parameter will crash when the parameter is NULL.
- Fix an issue that TSF is not accurate in softAP mode.
- Fix calculating TBTT error in light sleep mode.
- Fix Wi-Fi link error when Wi-Fi debug is enabled, and link the "libpp_dbg.a" to iRAM.
- Fix the issue of inconsistent status code in asscociation of different routers.
- Fix an airkiss callback issue, user fails to get the remote IP address in struct
sc_callback_data
whensc_status_link_over
event comes. - Fix clock initialization error when init_data[112] = 1.
- Fix an error when station getting AP authmode.
- Fix an issue that station getting AP information may cause crash when it fails to connect to an AP.
- Fix receiving data frame error in sniffer mode.
- Fix probe request length error.
- Modify description of
wifi_promiscuous_pkt_t
structure. - Modify APIs that enable/disable wakeup from light sleep.
- Modify the max number of scaned AP to 99.
- Support Wi-Fi partial calibration during phy initialization.
- Support WPS and optimize WPS performance.
- Add an option of whether connecting to an open router when password is set.
- Add a feature to set phy calculation option according to the calculation data checking result.
- Add WPA2 Enterprise solution.
- Optimize sniffer mode.
- Optimize Wi-Fi sleep performance when DTIM > 2.
3. Tools
- Update idf_monitor.py.
4. Modified Documents
- Remove components' version description.
- Solve catch error "/dev/ttyUSBx: [Errno 13] Permission denied"(x = 0, 1, 2 ...).
ESP8266_RTOS_SDK Release v3.1.1
This is the list of changes since release v3.1.
1. Important Notes
- Fix an issue that device may fail to connect to router.
2. Changes in Functions and Features:
2.1 APP Update
- Add a feature to copy old RF parameters to the new SDK partition.
2.2 Build System
- Fix linking error when some functions' attribute is "unlikely".
- Fix an issue that combine binary overwrite checking may fail.
- Fix component nested issue
- Fix OTA firmware link address error
2.3 Driver
- Fix PWM jitter issue.
2.4 FreeRTOS
- Fix an issue that platform data may cause exception.
- Optimize FreeRTOS sleep module.
- Optimize FreeRTOS process efficiency.
2.5 Heap
- Fix an issue that sniffer may cause crash when read/write/erase flash.
- Fix an issue that heap functions may block Wi-Fi RX/TX in some cases.
2.6 LwIP
- Fix UDP send fail in some case.
2.8 System
- Fix delete "esp_timer" causing crash.
- Fix "abort" function cause critical error.
- Fix watch dog may be triggered when entering light sleep.
- Optimize the method to get APP information from partition table.
2.9 Wi-Fi
- Fix set phy mode error.
- Fix Wi-Fi software state machine mixed.
- Fix Wi-Fi connection broke in some cases.
- Fix clock error when init_data[112] = 1.
- Fix an issue that station gets AP information may cause system crash when it fails to connect to AP.
- Fix Wi-Fi connection broke issue when signal is weak.
- Fix header file dependence issue.
- Fix Wi-Fi disconnection fails in some case.
3. Tools
- Fix incorrect requirements modules for python.
4. Modified Documents
- Fix document format error for auto script of
read the docs
. - Add gif to introduce FOTA work flow.
ESP8266_RTOS_SDK Release v2.1.1
1. Important Notes
- Fix an issue that device may fail to connect to router.
2. Changes in Functions and Features:
2.1 Driver
- Fix PWM jitter.
2.2 LwIP
- Fix IPv6
maxresp
parameters error may cause system crash. - Fix
pbuf_free
may cause system crash when lack of DRAM memory.
2.3 mbedTLS
- Fix macro
SSL_VERIFY_NONE
redefined issue. - Fix API
ssl_set_bio
redefined issue.
2.4 SmartConfig
- Optimize smartconfig performance by adding length filter.
2.5 SPIFFS
- Fix debug macro and parameters error.
- Fix data no-align load/store error.
2.6 System
- Fix duplicate backups of the same data.
- Fix backup data error in some cases.
- Fix backup data being erased in some cases.
2.7 Wi-Fi
- Fix AMPDU recieving error.
- Fix CCMP encryption incompatible issue with some APs.
- Fix an issue that device fails to connect to some special AP with 11b only mode.
- Fix Wi-Fi connection broke in some cases.
- Fix Wi-Fi station disconnect may cause system crash.
- Fix status code error in ADDBA response packet.
- Optimized Wi-Fi performance when signal is weak.
ESP8266_RTOS_SDK Release v3.2
ESP8266_RTOS_SDK Release v3.2
This is the list of changes since release v3.1.
1. Important Notes
- Provide 4KB more heap for user since v3.2.
- Test Environment: ESP8266 runs as a station, connects to an AP and gets an IP address from the AP.
- Test Result:
- After the chip got IP, the system's free heap size of v3.2 is 76716 Bytes;
- After the chip got IP, the system's free heap size of the latest release/v3.1 is 72812 Bytes.
- Conclusion: 4KB more heap is available for user with the v3.2.
- V3.2 reduced the application binary size. For example, when compiling the example "openssl _demo", the generated app bin size is about 30KB less than the V3.1.
- V3.2 removed the use limitation when using sniffer/promiscuous mode and operating the flash together.
- If you need to call the
esp_wifi_set_protocol
, it should be called in theSYSTEM_EVENT_STA_START
event. - For better compatibility, the ESP8266 is in bg mode by default. And application can set it to be bgn mode for reconnecting when it fails to connect some special APs, refer to the example "simple_wifi".
2. Changes in Functions and Features:
2.1 APP Update
- Fix an issue that the base address of OTA copy cache buffer may not be aligned by 4 bytes.
- Fix an issue of upgrading from old SDK to the new IDF style SDK, which caused by incorrect flash map.
- Add combine binary overwrite checking.
- Add a feature to check OTA firmware's entry function link address in case mistakenly download a wrong firmware.
- Add a feature to copy old RF parameters to new SDK partition for that users' RF parameters are customized.
- Add a feature to generate OTA initial binary.
- Add a feature to get the target AP's SSID and password saved by the old SDK. So users can make the system connects to the same AP even if upgrading from an old SDK to the new style SDK.
- Add a feature to check the wrong partition table.
- Spilt OTA example into sub-examples to adapt to various use scenarios.
2.2 AWS IoT
- AWS-IoT using esp-tls instead of mbedTLS, and this change makes it able to use wolfSSL.
- Update to latest AWS certificate.
2.3 Bootloader
- Add a feature that bootloader will copy app firmware from OTA_1 partition to OTA_0 partition after finishing FOTA. In this case, users can generate only one app firmware (OTA_0), instead of two firmwares (both OTA_0 and OTA_1), when using ESP8285 (or ESP8266 + 1MB Flash).
2.4 Build System
- Fix
print_flash_cmd
print information error. - Optimize compiling script to get partition information from partition table binary.
- Porting from esp-idf to support cmake
- Update cmake project configuration file of components and examples to support cmake
2.5 CJSON
- Add a feature to check if 32-bit type data overflowed when using newlib in nano mode.
2.6 Console
- Add console component and example
2.7 Driver
- Fix PWM error phase
- Fix the blockage issue when UART enables swap
- Fix a bug that PWM may be interrupted by Wi-Fi
- Fix PWM jitter when connecting AP
- Fix PWM channel number type error
- Fix SPI example readme wave image error
- Modify UART tx done API to add ticks for waitting
- Add ADC driver and example
- Add I2S driver and example
- Add SPI RAM driver
- Optimizing HSPI example
2.8 ESPOS
- Remove ESPOS component
2.9 ESP-TLS
- Update from esp-idf
- Fix an issue of receiving fail when working in non-block mode
2.10 Esptool
- Add a feature to disable the main part of rom UART0 printing
- Add a feature to make software reset after finishing downloading
2.11 Factory-test
- Add factory test example and document
2.12 FreeRTOS
- Divide ringbuf to be an independent component from freertos
- Remove unnecessary stack panic information so that only useful stack data will be print
- Remove unused or unsupported platform code from freertos, only left the useful part for the xtensa LX106
- Add a configuration to link some functions to IRAM to speed up task switch
- Add an option to enable queue sets
- Add an option to disable some functions to optimize firmware bin size
- Add an option to disable FreeRTOS if user wants to use other OS instead
- Add an option to enable facility
- Add a function to get CPU usage
- Add an option for idle task stack size, changed the default size from 768 to 1024 bytes
- Add CPU wait in idle task to save power
- Add an option for panic so that users can select whether it outputs panic information or not
- Add independent tick/idle hook functionality
2.13 HEAP
- Modify heap raw malloc/free link from flash to iram, to remove sniffer/promiscuous mode use limitation
2.14 HTTP Client
- Add esp_http_client component from esp-idf
- Add wolfssl platform support for http client
2.15 HTTP Parser
- Add http parser from esp-idf
2.16 HTTP Server
- Add the esp_http_server component from esp-idf
2.17 HTTPS OTA
- Add esp_https_ota component from esp-idf
2.18 Log
- Fix log time stamp error
2.19 LwIP
- Fix compiling error when disable "set socket SO_LINGER default"
- Fix a bug that socket multi-thread does not check socket offset when using VFS
- Fix UDP sync register message error when using raw socket
- Fix a crash issue when multi threads reenter lwip_close
- Modify netif hostname according to rfc952
- Add "<time.h>" declare to "lwipopts.h"
- Add "<sys/select.h>" header file
- Add a function to increase TCP sending speed at non-blocking mode
- Add standard "fcntl" and "ioctl" APIs for application if VFS is disabled
- Add a reserved DNS server to avoid DHCP changing all DNS server addresses
- Add Auto-IP triggers callback so that application can know IP changes when running mDNS
- Clean up LwIP port source code
- Enable LWIP loopback by default in the example
http_server
series andwifi-provisioning
2.20 MQTT
- Add esp-mqtt component and example
- Fix compiling error when disable WS or WSS
2.21 NVS Flash
- Added
nvs_partition_gen_utility.py
2.22 Partition table
- Fix partition load redefined error
2.23 Protobuf-c
- Add protobuf-C component
2.24 Protocomm
- Add protocomm component
2.25 SPIFFS
- Add SPIFFS component and example
2.26 SSL
- remove AX-TLS
- Add license note to README and header file of wolfSSL
- Modify network wrapper from mbedtls to esp-tls
- Modify network wrapper from wolfSSL to esp-tls
2.27 System
- Fix
%p
format print error ofets_printf
- Fix a bug that startup function cannot support multiple segments
- Fix a bug that RTC segment is always loaded even if it is woke up from deep sleep
- Fix compiling error that "esp_sleep.h" leaks "gpio.h" declaring
- Modify macro name of platform from
TARGET_PLATFORM_ESP8266
toIDF_TARGET_ESP8266
- Add interrupt overhead time test
- Add an option to configure CPU frequency to be 160MHz before
app_main
- Add an API
esp_timer_get_time
to get microsecond - Add a function to print version of "phy" library
- Add error number description
- Add a feature that software disables UART swap before restart
- Add an option to init OS before starting for "RTT"
- Refactor link section to make unused function/data not linked
- Refactor GPIO wakeup API in force sleep mode
- Remove
esp_socket
to save RAM and ROM - Update libphy.a to 1055_22
- Optimize time waking from light sleep to reduce power consumption
- Disable calculating No.14 channel when power on
2.28 TCP Transport
- Add tcp_transport component
2.29 TCPIP-Adapter
- Fix a memory leak issue that received pbuf may not be freed
2.30 Util
- Add a function to speed up loading data from instruction bus
- Add new SHA(1/256/512) algorithm and unit test
- Add new AES(ECB/CBC/CFB128/CFB8/CTR) algorithm and unit test
- Add
util_assert
to check input parameters - Refactor CRC to speed up loading data from lookup table, which is laying out at instruction bus
2.31 Virtual File System
- Add VFS component
- Disable VFS components by default
2.32 Wi-Fi
- Remove WME information by default
- Refactor the method that sync data from Wi-Fi driver to 802.11 stack task, to reduce the time of close NMI which may cause Wi-Fi status wrong
- Fix a crash issue when receiving a wrong beacon whose DTIM is 0
- Fix a crash issue when Wi-Fi tx state error
- Fix transmitting error when "RTS", "CTS", "transmiting start" and "transmiting complete" events are triggered in the same time
- Fix a bug that Wi-Fi may fail to enter force sleep mode when pm is enabled
- Fix PWM error at sniffer mode
- Fix a bug that queue sends data in blocking mode when locking the scheduler
- Fix a bug that
esf_buf
did not set critical state - Fix a bug that station does not use random SEQ to associate AP
- Fix a memory leak issue when scanning in sta+softap mode with some special AP
- Fix description of phy power level
- Fix description of some members of
wifi_pkt_rx_ctrl_t
inesp_wifi_types.h
- Modify smartconfig type to
sc_callbac
- Modify ESP8266 Wi-Fi API to keep consistent with ESP32
- Using global functions instead of function table to reduce unused function
- Add
esp-log
to internal library - Add a configuration to set Wi-Fi TX power
- Add a feature that Wi-Fi sends deauth to ap before connecting
- Add sniffer example
- Add new APIs:
esp_wifi_set_promiscuous_ctrl_filter
esp_wifi_get_promiscuous_ctrl_filter
esp_wifi_get_bandwidth
- Reduce the time of station connecting to an AP
2.33 Wi-Fi Provisioning
- Add wifi-provisioning and example component
2.34 WPA Supplicant
- Disable "Use faster div, esptmod, sqr, montgomery multiplication algorithm" when enable wolfSSL
3. ...
ESP8266_RTOS_SDK Release v3.1
This is the list of changes since pre-release v3.1-rc1.
1. Important Notes
- V3.1 updated the bootloader to initialize SPI flash I/O mode and clock. So if you are using the V3.0 bootloader, and now upgrade to the new SDK, please disable the following configuration in the menuconfig:
"Bootloader config ---> [ ] Bootloader init SPI flash" - We moved some functions from IRAM to flash, including
malloc
andfree
fucntions, to save more memory. In this case, please do not read/write/erase flash during sniffer/promiscuous mode. You need to disable the sniffer/promiscuous mode at first, then read/write/erase flash. - ESP8285 or ESP8266 + 1MB flash can use "Copy OTA Mode" for OTA, more details are in the examples/system/ota.
2. Changes in Functions and Features:
2.1 OTA Function
- Support "Copy OTA Mode" for ESP8285 or ESP8266 + 1MB flash instead of generating 2 OTA binaries. More details are in the examples/system/ota.
- Optimized the firmware upgrading from an old SDK (NonOS SDK, or RTOS SDK that earlier than v3.0) to a new SDK(IDF style RTOS SDK v3.0 or later versions). More details are in the document.
- Removed the old "ota" example, and renamed the "universal_ota" to be the new "ota" example instead.
2.2 AWS IoT
- Fixed the issue that AWS cannot work when using wolfSSL instead of mbedTLS.
2.3 Driver
- Fixed SPI example README.md wave image error.
2.4 NVS flash
- Fixed the issue that NVS stored data may be broke when power off at some abnormal circumstances.
3. Modified Documents
- Added document "fota-from-old-new.rst" that introduces how to update from an old SDK to a new SDK(IDF style) by OTA.
- Optimized README.md of example OTA.
- Updated wolfSSL license and copyright.
- Added document "General Notes".
ESP8266_RTOS_SDK pre-release v3.1-rc1
This is the list of changes since release RTOS SDK v3.0:
1. Major Improvements
ESP8266_RTOS_SDK V3.1 provides more global heap memory and offers better performance.
- Heap memory increased by 10KB in comparison to V3.0.
- Some system global variables are now linked to IRAM which frees up more DRAM and significantly improves calculation and communication performance of the application. This configuration can be disabled in
menuconfig
if necessary.
2. Added Components
- coap
- esp-tls
- heap
- libsodium
- mDNS
- pthread
- wpa_supplicant
3. Changes in Functions and Features
3.1 Compiling Framework and Cross-toolchain
- Now using GCC v5.2.0 by default, you can find the download link in README.md
- Added the command
make ota
to build firmware that supports the OTA function. - Removed unused and unsupported libraries, including libairkiss.a and libcirom.a
3.2 Systems
- Updated libphy.a to version 1055_8.
- Fixed the issue where panic may re-enter itself and fail to dump information.
- Fixed the issue where
esp_restart
may return unexpectedly. - Fixed the issue with incorrect UART baudrate after the software restarts.
- Added a configuration in menuconfig for the stack size of ESP8266’s interrupt function.
- Added a configuration in menuconfig for the stack size of the user start task, which is especially useful for the
app_main
function. - Added more APIs for the A-I/O function.
- Added a deep heap trace function for OS adapter APIs, which, instead of returning just the address of a function, now returns the name of the function, as well as the file, and the line where it can be found.
- Added the global macro
__ESP_FILE__
replacing__FILE__
; from now on, it provides a file name without the full path to save flash space and to optimize debug information. - Added the function
esp_timer
based on the FreeRTOS timer, as opposed to the hardware timer. - Added a feature that allows
panic
to show the system operation status, including NMI, ISR or task. - Added a feature where the software jumps into
panic
when callingabort
. - Added a configuration in menuconfig for the stack size of the event loop task.
- Added a new
ets_vprintf
to save the stack sizes of the task, interrupt and NMI. For debugging Wi-Fi, go to menuconfig and enable the settingLink ets_printf to IRAM
. - Added a feature allowing
ets_putc
to support CR/LR/CRLR selection, so bothets_printf/ESP_EARLY_LOGX
andprintf
sets of functions can use it. - Added a configuration disabling console UART in menuconfig.
- Added a function showing the reason for system reset.
- Freed up 4~5KB of flash by removing
.irom0.text
fromlibcore.a
. - Saved more RAM by moving some functions from IRAM to flash.
3.3 Drivers
- Fixed a bug where the UART1 interrupt could lead to a crash.
- Refactored watchdog is now fed at OS idle task instead of
ppT
task. - Saved RAM by refactoring the SPI flash driver which helped to reduce the size of some functions linked to IRAM.
- Added the I2C driver and an example.
- Added the PWM driver and an example.
- Added the hw_timer driver and an example.
- Added ADC functions.
- Added the HSPI driver.
3.4 FreeRTOS
- Fixed the issue of the incorrect RTOS software frequency when switching the CPU frequency from 80MHz to 160MHz. Please pay attention to the HELP notes if you have to change the RTOS software frequency.
- Changed the license of OS hardware platform port files from GPL to MIT.
- Added management functions for idle/systick hook callback.
- Added the API function
xPortGetTickRateHz
to get RTOS rate frequency. - Added the API function
xTaskCreatePinnedToCore
for code compatible with ESP-IDF. - Added a configuration in menuconfig for the stack size of the OS timer task.
3.5 Wi-Fi
- Fixed the issue of incorrect parameters when saving to flash.
- Fixed the WPA free data error causing failure due to lack of memory while sending packets.
- Fixed the packet decryption error which occurred on some specific routers.
- Fixed the incorrect IP address issue in SmartConfig’s callback.
- Fixed the issue where assoc capability info is sent incorrectly with LDPC support. ESP8266 does not support LDPC.
- Added a feature allowing to obtain a cellphone’s IP address during AirKiss.
- Fixed the issue where a softAP could stop sending packets during stress test.
- Fixed the incompatibility issue of the CCMP encryption with some specific APs.
- Fixed the beacon timeout issue.
- Fixed the issue where a station fails to connect to some specific APs in 11b only mode.
- Fixed the issue where ESP-NOW in STA+AP mode could set the key index incorrectly.
- Fixed the disconnect reason code error.
- Fixed the issue where a station could use the mismatch status code in ADDBA response to join some specific APs.
- Fixed the issue of WiFi crashing due to lack of memory.
- Fixed the issue where system could crash if sniffer callback took too long to return.
- Fixed the issue of the incorrect scan results if the WiFi channel was set to 14.
- Fixed the BSSID error that could cause failure while connecting to an AP.
- Optimized the short-distance communication performance.
- Reduced power consumption.
- Changed to operating in 11g mode by default to optimize the compatibility with different routers.
- Refactored phy set/get parameters for APIs including:
esp_wifi_set_protoco
esp_wifi_get_protocol
esp_wifi_set_max_tx_power
- Refactored WPS APIs and included a WPS example.
- Refactored ESP-NOW now supports broadcast BSSID, also an ESP-NOW example is included.
- For debugging purposes, added the description for error codes of data sending errors in the header file
esp_wifi_types.h
. - Added a configuration in menuconfig for the stack size of the
ppTask
task, which is especially useful for the sniffer callback function, usually having a large stack. - Added the API function
esp_wifi_send_pkt_freedom
for sending a raw 802.11 packet. - Added the function allowing to change the smartconfig's ACK information.
- Added the callback function allowing application users to receive a probe request packet.
- Optimized software speed.
- Optimized WPA calculation performance by using DRAM instead of IRAM.
- Optimized WiFi TX performance.
- Optimized the sniffer for receiving more packets within the same time.
- Optimized the smartconfig process and its efficiency.
- Optimized the speed of joining an AP by using saved PMK instead of calculating them again.
3.6 LwIP
- Fixed the issue of possible packet losses when receiving UDP multicast packets.
- Fixed the issue where one UDP packet could exceed 1472 bytes if
IP_FRAG
was disabled. - Fixed some debug information typos.
- Fixed the incorrect format output data types in the
cc.h
header file. - Disabled TCP cache pbuf.
- Modified the TCP window max limitation to 14600 (10 * MSS).
- Made
LWIP_DHCP_AUTOIP_COOP
automatically enabled ifLWIP_AUTOIP
is turned on in menuconfig. - Refactored socket multi-thread feature to save memory and optimize performance.
- Refactored the internal heap management API to make debugging easier.
- Added a configuration in menuconfig that allows to set a maximum number of sockets.
- Added the header file
netinet/in.h
. - Added the header file
sntp/sntp.h
. - Added the header file
arpa/inet.h
. - Added a configuration for server number of IPv6 DNS in menuconfig.
- Added an SNTP example.
- Added a feature that allows UDP cache to support both raw UDP and socket for optimization of UDP throughput performance.
- Added the ping application function.
- Added a socket IPv4 and IPv6 example.
- Added IPv6 multicast support for socket.
- Added a configuration for autoIP in menuconfig.
- Added a configuration in menuconfig for the TCP-IP mailbox size.
- Added a TCP feedback handler.
- Added a configuration in menuconfig to enable/disable setting SO_LINGER by default for multi-thread applications. If you use a TCP server or HTTP(S) applications, It is recommended to disable the setting.
- Disabled IPv6 by default to save heap memory.
- Optimized IPv6 multicast support.
- Optimized the response speed of the application recv/send thread.
- Optimized the new allocated TCP port to use hardware random integer.
3.7 SSL
- Update WolfSSL, which in many cases saves more memory than mbedTLS.
- Added a configuration to enable/disable the Diffie-Hellman-Merkle(DHM) module.
- Added a configuration for CTR mode of mbedTLS.
- Added a configuration for RSA bits of mbedTLS. If a 1024-bit RSA certification is used, it will show a warning.
- Saved memory by separating mbedTLS Tx and Rx buffers when setting up.
3.8 MQTT
- Refactored the MQTT example.
- Added MQTT configurations in menuconfig.
- Formatted the MQTT code.
- Fixed some debug information typos.
- Fixed the low throughput issue caused by
taskYIELD
. - Fixed the issue where the application could be blocked during socket select.
- Fixed the ping timeout issue.
- Fixed the issue causing MQTTPublish/MQTTConnect to return
-1
. - Fixed the watchdog reset issue in high throughput.
- Optimized the communication performance in bad network environment.
3.9 Newlib
- Fixed the compiling error of the
assert
function, occurring ifDEBUG
mode is enabled. - Replaced the LwIP private
ioctl
API with the generalioctl
API. The function itself is not changed. - Replaced the LwIP private
fcntl
API with the generalfcntl
API. The function itself is not changed. - Made the
abort
functio...