[Résolu] Impossible de flasher des Lolin ESP32 mini (le s3 et le s2)

Mon problème

Bonsoir
J’appele au secours ceux qui ont réussi à programmer quoi que ce soit sur un Lolin ESP-32 S2 mini (contient ESP32-S2FN4R2). Voire même sur un Lolin ESP-32 S3 mini
Voilà 3 jours que je tente au moins un « blink ».
J’ai essayé :

  • sur 2x s2 mini et 1x s3 mini.
  • depuis mon PC Windows 10
  • depuis une VM Virtualbox Windows 10 sur un HP Gen 8
  • depuis une VM Virtualbox hassio.os sur un HP Gen 8
  • depuis Web-ESPhome depuis mon PC puis la VM Windows
  • depuis un container ESPhome installé sur mon NAS DS218+ (y compris après lui avoir obtenu un certificat let’s encrypt pour être en https, au travers du reverse proxy)
  • toutes les manips du style « reset+boot puis relâcher reset » ou « reset puis boot » ou « maintenir boot ». J’en ai les extrémités des doigts usées.

J’ai aussi tenté le flash depuis ESPtool sur les machines Windows:
esptool --port COM6 --baud 57600 write_flash -z 0x1000 firmware-LOLIN_S2_MINI-v1.20.0-536-g0e5add455.bin … Ceci sur les machines listées après et là-aussi avec toutes les manips qui font mal aux doigts.

Sur les machines (le PC, le windows serveur du GEN8, la VM Windows sur le GEN8), j’ai essayé avec les drivers :

La seule chose que j’ai réussi sur les deux S2 mini, c’est envoyer l’exemple blink.ino (un peu modifier pour identifier par les flashs lequel est le 1er Lolin, le 2ème, etc).
Bref, sur Arduino, c’est ok. Mais sur ESPhome, rien à faire ! Ni un .yaml ni le PREPARE FOR FIRST USE. Rien du tout !!!

J’ai aussi tenté le flash depuis ESPtool sur les machines Windows:
esptool --port COM6 --baud 57600 write_flash -z 0x1000 firmware-LOLIN_S2_MINI-v1.20.0-536-g0e5add455.bin … Ceci sur les machines listées après et là-aussi avec toutes les manips qui font mal aux doigts.

Bref, Arduino oui, donc les cartes ne sont pas mortes physiquement, mais ESPhome impossible…

Pour bien identifer le problème : ça a marché presque au 1er coup sur un ESP32-S mais pas mini (celui avec 2 ports USB-C). J’ai juste dû changer de port USB sur cette carte après un 1er essai raté.

J’ai bien parcouru les sujets similaires sur HACF avant de me décider à poster (au passage merci à @DavidFromRouen pour sa ruse board: lolin_s2_mini que je n’avais vue nulle part illeurs, même pas sur les site anglo-saxons). Quand la communication fonctionnera sur mes Lolin

J’ajoute un exemple de log (sur Lolin ESP32-S3 mini et depuis ESPhome sur Hassio) :

