Problème téléversement Arduino Nano ESP32

Bonjour à tous,

Je sais d'avance qu'à l'intitulé de mon post beaucoup vont grogner en mode "encore un noob qui n'arrive pas à téléverser" mais malheureusement je ne sais pas comment intitulé plus clairement.

Alors en préambule, je téléverse régulièrement dans des cartes arduino, et sur le PC en question donc c'est un souci que je rencontre pour la première fois.

J'ai acheté une carte Arduino Nano ESP32 qui refuse de téléverser sauf si je fais la procédure suivante:

Les conditions : PC sous Linux Mint, Arduino IDE 2.1.1, cable USB de qualité avec tous les fils qui vont bien, Arduino ESP32 Boards 2.0.11 installé.

J'ai bien entendu tous les privilèges qui vont bien pour le port série (dialout).

Je vois bien la carte en /dev/ttyACM0 et lorsque je réussis via la procédure plus haut à mettre un firmware dedans, j'ai de la communication sur le port Série. Tout fonctionne mais je dois faire cette procédure à chaque fois !!!

J'essaye de téléverser de 2 façons différentes:

1/ Sketch -> Upload

J'obtiens

dfu-util: Cannot open DFU device 2341:0070 found on devnum 18 (LIBUSB_ERROR_ACCESS)
dfu-util: No DFU capable USB device available
Failed uploading: uploading error: exit status 74

2/ Sketch -> Upload Using Programmer

OSError: [Errno 71] Protocol error
Failed programming: uploading error: exit status 1

D'autre part j'ai essayé d'utiliser esptool.py avec le terminal, et j'arrive à me connecté à toutes mes anciennes cartes ESP8266 mais celle-ci refuse obstinément.

> esptool -p /dev/ttyACM0 flash_id
OSError: [Errno 71] Protocol error

cela fait 3 jours que je sonde internet à la recherche d'une solution mais je ne vois plus rien à faire. Soit la carte que j'ai reçu est défectueuse, soit j'ai fait une mauvaise manip au départ et j'ai effacé le bootloader mais à ce moment là pourquoi il ne reste pas quand je fais la manip en question ?

Bref je suis sec, et j'espère que c'est un truc tout bête et que vous pourrez allégrement vous moquez :smiley: :smiley:

Bonjour @romu71

Tout d'abord rassures toi : aucun risque d'effacement du bootloader , il est définitivement gravé dans laROM de l'ESP32-S3

je n'ai pas cette carte et ne prévois pas de l'ajouter à ma collection de cartes à ESP32, ESP32-C3, ESP32S2 et ESP32-S3

je remarque au niveau de son schéma , contrairement à tour ce que j'ai vu à ce jour, l'absense de gestion de GPIO0 par bouton poussoir et/ou par transitor.... il ya donc une combine que je ne connais pas pour forcer temporairement l'ESP32-S3 en mode bootloader .
(Le bootloader s'active si GPIO0 est à la masse lors de la mise sous tension ou lors d'un Reset)

Bonjour @al1fch ,

Sur les autres modèles Arduino ESP32 il y a une broche de télech à activer pour la programmation ? Effectivement c'est peut être de ce côté là que je dois chercher.

Il n'y a pas beaucoup de tuto ou ressources concernant cette carte, on trouve plus des exemples avec les cartes ESP32 originelles.

Tout utilisateur d'une carte Arduino récente essuie nécessairement les plâtres....et participe à la finalisation du produit :grinning:

Un sous forum anglophone est dédié à cette carte dotée d'un ESP32-S3 sous capot NORA UBLOX

En attendant je te propose de câbler un bouton poussoir 'boot' entre GPIO0 et la masse (un pull up interne est actif sur ce GPIO0)

Avant tout téleversement tu l'utilises pour activer manuellement le boot loader
1appui maintenu sur ce BP BOOT,
2 appui bref sur le BP Reset,
3 relâchemnt du BP Boot

Effectivement il manque un bouton BOOT sur cette carte, à câbler comme dit :


De plus comme cette carte ne comporte pas de convertisseur USB / série, vu que l'USB est natif, impossible de câbler la circuiterie classique de reset sur le DTR, il faut donc faire à la main.

Un bouton sera utile comme dit al1fch.

Tout fonctionne à présent, et sans ajout de bouton sur GPIO0.

J'ai juste ajouté une règle dans le dossier /etc/udev

/etc/udev/rules.d/99-arduino.rules

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", GROUP="plugdev", MODE="0666"

J'avoue que je ne comprends pas pourquoi cela a changé quelque chose !! mais si je lis le groupe dont mon port fait partie:

ls -l /dev/ttyACM0

j'obtiens


crw-rw-rw-+ 1 root plugdev 166, 0 août  26 13:50 /dev/ttyACM0

mais c'est étrange, il me semblait l'avoir déjà fait et avoir trouvé dialout... d'ailleurs il y a quelques minutes entre 2 redémarrages de session j'ai à nouveau eu dialout comme groupe...

Par contre je suis obligé de faire Sketch -> Upload Using Programmer, impossible de se passer de esptool mais cela parait normal.

Merci pour ce retour qui rendra service

rien n'empêche d'appartenir aux deux groupes et plugdev semple ici être décisif pour une activation atypique du bootloader

le strap ou BP 'boot' sur GPIO0 peut peut être servir comme 'seconde chance' :wink:

En tout cas merci pour votre aide, j'ai trouvé l'info dans la partie anglophone du forum :wink:

Il y a probablement une gestion du reset / boot, realisee dans ce cas, et pas avec le televersement habituel.
Ce qui est étrange vu que ce dernier utilise aussi esptool.

je suppose que ça expmloite un nouvelle fonctionalité dont il est question ici

De ce que j'ai compris, en lisant le lien donné par @al1fch un peu plus haut, la carte apparaît sous 2 profils différents DFU et CDC. Pour télécharger, c'est donc DFU et il faut appartenir au groupe plugdev pour ça.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.