Replacing ESP8285 firmware


Is it possible to program the firmware of the ESP8285 MCU on the Sipeed MAix Go board ? i’d like to do ad-hoc/mesh networking and don’t think this is possible with the stock firmware.
(as far as I know, it involves holding the ESP’s GPIO0 low at boot to put it into programming mode, but I’m not sure if this pin is connected to anything, wasn’t able to find any schematic)


Hi, the GPIO0 is at the corner:


Thank you, that’s beautiful!


Cautionary tale:

I have tried this, and it worked, … somewhat anyway.

I connected a USB-to-serial dongle to pins 6 and 7 of the MaixGo (wifi Tx and Rx). It seems that Rx needs to be connected to the Rx and Tx to Tx (or did I mix them up double?).

Then I used to read data (switch board off, connect esp GPIO 0 to GND, switch board on). This worked, but I always got errors before it could read the whole flash. Using this (insert time.sleep(0.1)) helped. But by that time I had poked at the little GPIO 0 piece of copper with a jumper wire a lot of times and decided to solder a piece of wire to it such that I could easily connect it to ground.
Unfortunately because of the poking and soldering the little piece of copper has disappeared!

The board and esp8285 are still fully functioning, but I can’t experiment with custom firmware.

So, on to other fun things to do with the MaixGo.


right step is use tweezers short GPIO0 and the shielding case to enter the download mode.
even though the pad is gone, you can use OTA to update the firmware
or you can remove the shielding case, and there have R connect to GPIO0


I have popped the lid! And it is still working!
In the image I have indicated what I think is GPIO0. Is this correct?

Which resistor is connected to GPIO0?


Ouch—thanks for the warning. I’ll try to avoid poking with it too much, I guess with an UART pass-through program running on the K210 it’s not necessary to connect anything else to the Rx/Tx pins.

As for the GPIO0 pin itself, would it work to wire it permanently to a free GPIO (say, IO9) then programmatically pull it low/high using GPIO or FPIOA, instead of manually bridging it to GND every time?


you are right, and this R pad is also GPIO0


btw, what is WIFI_EN (pin 8) connected to on the ESP8285 ? or does it power off the entire chip through external logic ?


yes, please refer to esp8285’s datasheet. It can poweroff esp to save power


yess couldn’t find any mention of a WIFI_EN pin in the ESP8285 data sheet, only briefly in the Sipeed M1w Specifications, so wasn’t quite sure what it did, it could have been a kill-switch for the antenna

but indeed it powers down the whole chip, which is great as gives a way to induce a reset of the ESP module from the K210 programmatically


Hi, PIN7 of esp8285 is en pin, and same function as RST