Use this forum to chat about hardware specific topics for the ESP8266 (peripherals, memory, clocks, JTAG, programming)

User avatar
By Jaime García
#63014 Hello everyone!

I don't know if this is the correct forum to post this, but my board turned out to be quite specific.

Recently I got an Arduino UNO WiFi board, which is apparently an Arduino UNO with an ESP8266 module slapped in.

The thing is that when I make a custom firmware for the ESP8266 with the Arduino framework, it doesn't work.
I've studied the schematic (http://download.arduino.org/products/UNOWIFI/Arduino-UNO-WiFi-V4_AF1.pdf) as deeply as my understanding of electronics let me, and I find no particular reason for this not to work.

I tried several softAP examples, and serial communication, but no luck. No AP is broadcasted, and I get no response from the chip. (serial or anything).

It's not a flashing issue because I can successfully load the original esp-link firmware from Arduino.org, and the firmware from jeelabs the former is based on, but no binary crafted by me will work. (haven't got the AT firmware to work either). I tried every tool: Espressif esptool, PlatformIO flashing toolchain (which i figure is igrr's esptool), and flashing from the Arduino IDE (which i figure is igrr's esptool again).

I'm stuck, and also confused for the fact that esp-link is 4 binaries that you have to flash into particular addresses, but binaries produces by the arduino core are single.

Has anyone tried to tinker with this board? Is there a reason an Arduino core binary wouldn't boot?

Thank you in advance.
Last edited by Jaime García on Sun Apr 02, 2017 5:29 am, edited 1 time in total.
User avatar
By Jaime García
#64508 It turns out that the Arduino UNO WiFi is one of the few esp8266 boards that mount a 40MHz crystal instead of 26MHz, so everything timing-related didn't work: Memory reading, Serial transmission, WiFi transmission.

Changing the line [48] = 1 to [48] = 0 in cores/esp8266/core_esp8266_phy.c solves the problem.

There is a pull request that turns this into a -D flag, but for now the Arduino framework doesn't support 40MHz crystals unless you modify it.