Files
arduino-home-assistant/docs/ESP8266-LINKER-WORKAROUND.md
T

1.6 KiB

ESP8266 Postmortem linker workaround

The ESP8266 Arduino framework pin used by the DeviceFramework, WiFiManager, DFTE, and ArduinoHA maintained builds is intentional:

platform_packages =
    platformio/framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git#521ae60a89e64bb0d1eb7a0b7addf620ced5cad3

That upstream commit fixes Postmortem's large-jump failure, dangerous relocation: j: cannot encode. It changes the restart wrapper to use a relaxed jump and adds an EPC1 address check. The failure is a framework linker/runtime-support issue, not an ArduinoHA or application-source error.

ArduinoHA's root pio test -e esp8266 environment and every guided ESP8266 PlatformIO example now use this same snapshot. There is no root-test exception that can hide a linker regression from the example contract.

Keep this exact framework snapshot in ESP8266 environments that need the maintained test contract. It is unrelated to ESP32, whose pioarduino platform selects its framework and compiler as a unit. Do not replace the SHA with a version range: remove or advance the pin only after an upstream release includes the fix and the affected large firmware has compiled successfully. In particular, changing the ESP32 validation lane does not justify changing this ESP8266 pin.

The corresponding ESP32 Core 3 pin and shared PlatformIO-cache recovery steps are documented in DeviceFramework's toolchain guide.

Back to the documentation map.