Publié le 14 février 2024 - par

ESP32 sur Linux Mint comment s’en sortir ?

A la demande d’un membre du FabLab UtoPi, je me suis penché sur la mise en œuvre de l’ESP32 (version chinoise avec un CH340/CH341 pour l’USB) sur un PC portable sous Linux Mint. Plusieurs problèmes se sont posés à ALain, et j’ai essayé de mon mieux de les résoudre. Dans cet article je note ce que j’ai trouvé avec les liens utilisés pour que ça puisse servir à d’autres…

ESP32 CH340 et Linix Mint : pas simple !

Bien sûr pour un Linuxien ces soucis sont classiques et j’avoue que j’avais fait le job sans trop m’en rendre compte. Avec Alain qui est moins à l’aise avec la ligne de commande, les répertoires utilisés etc. je me suis rendu compte qu’il serait bien de mettre ces infos à disposition de la communauté.
Je sais que sous Windows il y a d’autres soucis, il me semble que la dernière version des drivers CH340 teste si le circuit est un « vrai » ou un clone et ne fonctionne pas avec les clones, il faut alors re-installer une vieille version de driver pour windows.

Qu’est-ce qu’on constate ?

Plusieurs possibilités : quand on connecte la prise USB rien ne se passe, l’ESP n’est pas détecté, l’ESP est détecté mais on ne peut pas transférer les programmes écrits dans l’IDE Arduino sur  l’ESP, L’ESP est vu connecté sur un port USB mais se déconnecte très vite au bout de quelques secondes… et autres facéties. On comprend que l’utilisateur te dise « On m’avait dit que Linux c’est de la merde, mais là je le vois vraiment ».

Gardez votre calme… Déjà on a un bon point, c’est que votre « client » a déjà fait le premier pas en installant un Linux Mint et l’IDE Arduino. Finalement c’est pas un si mauvais bougre, non ?

Après chaque modif, même si c’est contraignant, pensez à bien REDÉMARRER
votre PC pour prendre les modifications en compte !

Installer le driver CH340 CH341

J’ai suivi cette explication en ligne pour installer. On commence par mettre le système à jour

sudo apt-get update
sudo apt-get upgrade

Ensuite dans un navigateur récupérez le code du driver sur ce lien.

Puis faites un clic droit et dézippez l’archive (Extraire)
Déplacez vous dans le dossier que vous venez de créer (CH341SER-master)

Pour moi c’est ce dossier mais il faudra adapter en fonction de l’endroit où vous allez dézipper.

cd CH431SER-master
make clean
make
sudo make load
sudo rmmod ch341  (ceci désinstalle le driver d’originequi ne fonctionne pas)
lsmod | grep ch34    (pour lister les drivers installés)

(s’il y a des erreurs lors de la création du driver, vérifiez que vous avez bien le nécessaire pour compiler : build-essential)

Déconnectez et reconnectez votre prise USB venant de l’ESP32

dmesg  devrait vous donner quelque chose comme ceci

Enlever brltty

La déconnexion de l’IDE est due à la présence de brltty : BRLTTY est un processus d’arrière-plan (démon) qui permet à une personne aveugle utilisant un afficheur braille rafraîchissable d’accéder à la console Linux/Unix (en mode texte). On v le supprimer

sudo apt-get remove –auto-remove brltty

Ajouter votre nom au groupe dialout

Si vous faites un ls -al tty* dans le dossier /dev, vous voyez que ttyUSB0 appartient à root et au groupe dialout. Vous pouvez vérifier si votre utilisateur Linux appartient à ce groupe en tapant la commande

groups

et regardez si dialout est dans la liste. S’il ne l’est pas ajoutez votre utilisateur :

(remplacez francois par votre nom d’utilisateur). Ceci devrait déjà améliorer l’accès au port USB.

Modifier les droits de ttyUSB0 lors de sa création

Après si vous voulez aller jusqu’au bout des choses, regardez les droits attribués au port ttyUSB0 un peu plus haut : vous voyez que les droits sont

c rw- rw- —

Si vous voulez en savoir plus sur les droits Linux j’ai écrit un article dessus.

Ici le c  indique qu’on a un périphérique de type caractères (il transfère les données caractère par caractère), que le propriétaire de ttyUSB0 qui est root a le droit de lire et écrire, que le groupe propriétaire qui est dialout a également le droit de lire et écrire, et que tous les autres n’ont aucun droit.

On peut forcer la valeur des droits quand on crée le port USB lors de la connexion de l’ESP :

Allez dans le dossier /etc/udev/rules.d  et créez un fichier 99-esp32.rules  :

Recopiez exactement ce qui est indiqué ici. Je n’ai pas fait de chichis, tous les ports tty seront en 666 (oui je sais c’est diabolique) et les droits seront donc  c rw- rw- rw-  donc tout le monde pourra lire et écrire. A éviter si votre machine est connectée et accessible. Pas de souci si comme moi elle sert en circuit fermé pour piloter une découpe laser ou programmer de l’Arduino… Après un reboot on peu vérifier :

Conclusion

Voilà avec ça vous devriez pouvoir résoudre les soucis que vous pourriez avoir avec les Arduino ou ESP32 que vous connectez à votre PC sous Linux Mint.

Après c’est juste une « mise en bouche » et si vous ça ne fonctionne pas il faudra chercher un par vous même. pas la peine de me mettre un message en disant « j’ai bien suivi ton tuto mais ça ne marche pas !« . Sans pouvoir suivre votre démarche complètement, je ne peux pas deviner s’i vous avez raté une étape ou si un message d’erreur a indiqué un problème dont vous n’avez pas tenu compte… Le dépannage ce n’est pas de la voyance !
Ca vaut pour le Raspberry Pi, mais ça vaut dans ce cas également…

Si ça vous a dépanné vous pouvez par contre mettre un petit mot gentil qui fait toujours plaisir quand on passe du temps à rédiger un article 😀

Sources

https://superuser.com/questions/431843/configure-permissions-for-dev-ttyusb0

https://unix.stackexchange.com/questions/141255/give-a-specific-user-permissions-to-a-device-without-giving-access-to-other-user

Installer les drivers CH340 : https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/linux

Drivers CH340 : https://cdn.sparkfun.com/assets/learn_tutorials/8/4/4/CH341SER_LINUX.ZIP

Drivers patchés : https://github.com/juliagoda/CH341SER

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

4 réflexions au sujet de « ESP32 sur Linux Mint comment s’en sortir ? »

  1. Ping : ESP32 sur Linux Mint comment s’en sortir ?

  2. Landais

    Même si cela ne m’a pas dépanné car pas besoin en ce moment, je sais que cet article pourra me servir un jour ou l’autre !
    Alors merci François, c’est toujours un plaisir de te lire.

    Eric

    Répondre
  3. remy

    Salut François,

    J’utilise Linux et la MINT  sur un portable de base (I3) depuis des années. En utilisant ARDUINO 2.3.2  sur un ESP32 WROOM 32,  après pas mal d’arrachage de cheveux…

    J’ai déverrouillé les ports simplement avec cette ligne de code : sudo usermod -aG dialout [Nom utilisateur].

    F8FHI-Rémy

     

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.