WT32-ETH01 hangs on boot after PSU power up

NOTE: This only fixes the problem where it can’t read the flash, because the bootstrap pins configured the device to use 1.8V for the on-board flash. Setting these three efuse should result in a final output line:

Flash voltage (VDD_SDIO) set to 3.3V by efuse.

You can get the python script from Espressif’s depot on github.

The relevant fuses on my WT32-ETH01:

Config fuses:

XPD_SDIO_FORCE Ignore MTDI pin (GPIO12) for VDD_SDIO on reset  = 1 R/W (0x1)
XPD_SDIO_REG   If XPD_SDIO_FORCE, enable VDD_SDIO reg on reset = 1 R/W (0x1)
XPD_SDIO_TIEH  If XPD_SDIO_FORCE & XPD_SDIO_REG, 1=3.3V 0=1.8V = 1 R/W (0x1)

WARNING!

You can PERMANENTLY mess up your WT32-ETH01 device (or any ESP32, really) by applying incorrect efuse settings. Once set to a non-zero value, it cannot be set back to a zero value.

WARNING!


I make no representation, other than it worked for me. Seriously, don’t do this if you aren’t willing to brick your device.

Presuming you can program your WT32-ETH01 using esptool.py...
Serial port WT32-ETH01
RTS EN
DTR GPIO0
RXD TX0
TXD RX0
You'll want to do something along the lines of:
python ./espefuse.py --port COMx burn_efuse XPD_SDIO_TIEH
python ./espefuse.py --port COMx burn_efuse XPD_SDIO_REG
python ./espefuse.py --port COMx burn_efuse XPD_SDIO_FORCE

Alternative I just learned about:

python ./espefuse.py --port COMx set_flash_voltage 3.3V