Skip to content

Releases: esp8266/Arduino

2.5.0-beta1

12 Dec 00:07
Compare
Choose a tag to compare
2.5.0-beta1 Pre-release
Pre-release

Changes since 2.4.2:

Core

  • better compatibility for IPAddress changes with external libraries (#5438)
  • Make exceptions a configurable menu (#5434)
  • Use Python JSON to format packages.json file (#5429)
  • Fix pgmspace 32-bit read macros (#5425)
  • fix inconsistent block size for spiffs in board.txt. and ld files (#5412)
  • Split AddrList into object-iterator-container components (#5410)
  • weak hook preinit() #2111 #2133 #2136 (#5395)
  • fix espconn and err_t (#5392)
  • Pass string objects by reference (#5378)
  • Fix rtc mem bounds check (#5372)
  • Check for WEP when setting authmode (#5364)
  • i2s can send now buffers (#5349)
  • cleanup/unify flash sector size define value (#5327)
  • deprecate RTC_REG macros in favor of TIMER_REG macros (old typo in macro names) (#5326)
  • Only stop waveforms actually running in ISR (#5308)
  • Use "PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY" as default lwIP profile for @platformio (#5305)
  • Add missing decrement operator to I2C clockCount (#5292)
  • Fix arg type in Wire to size_t (#5289)
  • constexpr helpers to identify core version (#5269)
  • Allow override of macros in core_version.h (#5268)
  • fix md5 comparison (#5265)
  • fix SPIFFS when not enabled in build options (#5249)
  • Make stopWaveform call interrupt callable (#5248)
  • I2C slave support (originally by bjoham) (#5226)
  • Add stack repainting call to ESP class (#5221)
  • Fix led-pin in updater, also no need to backup LED state (#5217)
  • Update to the last version of nonos-sdk V2, WiFi addons (#5210)
  • PolledTimeout Class for wrapping millis() loops (#5198)
  • cleanly restore spiffs data in boards.txt (#5195)
  • IPv6 and major IPAddress changes (#5136)
  • Allow GPIO 9 and 10 for waveform generation (#5055)
  • Consolidate .iram.text matcher in linker to wildcard matcher (#4356)
  • implement EspClass::getFreeContStack method (#5133)
  • restore SPIFFS symbols when null-sized (#5122)
  • Make unique sections for ICACHE_* variables (#5117)
  • metric for heap fragmentation (#5090)
  • revert e02932f (#619 works now without it) (#5056)
  • Add instantly option to deepSleep (#5052)
  • Move some exception strings to PROGMEM (#5050)
  • Enclose PROGMEM segment names in quotes (#5049)
  • Move all PROGMEM to their own section (#5048)
  • Fix iostream related issues (#5047)
  • uart: BW improvements (#4620)

Library - mDNS

  • LEAmDNS - Multicast DNS Responder rewrite (#5442)

Library - ESP8266WiFi

  • Implement for ssid a similar approach as for passphrase (#5411)
  • Move WiFi debug messages to PMEM (#5388)
  • Check if AP exists before adding it (#5373)
  • Check for WEP when setting authmode (#5364)
  • Set authmode if passphrase is provided (#5317)
  • Fix: WiFiClient::flush() yields but can be called from events (#5254)
  • Add cryptographically signed update support (#5213)
  • WiFi: improve WiFiClient(Basic) examples (#5197)
  • ClientContext: restore TCP PuSH flasg when needed (#5176)
  • fix: tcp_output() should always be called after tcp_write(), does not break nagle (+ doc) (#5172)
  • Fix TCP race condition, remove fixed delay in CC (#5167)
  • automatically WiFiClient::flush before ::stop (#5135)
  • read all lines from slow servers (#5113)
  • ClientContext (tcp) updates (#5089)

Library - ESP8266WiFi (SSL/TLS)

  • Update to latest BearSSL w/EC25519 fix (#5468)
  • fix compilation error - can't find axTLS::WiFiServerSecure (#5407)
  • Don't clear authentication options on a ::stop (#5386)
  • Remove obsolete BSSL debug print routines (#5368)
  • Deprecate axTLS, update examples (#5366)
  • Move BearSSLHelpers into BearSSL namespace (#5315)
  • Patch axTLS CVEs and fix CA verification (#5270)
  • Add warning when no authenticator, drop verify() (#5205)
  • Add BearSSL::setFingerprint(char* fp) (#5204)
  • Really free stack after last BearSSL obj destroyed (#5185)
  • Move BearSSL _cipher* init to _clear() for consistency (#5178)
  • Clear cipher list on server creation, fix crash (#5171)
  • Move BearSSL from STACK_PROXY to a real, thunked 2nd stack (#5168)
  • Add SSL Session capability to speed reconnections (#5160)
  • Allow cipher specification for BearSSL (#5151)
  • Move SSLContext to its own header (#5121)
  • Update axTLS to e634adf (#5125)
  • Fix connection options and update github pubkey (#5120)
  • Add WiFiClient parameter to HTTPClient (#4980)

Library - ESP8266WebServer

  • update HTTPCLIENT_1_1_COMPATIBLE (#5389)
  • fix http parsing (#5262)
  • Fix webserver unresponsiveness (#5259)
  • Improved parameter validation (#5256)
  • fix parseArgument #2 (#5252)
  • fix typo (#5189)
  • Added naive content length to upload struct (#5142)
  • Expose post args during upload (#4935)

Library - ESP8266HTTPClient

  • Save 2.3K in HTTPClient debug mode by PSTR (#5387)
  • Bugfix/esp8266 http client (#5250)
  • ESP8266httpClient crash-on-destructor bugfix (#5220)
  • Update api.github.com certificate signature (#5145)
  • ESP8266HTTPClient: allow getString() more than once (#5091)
  • Support for concatenation of headers (#4864)

Other Libraries

  • OTA (espota.py) (#5454)
  • Add SD.end() method, including arg to leave SPI up (#5402)
  • (SSDP) usn and udn differences cause issues with smarthings (#5401)
  • Fix debug provision for DNSServer (#5329)
  • Update ESP8266HTTPUpdateServer library (#5297)
  • examples code cleanup (#5290)
  • Dns server cleanup (#5194)
  • Add missing keywords.txt files to bundled libraries (#5183)
  • WiFi Mesh Update 2.1 (#5157)
  • Create library.properties (#5129 #5128 #5127 #5119)
  • Fix min and max for Servo library (#5064)
  • Hash: make actual SHA1 result and comment consistent (#5057)
  • Implementation of Functional and Scheduled option in Ticker lib (#5030)
  • CaptivePortalAdvanced: Change debug print to println (#5000)
  • SD: Implement readBytes (#4931)

Build system, Toolchain & Newlib

  • Update to Newlib c0f3596 with regexp/fnmatch (#5457)
  • Update toolchain and bins to 2.5.0-2 autobuild(#5441)
  • Add 64-bit %ll printf format support (#5435)
  • Add in Win64 pointers to Win32 tools (#5427)
  • Add %z and %x to printf backend (#5424)
  • Enable exceptions, update to optimized newlib, migrate to new toolchain (#5376)
  • Move ICACHE_* to unique sections, local LD script (#5150)
  • Add full debug builds for all tests (#5146)
  • build: place generated ld script into build directory (#5043)
  • Automatic stack location selection (SYS or HEAP), enable per library AR-chive in arduino build system (#5018)
  • Switch to isolated build flags per framework (#5028)

Package builder

  • package: add version to board package name (#5046)
  • Minor fixes for #4999 (#5003)

Upstream dependency - BearSSL

  • Update BearSSL to latest toolchain (#5449)
  • Update to BearSSL 0.6+ release, add AES_CCM modes (#5164)

Upstream dependency - lwIP-v2

  • lwip2: 3 sntp servers, autoip (169.254), esp-ping, espconn (#5444)
  • update to lwIP-2.1.0: partial SACK support by default (de-selectable in menu) (#5126)

Documentation

  • Mention eboot use of rtc memory (#5439)
  • Add doc for ESP8266WebServer (#5400)
  • documentation: add quick links (#5391)
  • document wificlient loop (#5355)
  • Update generic-class.rst (#5338)
  • Fix doc for ESP8266WiFi (#5325)
  • Update libraries.rst with ESP-NOW (#5322)
  • typo fix (#5319)
  • Add BearSSL documentation (#5311)
  • Add missing decrement operator to I2C clockCount (#5292)
  • Update debugging.rst (#5234)
  • Fix Readme Link (#5215)
  • Add BearSSL license info to README.md (#5211)
  • Revert "Wrong directory for installation??" (#5199)
  • fix doc link (#5190)
  • Make softAP documentation state the correct min value (0) for the max_connection argument. (#5165)
  • Wrong directory for installation?? (#5163)
  • Require sphinx 1.7 due to bugs with new v1.8 (#5132)
  • Fix formatting of bullet lists (#5098)
  • Update a05-board-generator.rst (#5093)
  • Update readme.rst (#5092)
  • Soft-AP documentation update (#5088)
  • Format lists for readability (#5082)
  • doc: improve WiFi.persistent documentation (#5081)
  • Analog input voltage can be 3.3V (#5020)

Boards

  • ESPectro Core board support (#5419)
  • Added 2M generic boards (#5404)
  • support new board (invent one) (#5286)
  • Fix NUM_ANALOG_INPUTS for Amperka WiFi slot (#5219)
  • boards generator: updates (#5103)
  • Fix boards.txt.py compatible with python3 (#4998)
  • Update ESPduino pin definitions (#4828)

Tests / CI

  • device test updates (ping, test_millis_mm) (#5455)
  • fix device test test_http_server (#5414)
  • Split PIO job into even and odd builds (#5405)
  • Move from container to VM per Travis requirements (#5367)
  • Class mocks for sketch emulation on host (#5342)
  • Fix device/test_http_client tests (#5309)

2.4.2

03 Aug 07:46
Compare
Choose a tag to compare

Changes since 2.4.1.

Core

  • Correct millis() drift (#3078, #4264)
  • Raise exception when assert happens (#4480, #4482)
  • Fix stack trace unwinding within continuation library (#4385)
  • Return from Print::write(buffer, size) if any byte fails to write (#4527)
  • Warn if inefficient Print::write implementation is not overridden (#4537)
  • String: fix overlapping memcpy call in String::trim (#4938)
  • String: fix creation and concat issues (#4955, #4962)
  • Increase available DRAM by moving exception/panic messages into IRAM, assert strings and file names into flash. (#4187)
  • Increase available IRAM by moving cont_init from into flash (#4384)
  • Save 192 bytes of RAM bytes when attachInterrupt is not used (#4601)
  • Move continuation stack from .bss onto sys stack, saving 4kB of RAM, if WPS is not needed (#4622)
  • Allow changing vtables location (#4567, #4582)
  • Add linker MAP artifact to standard build process (#4186)
  • Record information on failed allocation, dump it to UART on a panic (#4220)
  • Fix OOM debug support for Arduino 1.9 (#4357)
  • HardwareSerial: RX fifo latency fix (#4328)
  • HardwareSerial: improve UART FIFO overrun handling and stability (#4536, #4568)
  • HardwareSerial: add functions for baud rate detection (#4978)
  • Add support for hardware Sigma Delta generator (#4119, #4494)
  • New waveform generation code supporting multiple analogWrite, Servo, Tone at the same time (#4640, #4872)
  • Scheduled interrupt handler support (#4609, #4879, #4890)
  • Allow using GPIO16 for analogWrite (#4895)
  • Fix digitalPinToBitMask(), portOutputRegister(), portInputRegister() for GPIO16 (#4964)
  • I2S: add callbacks on DMA reads (#4205)
  • I2S: multiple fixes for IRQs, protocol, factoring (#4574)
  • I2S: add input API and examples (#4539)
  • Updater: fix overflow in binary size check (#4552)
  • Updater: copy the existing flash mode over the one set in an OTA update image (#4876, #4877)
  • Allow sending debug information to classes other than HardwareSerial (#4611)
  • Add ESP.deepSleepMax() function to get maximum possible deep sleep time (#4627)
  • Add avr/pgmspace.h and handling of __PROG_TYPES_COMPAT__ for compatibility (#4619)
  • Force ARDUINO macro to 10805
  • Fix base64_encode_expected_len returning value which is not large enough (#4773, #4786, #4934)
  • Add extra parens in SDK macro definitions (#2617, #4508)

ESP8266WiFi

  • Fix memory leak when reusing WiFiClient object (#4497, #4516, #4549)
  • Fix issues around WiFi.persistent handling (#3798)
  • Add WiFi.getAutoReconnect() function (#4359)
  • Fix random crash in ClientContext::write(Stream) and write_P(PGM_P buf, size_t size) (#2504, #4530)
  • Add softAP SSID & PSK query API (#4138)
  • Fix WiFiClient not detecting connection reset by peer (#4626)
  • Allow scanning on specific channel or for specific SSID (#4636)
  • lwip2 Update (#4729)
  • lwip2: Fix static address management (#4677)
  • lwip2: fix disconnection, fix reconnection (#4851)
  • Add new WiFiClientSecure and WiFiServerSecure implementations based on BearSSL, offering lower memory consumption and higher robustness (#4273)
  • WiFiClientSecure: report connected when any bytes are available for read (#4754)

Other Libraries

  • ESP8266mDNS: support for compressed DNS messages (#3769, #4648, #4752)
  • ESP8266mDNS: return bool from addServiceTxt (#4507)
  • ESP8266mDNS: clear previous result when queryService() is called (#4893, #4894)
  • SPISlave: add end method (#4248)
  • ESP8266WebServer: fix WebServerSecure streamFile() (#4545)
  • SPI: const-ify input buffers (#4552)
  • SPI: Support Arduino API's SPI::transfer(void*, size), optimized (#4925)
  • I2C: improve bus recovery procedure (#4070)
  • I2C: add support for 50kHz clock (#3401)
  • I2C: clock frequency set by setClock now survives re-initialization (#3389)
  • Add ESP_EEPROM to list of ESP libraries (#4529)
  • SoftwareSerial: update to version to 3.4.1 (#4623)
  • ESP8266HTTPUpdate: make timeout configurable (#4705)
  • ESP8266HTTPUpdateServer: allow to update credentials after setup is performed (#4789)
  • ESP8266SSDP: add setUUID method (#4981)
  • ESP8266WiFiMesh: new version (#4718)

Documentation

Boards

  • Support 4M2M board option (#4454)
  • Support 512k32k board option (#4871, #4880)
  • Define SDA and SCL pins for Olimex MOD-WIFI-ESP8266(-DEV) (#4562)
  • Add WiFiduino board (#4590)
  • Change flash mode from QIO to DIO for gen4iod board (#4616)
  • A0 pin number can be changed in the variants (#4778)
  • Add WiFi Slot board (#3916)
  • Wemos D1 Mini Lite documentation update (#4809)
  • NodeMCU documentation update (#4715)
  • Add XinaBox board (#4929)
  • Add Seeed Wio Link board (#4943)
  • Change "WeMos" to new brand name "LOLIN" (#4984)

2.4.1

08 Mar 04:20
Compare
Choose a tag to compare

Changes since 2.4.0.

Core

  • Move C++ vtables into IRAM, out of heap (#4179)
  • Update I2S base frequency and frequency dividers to real ones (#4031)
  • umm_malloc: fix calloc by clearing block only if malloc succeeds
  • Esp.deepSleep: change argument from uint32_t to uint64_t to match SDK
  • Add Esp.deepSleepMax, which returns maximum possible deep sleep time
  • SPIFFS: Fix lseek typo for seek_end (#4287)
  • Fix access past end of the buffer in RTCmem example (#4288)
  • Deprecate TIM_DIV265, add TIM_DIV256 instead (#4326)
  • If Debug Port is set, displaye version info after Serial.begin (#4467)
  • UpdaterClass::printError now accepts the Print object

ESP8266WiFi

  • Add SSL enabled WiFiServer, Updater, WebServer
  • WiFiClient: add keepalive api (default 2h,75s,9 not enabled) (#3937)
  • WiFiClient: don’t destroy ClientContext on ::stop
  • WifiServer: Add begin(uint16_t port) method, listening port can be changed at runtime (#4123)
  • WiFi: fix support for WPA pre-shared key in station mode, add support for PSK to WiFiMulti (#4076)
  • WiFi: fix Arduino compatibility of WiFi.config (#4145)
  • WiFiMulti: add timeout to WiFi connection loop (#4146)
  • lwip2: fix watchdog reset, fix WiFi reconnection (#4105)
  • lwip2: lower ram and flash footprint (by disabling old asserts)
  • lwip2: use only wifi_station_get_hostname() to set netif hostname (#4299)
  • lwip2: fix disconnection/reconnection issue
  • ClientContext:_write_some: release buffer once data really accepted for sending (#4265)

Other libraries

  • ESP8266HTTPClient: add digest authentication example (#4112)
  • ESP8266WebServer: Add begin(port) method
  • ESP8266WebServer: Move some strings to flash to increase available heap (#4148, #4338, #4371)
  • ESP8266mDNS: Fix mdns buffer overrun by 1 (#4317)
  • ArduinoOTA: don't crash on unrecognized packets (#4086)
  • Ticker: add bool active() (#2722)
  • Wire: check that pins needed by Wire are defined at compile-time (#4261)

Boards

  • boards.txt generator (#3722)
  • Case change and and 'none' reset option for Digistump Oak (#4143)
  • LED_BUILTIN is now a #define (#4276)
  • boards: Wemos D1 R1 needs a separate defined identifier (#4304)

Tools and SDK

  • sdk: update to v2.2.0-3-gf8f27ce
  • esptool: update to 0.4.13

Build and test

  • Add menu to control what gets erased during upload
  • Warnings cleanup (-Wall, -Wextra), check for warnings in CI (#4274, #4369)
  • Add support for @platformio Core 3.5.0
  • Drop PlatformIO lines from LD script; append object suffix to the end of target name (#4355)
  • tests/device: add make target to generate test reports
  • update testing documentation

Documentation

2.4.0

02 Jan 00:17
Compare
Choose a tag to compare

Changes since 2.4.0-rc2

Core

  • Prevent endless loop in run_scheduled_functions (#4048)
  • Pure virtual Stream::flush() moved to empty virtual Print::flush() to follow arduino API (#4029)
  • Allow disabling global Serial and Serial1 object (#2807)
  • Export pgmspace symbols with C linkage (#3955)
  • cbuf: fix boundary condition on resize (#4016)
  • time: add micros64, support for gettimeofday and settimeofday.
  • Remove min, max, isnan, isinf macros, use tempmlates from std:: instead.
  • Updater: added constant time string comparison to avoid possible time-based attacks. (#3836)
  • Board definitions updated

ESP8266WiFi

  • ESP8266WiFiMulti: Add count function (#3073)
  • Added String hostname support to WiFiClient and WiFiClientSecure (#3349)
  • WiFiClientSecure: don't use the broken max_fragment_length extension (#4033)
  • WiFiClientSecure: configurable connect timeout, better default value (#4027)
  • WiFiClientSecure: don't trash unread decrypted data when writing (#4024)
  • Fix WiFiClient::availableForWrite() with no connection (#3985)
  • WiFiUDP: fix crash when calling destinationIP with no packet available (#4036)
  • Fix flush() to wait for empty send buffer (#1002) (#3967)
  • Add compatibility check for config() method with Arduino arg order (#3860)

Third party libraries

  • Use lwip v2 by default
  • SDK: update to v2.1.0-14-g33f234f
  • SDK: rename hostname and default_hostname symbols (#1281)
  • Add extern C blocks to SDK header files (#1352) (#4044)
  • SoftwareSerial: update to 3.3.0 (#3727)

Other libraries

  • ESP8266WebServer: fix URL parameter decoding in web server (#3313)
  • ESP8266WebServer: allocate HTTPUpload struct on demand (#2557)
  • ESP8266WebServer: send empty chunk when done sending chunked response
  • ESP8266WebServer: add CONTENT_LENGTH_UNKNOWN keyword
  • ESP8266HTTPClient: increase HTTP SEND/POST timeout to 5s (#3971)
  • ESP8266HTTPClient: handle empty URI correctly
  • ESP8266HTTPClient: allow changing connection timeout using setTimeout (#4038)
  • EEPROM: Added length and operator[] methods, added some constness, missed dirty clear (#3855)
  • EEPROM: Clear dirty flag in begin and reallocate only if necessary, add getConstDataPtr method (#2217) (#3849)
  • Set architecture=esp8266 for bundled SD and Ethernet libraries (#4035)

Examples

  • Wait for NTP to be set in example (#4000)
  • Put WiFi into station mode in examples (#3731)

Documentation for 2.4.0

Documentation for this release is hosted on readthedocs.org:
http://arduino-esp8266.readthedocs.io/en/2.4.0/

2.4.0-rc2

15 Oct 18:48
Compare
Choose a tag to compare
2.4.0-rc2 Pre-release
Pre-release

Core

  • Redefine pgm_read_byte, pgm_read_word as macros to fix detection by libraries (#3140)
  • Move ASSERT() macro file text to PROGMEM (#3477)
  • Manifest for PlatformIO
  • Move debug constant strings to PROGMEM (#3478)
  • Initial support for attaching std::function to interrupts
  • Link airkiss library
  • Mask GPIO interrupts while attaching/detaching ISR handler (#3598)
  • Expand varargs correctly in printf_P (#2819)
  • Zero out memory in strncpy_P (#2633)
  • Fix erase size in ESP.eraseConfig
  • Add a workaround-delay in Serial.flush() (#3714)

ESP8266WebServer

  • Move MIME type table into PROGMEM to save RAM (#3475)
  • Parse parameters in the URL of a POST with empty content (#3398)
  • Digest Authentication support (#3053)

ESP8266WiFi

  • WiFiClient: apply write timeout to single chunk (#3273)
  • WiFiClientSecure: don’t send close alert when opening new session
  • Replace r_rand with os_random for LWIP_RAND() (#3499)
  • WiFiClientSecure: add loadCACert function (#3610)
  • WiFiClientSecure: add option to allow self-signed certificates
  • WiFiClientSecure: add support for keys and certificates in PROGMEM
  • Don't remove persistent WiFi settings when doing scan (#2946)

Upstream dependencies

  • axTLS: update to 2.1.4
    • Memory optimization: constants moved to PROGMEM, bigint cache cleared for loaded certificates
    • Fix certificate chain verification issues
  • sdk: update to v2.1.0-10-g509eae8
  • esptool: update to 0.4.12
    • Support for 8MB, 16MB flash sizes (image generation and uploading)
    • Fix for uploading on OS X with Apple FTDI driver
    • Fixes for error reporting
  • spiffs: update to 0.3.7+ (f5e26c4)
  • mkspiffs: update to 0.2.0
  • SoftwareSerial: update to 3.2.3

Boards

  • Add DigiStump Oak pins & board
  • Add Crystal Frequency menu item for generic board
  • Enable 8M and 16M flash sizes for generic board

Documentation for 2.4.0-rc2

Documentation for this pre-release is hosted on readthedocs.org:
http://arduino-esp8266.readthedocs.io/en/2.4.0-rc2/

Obtaining 2.4.0-rc2 pre-release

To install this pre-release using boards manager, follow the instructions, with the package URL replaced with the following one:

https://github.com/esp8266/Arduino/releases/download/2.4.0-rc2/package_esp8266com_index.json

2.4.0-rc1

22 May 03:07
Compare
Choose a tag to compare
2.4.0-rc1 Pre-release
Pre-release

This is a pre-release in preparation for release 2.4.0. It comes with many fixes accumulated over the past year, and includes many new features.

This is the list of changes compared to 2.3.0.

Core

  • Const-correctness for MD5Builder (#3222)
  • detect division by zero in map() to prevent exceptions (#2397)
  • digitalWrite and digitalRead cancel analogWrite enabled on a pin (#2328)
  • Fix incorrect usage of memset() in PWM code which leads to incomplete initialization of struct
  • Fix libb64 decoder (#2883)
  • Force core_version to be added to compiled binary
  • Prevent divide by zero error causing tone() to crash (#2780)
  • progmem: replace C version of pgm_read_{word,byte} with assembly
  • SPIFFS: fix unaligned read in HAL (#3261)
  • Add Arduino File standard seek call
  • Add support to Print::printf for printing from flash (#2266)
  • Allow global object instances be switched off with defines (#2344)
  • Base64: add option to disable any newlines in output (#3208)
  • Enable floating point formatting in sprintf/sscanf (#1179)
  • Updated String library to use C++11 iterators. (#2267)
  • Use libc from newlib (#1752)
  • move libstdc++ to flash (#2804)
  • Link ESP-NOW library

ESP8266mDNS:

  • Fix link list bug (#2347)
  • Fix crash in mDNS destructor (#2389)
  • Optimize MDNS to prevent overflow and endless loop (#2333)
  • Improve compliance with DNS-SD RFC6763 (#3145)
  • Support AP and STA interfaces at the same time
  • Support multiple interfaces in query code
  • Use the provided IP in the mDNS begin method (#2349)

OTA

  • Updater: fail if there is not enough space to fit the new firmware (#2405)
  • ArduinoOTA: forward errors from Update.begin to espota.py
  • Add getCommand() api for OTA update type (#2259)
  • Updater: check boot mode before starting update
  • Add support for hashed OTA password (#2292)
  • Exposed sketch MD5 through HTTP headers (#2236)

ESP8266WebServer

  • Fix missing separator between get and post arguments (#2222)
  • Fix plain post content containing special chars being parsed as arguments (#2241)
  • Fix urlDecode points (#2212)
  • Match headers using equalsIgnoreCase (#2474)
  • Allow for overridable value for HTTP_UPLOAD_BUFLEN
  • Add chunked encoding support (#2199)
  • Add application/json content type

ESP8266HTTPClient

  • Add PUT Request to HTTP Client (#2310)

ESP8266WiFi

  • WiFi: add SoftAPModeProbeRequestReceived event handler (#2917)
  • Set DHCP subnet correctly for softAP (#2648)
  • Use WIFI_STA in WiFiClient-examples
  • Optimize WifiClient::write performance (#2177)
  • WiFiClient: add support for connect and write timeout (#1420, #3247, #2120)
  • WiFiClientSecure: add example of setCACert/verifyCertChain (#1851)
  • WiFiClientSecure: Add support for CA root cert verification
  • WiFiClientSecure: match CN and SANs ignoring case (#2978)
  • Allow usage of byte arrays to set RootCAs (#2968)
  • Add onComplete event handler support for the asynchronous network scanning. (#2287)

New features

  • Add an LLMNR responder implementation (#2880)
  • Implement Async NBNS (NetBIOS) name resolution for Windows (#2275)
  • Implement Serial RX Buffer (#2239)
  • Initial SPI Slave implementation and examples (#2234)
  • Add support for HSPI overlap mode (#1062)

Documentation

  • Documentation is now hosted on readthedocs.org
  • Initial release of FAQ / Troubleshooting section (#2207)
  • Documenting of ESP.getFlashChipRealSize() (#2210)
  • Use stable documentation of PlatformIO (#2337)
  • ESP8266WiFi library documentation (#2388)
  • Add PROGMEM docs
  • Add instructions how to re-enable DHCP (#2600)
  • Add a section on filesystem limitations (#2858)

Upstream dependencies

  • axTLS: update to 2.1.2 (includes TLS 1.2 support)
  • Update SDK to 2.0.0

Boards

  • Host toolchains on Github
  • Addition of gen4-IoD Range boards (#3202)
  • Arduino boards with ESP8266 (#3121)
  • Add 1M (No SPIFFS) board option (#3203)
  • Update keywords.txt for coloring syntax (#2892)

Documentation for 2.4.0-rc1

Documentation for this pre-release is hosted on readthedocs.org:
http://arduino-esp8266.readthedocs.io/en/2.4.0-rc1/

Obtaining 2.4.0-rc1 pre-release

To install this pre-release using boards manager, follow the instructions, with the package URL replaced with the following one:

https://github.com/esp8266/Arduino/releases/download/2.4.0-rc1/package_esp8266com_index.json

2.3.0

23 Jun 07:38
Compare
Choose a tag to compare

Core

  • Fix NMI interrupt handler alignment
  • Update SDK to 1.5.3
  • umm_malloc: print block start address before heap corruption callback is triggered
  • If GDBStub library is used, break into gdb on assert and panic
  • Add option to keep FS classes in namespace (#2030)
  • Add SPIFFS::end (#1657)
  • Add ArduinoOTA::getHostname() interface
  • Add __throw_out_of_range
  • Add support for RTC user memory in ESP-specific APIs. (#1836)
  • Expose RTC_USER_MEM in esp8266_peri.h
  • Remove DISABLED macro (#2072)
  • Execute global constructors in correct order (#2074)
  • Real board name available in Sketch/MDNS/OTA (#2054)
  • Add DOUT/QOUT flash modes
  • Add ESP8285 entry in boards menu
  • Move timer detachInterrupt functions into IRAM (#2083)
  • Make Updater be able to run inside async callbacks (#2096)
  • Add new boards Phoenix 1.0 & Phoenix 2.0 (#2088)
  • Store git version of the core in the compiled binary (#2099)
  • Rebuild libstdc++ with mlongcalls and link against it (#1983)
  • Add mechanism for posting functions to the main loop (#2082)
  • MD5Builder::addStream: fixed falsy calculated hash for len > filelength (#2126)
  • Fix SPIFFS.openDir("") (#2143)
  • Bring back old semantics to random and randomSeed, add secureRandom (#1710) (#2142)
  • Add missing pgm_read_ptr{_near/_far} macros (#2160)
  • Add macro for maximum open SPIFFS files, settings it to 1 saves about 1k heap. (#2167)
  • Fix UART pins setting (#2098)
  • Fix ESP.getSketchSize, add ESP.getSketchMD5 (#2158)
  • Add Serial.baudRate() to get current baud rate (#2079)

Libraries

  • SNI support in WiFiClientSecure (#1285)
  • HTTPClient: return error when HTTPClient::begin is called with HTTPS URL without certificate fingerprint (#1941)
  • HTTPClient: fix default port not being set
  • HTTPClient: fix handling of chunked transfer encoding (#1975)
  • ESP8266SSDP: switch SSDP send arguments around
  • ESP8266WiFi: fix UdpContext::peek to return int (#1946)
  • ESP8266WiFi: fix WiFiSleepType_t values to match SDK ones
  • LwIP: use gcc-built LwIP by default (#1926)
  • LwIP: fix crash in igmp_start_timer (#1826)
  • HTTPClient: include non-standard ports in Host: header
  • ESP8266WiFi: Prevent WiFi config corruption (#1997 #1856 #1699 #1675)
  • GDBStub: fix section attribute for core gdbstub functions
  • Wire: I2C bus reset with info to user
  • ESP8266HTTPClient: allow HTTP header value without LWS
  • ESP8266mDNS: Fix mDNS doesn't accept queryService responses from avahi-daemon (#2015)
  • Add MFRC522 to supported libraries (#2044)
  • Update axTLS to ab516f7 (1.5.3+)
  • Mention ESP8266Ping library
  • ESP8266HTTPClient: fix duplicate Content-Length headers (#1902)
  • ESP8266HTTPUpdateServer: make HTTP Update Server more secure (#2104)
  • ESP8266WiFi: add virtual destructor to WiFiServer class (#2116)
  • ESP8266WiFi: fix error when calling WiFiServer::close more than once
  • ESP8266WiFi: WiFi event handling refactoring (#2119)
  • ESP8266mDNS: restart listening when WiFi STA is connected/disconnected (#1828)
  • ESP8266WiFi: allow DHCP client to be re-enabled using WiFi.config(0U, 0U, 0U) (#1896)
  • ESP8266WiFi: enable SO_REUSE in LwIP and WiFiServer (#1431)
  • ESP8266WebServer: make ESP8266WebServer::urlDecode public (#1419)
  • LwIP: sntp_localtime: return -1 in tm_isdst field (#2010)
  • ESP8266WiFi: fix for crash in WiFiClientSecure when WiFi is disconnected (#2139)
  • SD: Prevent WDT resets in SD library (#1815)
  • ESP8266WiFi: Fix issue when WiFi.begin(ssid, pass) is called right after WiFi.mode(WIFI_OFF)

Tools

  • Python 3 compatibility for get.py
  • Device side test library and test runner
  • Fix ARM toolchain files permissions (#2004)
  • Update esptool to 0.4.9

2.3.0-rc2

24 Jun 02:32
Compare
Choose a tag to compare
2.3.0-rc2 Pre-release
Pre-release

Core

  • Add option to keep FS classes in namespace (#2030)
  • Add SPIFFS::end (#1657)
  • Add ArduinoOTA::getHostname() interface
  • Add __throw_out_of_range
  • Add support for RTC user memory in ESP-specific APIs. (#1836)
  • Expose RTC_USER_MEM in esp8266_peri.h
  • Remove DISABLED macro (#2072)
  • Execute global constructors in correct order (#2074)
  • Real board name available in Sketch/MDNS/OTA (#2054)
  • Add DOUT/QOUT flash modes
  • Add ESP8285 entry in boards menu
  • Move timer detachInterrupt functions into IRAM (#2083)
  • Make Updater be able to run inside async callbacks (#2096)
  • Add new boards Phoenix 1.0 & Phoenix 2.0 (#2088)
  • Store git version of the core in the compiled binary (#2099)
  • Rebuild libstdc++ with mlongcalls and link against it (#1983)
  • Add mechanism for posting functions to the main loop (#2082)
  • MD5Builder::addStream: fixed falsy calculated hash for len > filelength (#2126)
  • Fix SPIFFS.openDir("") (#2143)
  • Bring back old semantics to random and randomSeed, add secureRandom (#1710) (#2142)

Libraries

  • Wire: I2C bus reset with info to user
  • ESP8266HTTPClient: allow HTTP header value without LWS
  • ESP8266mDNS: Fix mDNS doesn't accept queryService responses from avahi-daemon (#2015)
  • Add MFRC522 to supported libraries (#2044)
  • Update axTLS to ab516f7 (1.5.3+)
  • Mention ESP8266Ping library
  • ESP8266HTTPClient: fix duplicate Content-Length headers (#1902)
  • ESP8266HTTPUpdateServer: make HTTP Update Server more secure (#2104)
  • ESP8266WiFi: add virtual destructor to WiFiServer class (#2116)
  • ESP8266WiFi: fix error when calling WiFiServer::close more than once
  • ESP8266WiFi: WiFi event handling refactoring (#2119)
  • ESP8266mDNS: restart listening when WiFi STA is connected/disconnected (#1828)
  • ESP8266WiFi: allow DHCP client to be re-enabled using WiFi.config(0U, 0U, 0U) (#1896)
  • ESP8266WiFi: enable SO_REUSE in LwIP and WiFiServer (#1431)
  • ESP8266WebServer: make ESP8266WebServer::urlDecode public (#1419)
  • LwIP: sntp_localtime: return -1 in tm_isdst field (#2010)
  • ESP8266WiFi: fix for crash in WiFiClientSecure when WiFi is disconnected (#2139)
  • SD: Prevent WDT resets in SD library (#1815)
  • ESP8266WiFi: Fix issue when WiFi.begin(ssid, pass) is called right after WiFi.mode(WIFI_OFF)

2.3.0-rc1

11 May 06:45
Compare
Choose a tag to compare
2.3.0-rc1 Pre-release
Pre-release

Core

  • Fix NMI interrupt handler alignment
  • Update SDK to 1.5.3
  • umm_malloc: print block start address before heap corruption callback is triggered
  • If GDBStub library is used, break into gdb on assert and panic

Libraries

  • SNI support in WiFiClientSecure (#1285)
  • Update axTLS to 139914f
  • HTTPClient: return error when HTTPClient::begin is called with HTTPS URL without certificate fingerprint (#1941)
  • HTTPClient: fix default port not being set
  • HTTPClient: fix handling of chunked transfer encoding (#1975)
  • ESP8266SSDP: switch SSDP send arguments around
  • ESP8266WiFi: fix UdpContext::peek to return int (#1946)
  • ESP8266WiFi: fix WiFiSleepType_t values to match SDK ones
  • LwIP: use gcc-built LwIP by default (#1926)
  • LwIP: fix crash in igmp_start_timer (#1826)
  • HTTPClient: include non-standard ports in Host: header
  • ESP8266WiFi: Prevent WiFi config corruption (#1997 #1856 #1699 #1675)
  • GDBStub: fix section attribute for core gdbstub functions

Tools

  • Python 3 compatibility for get.py
  • Device side test library and test runner
  • Fix ARM toolchain files permissions (#2004)

2.2.0

18 Apr 08:26
Compare
Choose a tag to compare

Core

  • Leverage realloc() in String::changeBuffer()
  • Clean up core files
  • Add host side tests
  • Fix possible null pointer in umm_malloc
  • Remove "Upload Using" option from Tools menu
  • Move attachInterrupt and detachInterrupt into IRAM (#1734)
  • Implement strstr_P
  • Allow indefinite duration for tone()
  • Fix crashes when using tone()
  • Fix RF_MODE and ADC_MODE
  • Move micros, delayMicroseconds, millis to IRAM (#1326)
  • Fix pulseIn (#1072, #1149)
  • Accept both named constant and ADC channel number in analogRead (#1766)
  • Enable heap poisoning only when debug options are enabled (#1800)
  • Bootloader: don't touch RTC memory if it doesn't contain a valid command (#619)
  • Update SDK to 1.5.2 (#1653)
  • Clean up variants, fix digitalPinHasPWM definition (#1831)
  • Don't set RF mode on boot unless it was overridden
  • Change build.board property for boards which renumber pins like NodeMCU (#1878)
  • Fix Exception 2 when using printf or vprintf

Libraries

  • Update axTLS to 5b4be7d
  • WiFiClientSecure: implement connection timeout, fix connected method behavior
  • WiFiClient: fix write behavior when connection is closed by remote side
  • ESP8266HTTPServer: add font MIME types, fix #1601
  • ESP8266mDNS: add client support
  • Update SPIFFS to 82aeac6
  • Servo: move some functions into IRAM (#1742)
  • Update SoftwareSerial to version 3.1.0
  • ESP8266SSDP: change templates to include deviceType
  • ESP8266WebServer: handle more file types
  • SPI: add CPOL setting
  • ESP8266WebServer: Fix buffer overflow in ESP8266WebServer::authenticate (#1790)
  • ESP8266WiFi: fix undefined behavior in WiFiServer::setNoDelay (#1695)
  • Servo: use peripheral clock frequency when calculating FRC1 tick count (#1789)
  • ESP8266WiFi: avoid multiple instances of INADDR_NONE
  • Add LwIP binary built with gcc
  • ESP8266WiFi: Allow PSK instead of passphrase in WiFiSTA::begin
  • SPI: Fix SPI.transfer16() using wrong endianness
  • HTTPClient: decouple transport layer handling + save some RAM
  • ESP8266httpUpdate: decouple HTTPS overloads + save some RAM
  • Update and move lwIP headers, add options to use different lwIP build
  • ESP8266WebServer: wait for data to arrive
  • ESP8266WebServer: save RAM by moving response strings to flash (#1732)
  • SPI: Speed up SPI.writePattern()

Tools

  • Add ARM tools (#269)