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

User avatar
By panoss
#84321 I 've used all GPIOs of my NodeMCU and I need an extra GPIO.
So I'm trying to program it in DIO mode(so I' ll be able to use GPIO10(S3)).
In Arduino IDE, when I select 'NodeMCU 1.0' I have no option for 'Flash Mode' (from which to select DIO mode).
So I changed board to 'Generic ESP8266'.
With this I have an option 'Flash Mode' where I can choose DIO mode.
But it fails to program the NodeMCU.

Is there a solution for this?
User avatar
By StanJ
#84516 If it won't program in DIO mode, that's due to the flash chip on the board. You're pretty much stuck at that point, unless you want to desolder the RF can and replace the flash chip.

Even if you DO replace the chip, you'll need to find an appropriate flash that reliably works in DIO mode, and then lift pin 3 (/WP - IO2) and wire it to VCC (pin 8). GPIO10 is wired to the /WP pin, and lifting it when you replace the flash is safer than cutting the trace to the flash chip.

That *might* make GPIO10 available, no guarantees. The Winbond datasheet isn't really clear on how you tie off the 'unused' 2 pins in DIO mode. I haven't tried it myself; I'd use a port expander if I needed more pins. I don't think this trick will work to recover GPIO9, sorry. If I were doing it, I'd attempt tying the /HOLD - /RST - IO3 pin on the flash over to the ESP's nRST line, but that might not work. Here's a snapshot of the schematic of the AI-Thinker ESP12F module schematic, so you can see some of what's under the RF can:


Their schematic is incomplete, as it doesn't show any of the OTHER connections to the flash chip. ;)