Journal [Tuto] Compiler Marlin sur le Raspberry Pi (spécial Ender-3)

Posté par  . Licence CC By‑SA.
Étiquettes :
6
14
fév.
2023

Sommaire

Bonjour très cher Nal,

Si je t'écris aujourd'hui, c'est pour te raconter comment j'ai réussi à compiler Marlin pour mon imprimante 3d, sur mon Raspberry Pi. (Pour info, Marlin est un firmware très utilisé pour les imprimantes 3d, sous licence GPL.) Puisse ce journal servir aux générations futures.

Ce tuto/journal prend comme exemple une Ender-3 v4.2.2 de Creality, avec un CR Touch. Adaptez bien la configuration à votre imprimante. Votre imprimante doit supporter les mises à jour de firmware par carte SD, câble USB, Wi-Fi, … et disposer d'une carte mère 32 bit. Certaines imprimantes comme l'Ender-3 1.1.4 nécessitent une carte Arduino et des tas de choses spécifiques.

On émet l'hypothèse que vous allez lire tout le tuto avant d'essayer de le reproduire.

Nécessaire

  • Le nom du fabricant de votre imprimante (Creality)
  • Le modèle de votre imprimante (Ender-3)
  • La révision de la carte mère (v4.2.2)
  • Le chipset de la carte mère (STM32F103RET6)

  • Visual Studio Code (pleurez mes enfants, mais je n'ai pas pu faire sans), installable avec sudo apt install code

  • L'extension PlatformIO, installable depuis VSCode, dans l'onglet extension, un logo avec une tête de fourmis orange

  • L'extension Marlin Auto Build, un logo bleu-vert avec un narval

  • Le code source Marlin, téléchargeable ici

  • Les fichiers de configuration qui vont avec.

Vous aurez besoin de plusieurs Go de libre, genre 2 ou 3, pour l'installation et la compilation.

Téléchargement des sources

Vous avez le choix entre plusieurs versions de Marlin :

  • Release
  • LTS
  • Nightly
  • Bugfixe

Personnellement, je recommande la Release, sauf si vous rencontrez des erreurs, alors essayez la Bugfixe.

Une fois votre version choisie, allez à la page de téléchargement de Marlin, cliquez sur le lien dans la colonne Download, puis dans celui de la colonne Configurations. Vous vous retrouvez sur un repos GitHub, cliquez sur le bouton vert < > CodeDownload ZIP.

Extrayez les deux archives :
- Pour le code source, renommez le dossier Marlin-x.x.x dans lequel vous avez tous les dossiers et fichiers en MARLINFIRMWARE, tout en majuscules attachées. C'est votre dossier de travail.
- Pour la configuration, récupérez les fichiers adaptés à votre imprimante dans le dossier config/examples/<fabricant>/<modèle>/<carte mère>/, soit pour moi config/examples/Creality/Ender-3/CrealityV422/. Copiez les fichiers dans le dossier MARLINFIRMWARE/Marlin, en remplaçant les fichiers existants.

Mise en route de VSCode

Installez Visual Studio Code avec la commande sudo apt install code.

Ouvrez VSCode et cliquez sur l'icône à gauche montrant quatres blocs empilés pour ouvrir le volet des extensions, et recherchez PlatformIO dans la barre de recherche. Son logo est une tête de fourmi orange sur fond blanc. Quand vous l'avez trouvé, cliquez sur le bouton installer.
Faites de même pour Marlin Auto Build, un logo avec un narval noir sur fond bleu-vert.

Attendez quelques instants que les extensions s'installent, un petit message en bas à gauche doit vous demander de redémarrer VSCode. Fermez VSCode, et rouvrez-le. Cliquez sur l'onglet FichierOuvrir un dossier→ Votre dossier MARLINFIRMWARE → Ouvrir le dossier. Attendez un moment que les extensions démarrent et se mettent en route et c'est partit pour la partie amusante !

Configuration de votre Marlin

C'est maintenant que vous pouvez laisser libre cours à votre créativité et à vos envies !

Nous allons Vous allez modifier les fichiers Configuration.h et Configuration_adv.h du dossier Marlin.

Voici quelques petites règles d'or :

- En cas de doute, lire les commentaires dans le code,
- En cas de doute, voir la documentation,
- En cas de doute, laisser le choix par défaut.

Bien. Je vous recommande de commencer par lire la documentation, voir peut-être d'autres tutos … car je ne compte pas détailler trop ici le processus de configuration.

Néanmoins, sachez que les lignes commençant par // sont des commentaires, celles qui commencent par #define sont des déclarations.

Pensez à décommenter les fonctions liées à vos accessoires supplémentaires comme le BL Touch. Une petite aide en anglais pour la configuration basique.

Vous pouvez activer de nouvelles fonctionnalités, comme mettre les menus en français, customiser le bootscreen (dans _Bootscreen.h) ou le supprimer, etc.

Une option intéressante est la désactivation du beeper. En effet, par défaut, il produit sans cesse un son perçant et très désagréable, totalement inutile.
« Du coup, si j'ai bien compris, il suffit de commenter la déclaration #define SPEAKER ? »
NON ! C'est l'exception qui confirme la règle, car alors ton beeper sonnera tout le temps. À chaque rotation de molette. Infernal.
Il faut activer SOUND_MENU_ITEM dans la configuration avancée, ce qui permet la création d'un menu pour désactiver le son.

On notera aussi la présence de quatre petites déclarations introduites par le commentaire « Frivolous Game Options », dans la configuration avancée. Après, j'dis ça, je n'dis rien.

Platformio.ini

Les plus observateurs aurons remarqué un petit fichier nommé platformio.ini dans leur dossier MARLINFIRMWARE. Commençez par aller à l'onglet Auto Build Marlin dans VSCode. Dans la rubrique Environnements, vous avez sur plusieurs ligne un truc qui ressemble vaguement à STM32F103RE_creality. C'est le chipset de votre carte mère, dont je vous parlais plus haut. Dans le cas présent, il reprend le chipset tranqué de ses deux derniers caractères, avec le nom du fabricant. CES ENVIRONNEMENTS SONT PROPRES À CHAQUE IMPRIMANTE 3D, IL EST NORMAL QUE VOUS N'AYEZ PAS LE MÊME SI VOUS N'AVEZ PAS LA MÊME IMPRIMANTE. Je vous conseil de vous renseigner pour connaitre quel est l'environnement correspondant à votre imprimante, sachant qu'il doit être dans la liste. Une fois que vous avez trouvé, copiez son nom et collez-le après default_envs = dans le fichier platformio.ini, en remplacement de la valeur initale.

Compilation (si vous êtes bénis le Gnou)

Si la grâce du Gnou est sur vous, vous n'avez qu'à cliquer sur la petite coche blanche de votre barre d'outils, en bas de l'écran dans VSCode. La compilation se lance et vous récupérez votre firmware dans le dossier MARLINFIRMWARE/.pio/build/include_tree/ sous le nom firmware-YYYYMMDD-HHMMSS.bin.

Erreurs de compilations faciles

Si le compilateur vous pointe une ligne commençant par #erreur blabla en vous disant que foo n'est pas compatible avec bar, ou que bob est nécessaire pour utiliser alice, c'est que votre configuration est mauvaise. Modifiez-la en suivant ses instructions, et tout se passera bien.

Corrections

C'est là que ça devient compliqué et hasardeux, il vaut mieux que vous le sachiez. (et pas que dans la colle)

  1. Si la compilation a échoué avec un message du style « impossible d'installer toolchain/gccarmnoneeabi pour votre architecture aarch64, vous êtes au bon endroit.
    Ouvrez le fichier platformio.ini, descendez à la fin, et ajoutez platform_packages =
    toolchain-gccarmnoneeabi@~1.90301.0
    dans la section [env]. Recompilez.

  2. Si après vous avez un message d'erreur du style File Not Found en vous balançant du code python où il est est question de mkdir, et de dossier variants, c'est qu'il n'arrive pas à créer le dossier dans lequel il veut mettre ses fichiers. Créez le dossier variants pour lui, et recompilez.

  3. Si le compilateur vous insulte une troisième fois en se plaignant de l'absence de fichier variants.h, copiez le contenu du dossier variants créé précédemment, et collez-le là où il vous dit qu'il manque.

  4. Si ça ne marche toujours pas, envisagez d'utiliser un ordinateur doté d'une architecture classique pour compiler votre firmware.

Conclusion

On arrive à la fin de ce tutoriel, si vous avez des questions, mettez un commentaire ou allez voir sur des forums si j'y suis si vous n'y trouvez pas la solution. N'oubliez pas de mettre un petit cœur et de vous abonner.
Voici quelques liens utiles pour conclure :
https://www.lesimprimantes3d.fr/forum/topic/22135-tuto-marlin-comprendre-et-all%C3%A9ger-son-firmware/#elShareItem_720517104_menu
https://3dprintscape.com/marlin-firmware-on-creality-board-complete-guide/
https://www.lesimprimantes3d.fr/forum/topic/43956-tuto-bien-installer-son-environnement-de-d%C3%A9veloppement-pour-compiler-son-firmware-marlin/
https://c.xkcd.com/random/mobile_comic/

J'espère pouvoir bientôt faire pareil sans VSCode, juste avec Docker ou PlatformIO.

  • # Erratum

    Posté par  . Évalué à 1.

    J'ai rédigé un nouveau journal pour compiler sans VCS.
    Si un modo pouvait l'ajouter au début ? Merci !

    Il y a 10 sortes de gens dans le monde – ceux qui comprennent le ternaire, ceux qui ne le comprennent pas et ceux qui le confondent avec le binaire.

    • [^] # Re: Erratum

      Posté par  . Évalué à 4.

      VCS, CVS et VSC… Trop de Vs, de Cs et de Ss….

      Il me semble que:
      * VCS, c'est pour "Version Control System"
      * CVS, c'est pour "Concurrent Versions System"
      * mais que tu voulais parler de VSC qui est "Visual Studio Code" ( https://code.visualstudio.com/ ). Non?

      Du coup, à corriger aussi?

      • [^] # Re: Erratum

        Posté par  . Évalué à 1.

        Oups, boulette… J'étais persuadé que c'était Visual Code Studio, du coup j'ai un peu mélangé les lettres. Si un modo pouvait rectifier ça aussi ?

        Il y a 10 sortes de gens dans le monde – ceux qui comprennent le ternaire, ceux qui ne le comprennent pas et ceux qui le confondent avec le binaire.

        • [^] # Re: Erratum

          Posté par  . Évalué à 4.

          Au final peut-être qu'il serait mieux d'utiliser 'VSCode' qui est le diminutif utilisé assez couramment…

        • [^] # Re: Erratum

          Posté par  (site web personnel) . Évalué à 3.

          C'est corrigé

          Un LUG en Lorraine : https://enunclic-cappel.fr

  • # Coïncidence

    Posté par  (site web personnel) . Évalué à 2.

    Incroyable ! Hier, sur mon ender 3, j'ai un écran bleu, plus rien ne s'affiche dessus :(
    J'ai donc cherché, et j'ai vu que j'ai aussi une carte mère v4.2.2. Comme je n'arrivais pas à flasher le firmware depuis une carte SD, j'ai aussi essayé de compiler un Marlin avec VSCode et de l'envoyer avec le câble USB sans succès, j'ai un problème JSLink.
    Je pense que malheureusement ma carte est morte. Tu aurais des solutions valider mon diagnostic ?
    Petite question, comment as-tu choisi le chipset de la carte mère (STM32F103RET6) ?
    Sinon, tu me conseilles d'acheter quoi comme carte mère de remplacement ? J'aimerais un truc pas trop cher (j'ai acheté mon imprimante 120€ il y a 1,5 ans).
    Merci !

    • [^] # Re: Coïncidence

      Posté par  . Évalué à 2.

      Si tu dois changer de carte mère, prends-en une silencieuse. Ça te coutera un petit 50 €, et tes tympans t'en remercieront.
      Je ne sais pas du tout comment vérifier que la carte mère est bien morte, essaie d'ouvrir une entrée de forum sur lesimprimantes3d.fr, il y a des gens assez calés là-bas.
      Pour connaitre ton chipset, regarde sur la plus grosse puce au milieu de ta carte, avec un bon éclairage. Tu verras clairement une suite de lettres et de chiffre, comme ici. Normalement, tu ensuite en déduire ton environnement en regardant la liste des environnements disponibles. Pour l'Ender-3 4.2.2, il y a deux chipsets différents et 5 environnements.

      Il y a 10 sortes de gens dans le monde – ceux qui comprennent le ternaire, ceux qui ne le comprennent pas et ceux qui le confondent avec le binaire.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.