Description
Arduino Core v2.6.0 for ESP8266 was just released: https://github.com/esp8266/Arduino/releases/tag/2.6.0
There appear to be quite a few bugfixes that may help stability.
Some highlights:
-
ets_intr_lock
nested; from description appears to fix ESP8266 getting unreachable after a while - Ets intr lock nest esp8266/Arduino#6484, Esp8266 IP Address not reachable after a while esp8266/Arduino#2330 -
Add option for slower flash chips, behavior seems to kinda be similar to the infamous ESP8266 Various Connection Issues issues#455; plus the fact that it depends on fw size/alignment would finally make sense; idk, don't want to get my hopes up too much yet - Add 20/26MHz Flash frequencies for slow/cheap flash chips on the Generic ESP Board esp8266/Arduino#6552
- This appears to be an opt-in. How do we make this user-settable? Maybe we can do something like with flash mode: Manual upload is always with worst (dout) setting, but any subsequent OTA auto-overwrites the flash mode to the correct one.
-
i2c transaction fix: Double I2C read in one transaction skips a clock pulse (#5528) esp8266/Arduino#6654
-
NONOS-SDK updated to 2.2.x, and appears to be the new default; TODO evaluate stability, check tools/platformio-build.py - nonos-sdk: update to latest version 2.2.x branch, commitlog added in tree esp8266/Arduino#6257, Switch default FW to "2.2.2-dev(38a443e)" (menu:2.2.1+100) esp8266/Arduino#6272, FW: use NONOS-SDK branch 2.2.x from 2019-10-24 by default esp8266/Arduino#6724
Potential changes needed for:
- toolchain update - docker images - Upgrade to 2.5.0-4 toolchain w/improved pgm_read_x, C++ exceptions esp8266/Arduino#6273
- timezone handling, upstream now has its own copy of IANA database. But with ESPHome that part is handled by python generator, maybe that messes with the timezone code. time: import IANA timezone definitions, expose SNTP API esp8266/Arduino#6373
- attachInterruptArg is now public with a changed signature, probably esphal.cpp needs to be updated. - Bugfix: attach interrupt (#6049) esp8266/Arduino#6048
- LEAmDNS can handle multiple net interfaces now, we can remove the hack in util.cpp - mDNS: restriction to a single interface esp8266/Arduino#6224
- PSTR macro updated, maybe needs some changes to logger - Move all PSTRs to own section, allow string dedup esp8266/Arduino#6565
May want to copy some bugfixes downstream:
- WiFi STA static IP fix, not sure what exactly/why yet - lwip2: (re)fix setting static ip address esp8266/Arduino#6194
- Changes to Software Serial - https://github.com/esp8266/Arduino/pull/6722/files
Other useful stuff:
-
precache()
(like prefetch for instruction memory) - precache() - preload code into the flash cache. esp8266/Arduino#6628 - umm_malloc update - Update core with upstream umm_malloc esp8266/Arduino#6438
- NAT support; looks like wifi repeating is easy now; TODO evaluate stability and RAM usage - new network feature: NAPT (widely known as NAT) esp8266/Arduino#6360
Misc:
- getCycleCount forced to be inline (means that micros() might have had an issue in ISR context before) - Inline ESP::getCycleCount() to make it safe to call from ISRs esp8266/Arduino#6477
- memory fence for xt_rsil (disabling interrupts) - Added memory fence to xt_rsil(). Without this the compiler may use esp8266/Arduino#6301
- Related: We should probably change the
disable_interrupts()
+enable_interrupts()
function to be a scoped lock likeesp8266::InterruptLock
. Makes code cleaner
- Related: We should probably change the
- Fix for random LEAmDNS crash on startup - MDNS: fix random crash on startup esp8266/Arduino#6261