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 < > Code → Download 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 Fichier → Ouvrir 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.

      • [^] # Re: CoĂŻncidence

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

        Merci pour ta réponse !
        En fait, je crois qu'on ne peut pas changer le firmware par cùble USB, uniquement en mettant une carte microSD. J'ai remis le firmware le plus simple de chez creality (https://www.creality.com/pages/download-ender-3 - Ender-3 4.2.2 mainboard (32bit)) et ça a fonctionné ! Je suis trop content !

Suivre le flux des commentaires

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