Como clonar el firmware de un ESP32 a otro

Compartelo con otros!

¿Y si un día quieres cambiar el módulo en el que corres cierto servicio o gateway, o simplemente hacer una copia de seguridad por si un día se estropea?
para eso nos hace falta ver como hacer un «trasplante» de software, o dicho de otra manera: primero backup y luego flash.

esp32 soc
SOC ESP32 simple, sin integrar

Mi primer OpenMQTTGateway lo instalé en un módulo con ESP32 que tenía sin darle uso, pero ahora ya he recibido unos cuantos Wemos D1 ESP32 mini, los cuales son más pequeños y sin ningún periférico innecesario, así que puedo volver a tener el TTGO-CAM disponible (ahora que parece que hay firmwares de IPCam disponibles).

Modulo TTGO-Cam con carcasa
Modulo TTGO-Cam con carcasa

primero: el backup

Para hacer la copia del firmware actual, no he encontrado una herramienta con GUI para Mac OS que tenga esa opción, así que al final lo he tenido que hacer con esptool en el terminal:
1- tener Python instalado
2- ejecutar los siguientes comandos para instalar lo requerido:

pip install esptool
pip install pyserial

3- una vez instalado esptool y la librería de acceso serie, solo queda ejecutar la siguiente línea para la copia de la memoria flash:

python esptool.py -b 115200 --port /dev/cu.SLAB_USBtoUART read_flash 0x00000 0x400000 _flash_4M.bin

en vuestro caso, puede que necesitéis adaptar el nombre del puerto o el tamaño de la memoria flash (para windows, vale con poner el «COMx»), ejemplo para 1M, en el puerto COM6:

python esptool.py -b 115200 --port COM6 read_flash 0x00000 0x100000 flash_1M.bin

ya tenemos nuestro archivo flash.bin con la copia de respaldo.

segundo: el flasheo

Para flashear ESP8266 o ESP32, a mí me gusta usar ESPHome_flasher o NodeMCU Pyflasher, que son dos herramientas disponibles para macOS y que van directas al asunto, sin mucha complicación:

NodeMCU PyFlasher ESP32
NodeMCU PyFlasher ESP32


Por otra parte, también podríamos usar de nuevo esptool, que también es capaz de flashear (obviamente), con los siguientes comandos:

Para 1M Flash:
python esptool.py -b 115200 --port COM6 write_flash --flash_freq 80m 0x000000 flash_1M.bin 

Para 4M Flash:
python esptool.py -b 115200 --port COM6 write_flash --flash_freq 80m 0x000000 flash_4M.bin

A fin de cuentas, NodeMCU es solo una interfaz gráfica para esptool, ya que de hecho, el comando que ha ejecutado en la ventana de la captura de pantalla de un poco más arriba, es el siguiente:

esptool.py --port /dev/cu.SLAB_USBtoUART --baud 921600 --after no_reset write_flash --flash_mode dio 0x00000 /Users/josemanuel/Downloads/esptool-3.0/OMG-BLE_flash_4M.bin --erase-all

terminando: a ver si funciona

Este es el que va a pasar a encargarse de la función de gateway entre BLE y MQTT, y la carcasa en la que va a estar protegido:

Wemos ESP32 D1 mini
Wemos ESP32 D1 mini

Pues la manera más fácil de ver que realmente ha arrancado y se ha conectado a MQTT, es echando un vistazo a MQTT Explorer:

OMG MQTT Online
OMG MQTT Online

Estupendo!
un saludo

Deja un comentario