INFO ESPHome 2024.3.1
INFO Reading configuration /config/esphome/s3lolin.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing s3lolin (board: esp32-s3-devkitc-1; framework: arduino; platform: platformio/espressif32@5.4.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 2.1.3
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.1.0
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.4
RAM:   [=         ]  12.5% (used 40844 bytes from 327680 bytes)
Flash: [=====     ]  46.4% (used 850993 bytes from 1835008 bytes)
========================= [SUCCESS] Took 8.21 seconds =========================
INFO Successfully compiled program.
esptool.py v4.7.0
Serial port /dev/ttyACM0
Connecting......................................
ERROR Running command failed: Failed to connect to ESP32-S3: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
ERROR Please try running esptool.py --before default_reset --after hard_reset --baud 460800 --port /dev/ttyACM0 --chip esp32s3 write_flash -z --flash_size detect 0x10000 /data/build/s3lolin/.pioenvs/s3lolin/firmware.bin 0x0000 /data/build/s3lolin/.pioenvs/s3lolin/bootloader.bin 0x8000 /data/build/s3lolin/.pioenvs/s3lolin/partitions.bin 0xe000 /data/cache/platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin locally.
INFO Upload with baud rate 460800 failed. Trying again with baud rate 115200.
esptool.py v4.7.0
Serial port /dev/ttyACM0
Connecting......................................
ERROR Running command failed: Failed to connect to ESP32-S3: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
ERROR Please try running esptool.py --before default_reset --after hard_reset --baud 115200 --port /dev/ttyACM0 --chip esp32s3 write_flash -z --flash_size detect 0x10000 /data/build/s3lolin/.pioenvs/s3lolin/firmware.bin 0x0000 /data/build/s3lolin/.pioenvs/s3lolin/bootloader.bin 0x8000 /data/build/s3lolin/.pioenvs/s3lolin/partitions.bin 0xe000 /data/cache/platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin locally.

Bonjour,
tu peu regarder ce post WEMOS LOLIN ESP32-S3 Mini V1.0.0 (S3FH4R2) - ESPHome - Home Assistant Community

esphome:
  name: s3-mini-usbc
  friendly_name: s3-mini-usbc
  platformio_options:
    platform: https://github.com/platformio/platform-espressif32.git
    board: lolin_s3_mini
    framework: espidf
    board_build.flash_mode: dio

esp32:
  variant: esp32s3
  board: lolin_s3_mini
  framework:
    type: esp-idf
    version: latest

Je pense que le soucis avec ESPHome est USB_MODE qui est mal gérer.

Ta c’est méthode avec Adafruit ESPTool pour le S2 Mini:

1 « J'aime »

Ma réponse à l’air un peu bête, mais as-tu essayé avec le même câble USB durant toutes tes tentatives ?
Peut-être que ton câble commence à avoir des faux contacts ?

Merci à tous les deux !
Pour @DavidFromRouen : j’ai oublié de le préciser mais j’ai aussi changé de cables (3 cables essayés sur le 1er Lolin, mais depuis que ça marche sur Arduino IDE, j’ai laissé ces cables sur chacune des cartes que je connecte alternativement, éventuellement en changeant de port USB sur une même machine).

@WarC0zes : ça, j’ai pas essayé. Vu l’heure (02:19), je vais d’abord dormir et j’essaie ça demain (sympa les vacances).

Pour info: le dernier upload par Arduino IDE n’a même pas renvoyé l’erreur de « reset cause GPIO… ». J’ignore pourquoi.

Je laisse sur pastebin le sketch envoyé et le log arduino idoine

trop impatient, j’y suis allé…

  • Sur la vidéo, il utilise un FTDI en plus du cable USB, j’ignore pourquoi (faudrait que je m’attarde plus en regardant, peut-être juste pour alimenter car il y a du monde sur sa carte).

  • Mais effectivement l’outil de Adafruit me rend l’espoir. Un extrait de son log :

Connecting...
Connected successfully.
Try hard reset.
Chip type ESP32-S2
Connected to ESP32-S2
MAC Address: 80:65:99:4F:3E:A0
Uploading stub...
Running stub...
Stub is now running...
Detecting Flash Size
FlashId: 0x164020
Flash Manufacturer: 20
Flash Device: 4016
Auto-detected Flash size: 4MB

Le firmware, je l’ai : firmware-LOLIN_S2_MINI-v1.20.0-536-g0e5add455.bin.

Mais je mets quoi comme offset @WarC0zes ? (voir screenshot ci-dessous)

Il me semble avoir lu 0x100 quelque part avant-hier, mais je sais plus où et ne suis pas sûr de la valeur.
Allez, là : dodo et à demain de vous lire j’espère.

0, laisse par défaut :wink:

J’ai flasher une ESP32-S3, avec OpenHASP.

select the firmware and type 0 in the box.

Dans la vidéo, offset 0
image

Wouahou !!! @WarC0zes tu m’as sauvé !!! Un énorme merci !!!
Donc je récapitule pour ceux qui passeraient ici avec un problème identique

Type de carte : Lolin S2 mini v1.0.0 original wifi Iot ESP32 - s2fn4r2 (lu sur l’étiquette de l’emballage)

  1. faire un new device de type ESP32-S2 depuis ESPhome (chez moi, un container docker accessible en local par http://ip_de_mon_nas:6052).

  2. choisir skip en bas de la fenêtre qui affiche la clef (qui sera utile pour l’adopter dans HA)

  3. sur les 3 points, cliquer install

  4. choisir la dernière option Manual download

  5. patienter pendant la compilation puis enregistrer le fichier dans un répertoire. Chez moi, il s’est appelé automatiquement lolins2minarduino-factory.bin

  6. Aller sur Adafruit ESPTool, appuyer sur reset + boot puis relâcher reset. Cliquer sur connect en haut à droite

  7. choisir le fichier précédent, laisser l’option offset à sa valeur par défaut (h0) puis cliquer sur Program

  8. ça transfère très vite (même pas eu le temps de le voir passer). Voici l’exemple du log obtenu

Running stub...
Stub is now running...
Detecting Flash Size
FlashId: 0x164020
Flash Manufacturer: 20
Flash Device: 4016
Auto-detected Flash size: 4MB
Image header, Magic=0xFF, FlashMode=0xFF, FlashSizeFreq=0xFF
Writing data with filesize: 928704
Erase size 928704, blocks 57, block size 0x4000, offset 0x0000, encrypted no
Took 11902ms to write 928704 bytes
Erase size 0, blocks 0, block size 0x4000, offset 0x0000, encrypted no
To run the new firmware, please reset your device.
  1. comme indiqué, cliquer sur reset et c’est magique : il apparait online dans ESPhome.

  2. il apparait automatqiuement dans toutes mes instances de HA (celle de production et celle de dev).

  3. une fois adopté, le voici dans HA

Allez, maintenant je vais en faire quelque chose de ces S2-mini et S3-mini (test des LD2410 et LD2450, et remplacer certains vieux capteurs ESP8266 programmés en arduino mais qui plantent parfois).

2 « J'aime »

Nikel !
j’ai mis ton tuto en signet, car ça va servir a d’autre.

Pour mettre ton sujet en résolu, faut cocher la case solution sur le post adéquate.

Merci ! Je croyais que changer le sujet avec [Résolu] suffisait… Je n’avais jamais remarqué le bouton solution, honte à moi :pensive:.