Newest ESP8266 version


I wanted to compile my sketch for an ESP8266 (NodeMCU 1.0 board), which worked fine in Arduino IDE. Related to the included library PageBuilder I always get the error: "Error at line 76 in file DateStrings.cpp: 'strcpy_P' was not declared in this scope"

As I looked for a solution I found out, that this seems to happen because of the used core for compiling for the ESP8266. The version used in UECIDE is 2.4.1-9 but the newest version would be 2.5.2. Is there the possibility to upgrade to a newer version?


Sure thing. It'll take some

Sure thing. It'll take some time, they seem to have changed the libraries to 1.5.x format. Also they are notorious for randomly changing vital core things meaning I have to spend time figuring out what has changed and what commands need tweaking to compensate.

It's lagged behind because they have "forgotten" to update the json file on github for the past 2 years.

Great! This time they have

Great! This time they have just randomly changed the names of all the options for the board settings. No reason to do that - they just decided to. Cnuts!

Epic Facepalm

Epic Facepalm
Epic Facepalm

The maintainers of the ESP8266 Arduino core are complete retards. I'm sorry, but there's no other word for them.

Who in their right mind #include's a file from a library from within the core?! And using a core-relative path at that!


So... at the moment, the answer to your original request has to be "No, sorry, I can't". The Arduino core is too broken to be used on anything except the Arduino IDE.

Hi matt,

Hi matt,

thank you for having a further look into the issue (and being that fast!). It's a pity that the problem is not easy to solve. Unfortunately I will have to stick with the Arduino IDE (which I can't get to work with my new Linux Mint distribution by now...) for my ESP8266 projects then.

Thank you!

Best regards

I have managed to get it to

I have managed to get it to compile a blank test sketch with a bit of fudging and a tweak to the internals of UECIDE. So I can, kind of, get it going, but you'll have to wait for the next release of UECIDE to use it.

Ok, I managed to get a fix to

Ok, I managed to get a fix to that included in the upstream ESP8266 core repo - but in doing so I found another of the same ilk - and this one is far more insidious. The Updater, which is in the core, relies on aspects of the ESP8266WiFi library, which of course isn't in the core. But... get this... the ESP8266WiFi library relies on aspects of the Updater. So the Updater can't really be extracted out into a separate library because the WiFi library needs part of it. And the WiFi can't be embedded in the core - that would just be silly.

The whole design of this core is just inside out and a horrible tangled mess.

Hi matt,

Hi matt, thank you for your work on this. This sounds like really poor design. Sorry, that you had to deal with this.

It's ok. I enjoy it really ;)

It's ok. I enjoy it really ;)

Still, good things come from bad: they are actively refactoring the core and libraries to fix these messes now. It may take a while for them to get it all done and done right, but it'll be an improvement in the long term.

I'm also adding more things

I'm also adding more things to the IDE to better support working with ESP modules - at the moment I'm working on a generic filesystem creation system - making images of FAT12/16/32 and SPIFFS filesystems from within the IDE tree. I have it making the images quite nicely now (though not automatically - it's a manual operation at the moment) - I just need a way to be able to get them on to the target device in a generic way. Maybe I need to enhance the programmer subsystem to allow multiple target types within a single device (main flash, filesystem flash, bootloader flash, etc).