Description
After having fought for 2 weeks to have a specific firmware running on an ESP01 module, I think I have nailed down an issue and it seems to be in the Linux 64 bits version of the distributed ESP 2.0.0.
The fimware I tried to run is https://github.com/luc-github/ESP8266
It's a wifi/web interface for 3D printers. By default, it will open an AP with name ESP8266 (pwd: 12345678
, IP 192.168.0.1
). Connecting there and authenticating yourself with login admin
and password admin
, you will be able to select various web pages including a Station
and Access point
web page.
I compiled and flashed the firmware (and associated SPIFFS) on a new (black) ESP01 with 1MB + 128kB SPIFFs using:
- Arduino 1.6.5, directly installed from the 64 bits tar.xz linux archive on Ubuntu Wily with ESP 2.0.0 installed from the Board Manager using the json file. and the SPIFFS uploader.
- Arduino 1.6.5, directly installed from the Windows installer on a VBox Windows 7 instance (running on the same Ubuntu machine) with ESP 2.0.0 installed from the Board Manager using the json file and the SPIFFS uploader.
On the Linux version, the firmware compiles, uploads fine, and the SPIFFS file too. The resulting ESP module runs very imperfectly. It systematically oops (exception 3) when either the "Station" or the "Access Point" web pages are accessed after authentification. I initially thought I had found a heap corruption bug then found many people advising for super stabilized hardware.
After 2 weeks of removing long wires, soldering 100nF decoupling and adding 470µF capacitors as well as 10 kOhm pull-up resistors, upgrading the power source to an external regulated source, changing the FTDI, buying new modules from different sources (all 1MB black), comparing new modules, I was surprised to see that...
From the Windows 7 version, the resulting ESP firmware runs fine!
It looks like there are discrepencies between the Windows and Linux 64 bit versions of the distributed ESP 2.0.0 packages. The Linux version is sometimes older and apparently still contains bugs that the Windows version does not.
By comparing the trees of both packages it appears that the hardware folder looks identical in both versions but some includes files in the tools folders have different versions. For example, the pthreads.h is 1.8 for linux and 1.9 for Windows. This leads me to think that thre may be libraries or binaries that are not of the same versions either. My current assumption is that this explains the problem under Linux. This may affect all Linux users AFAIK.
I haven't been beyond this point and I do not intend to but I will be available to produce more evidence if needed (mostly during week-ends). Just ask.