Marlin - Guía Compilación
Marlin es el software que gobierna tu Impresora, a continuación te enseñamos como prepararlo para poder instalar o actualizar en tu Impresora.
Última actualización
Marlin es el software que gobierna tu Impresora, a continuación te enseñamos como prepararlo para poder instalar o actualizar en tu Impresora.
Última actualización
Pásate por nuestro grupo en español de Telegram sobre Marlin para cualquier duda relacionada con el, también si quieres acceder a un grupo general tienes nuestro grupo Telegram 3Dwork en español e inglés.
Os recordamos que tienes mas guias de ayuda en nuestro bot de Telegram @ThreeDWorkHelpBot
Con esta guía os vamos a facilitar los pasos para poder generar vuestro propio Marlin base para impresoras comerciales o que Marlin disponga de vuestro preconfigurado... aunque podéis usarlo bajando la última version estable desde el repositorio de Marlin y personalizarlo a mano aunque normalmente es aconsejable partir de un preconfigurado de una máquina similar.
Tenemos dos opciones para generar nuestro Marlin base:
Usando nuestro Auto Builder Marlin usando fuentes y pre-configurados de Marlin, en este caso el soporte a las máquinas que generamos el firware es limitado... revisa si la tuya esta incluída.
Usando directamente las fuentes y pre-configurados de Marlin desde su Github, aunque también aplicaria si vuestro fabricante dispone de uno personalizado aunque normalmente no están completamente actualizados
Si vas a actualizar una impresora y no tienes los ficheros de Marlin originales y has hecho cambios en la configuración de la pantalla te aconsejamos hacer un M503 desde un cliente de terminal como Pronterface y guardarte la información que devuelve ya que son los valores de la EEPROM muy útiles a ajustar en tu nuevo firmware
Recuerda que es aconsejable después de subir el firmware cargar los valores de fábrica de la EEPROM, esto lo puedes hacer por terminal con un M502 y seguido un M500 o desde la pantalla en modo Marlin en Configuración/Restaurar y seguido Configuración/Salvar EEPROM... además del M503 con el que podrás listar los valores de tu EEPROM para asegurarte que son correctos.
Entender como Marlin utiliza su RAM y/o EEPROM de la electrónica de tu impresora para guardar ciertas configuraciones puede llegar a ser algo confuso al inicio y si no lo hacemos correctamente puede ocasionar problemas al perder ciertos ajustes al reiniciar nuestra máquina.
Marlin utiliza lo que llamamos EEPROM, que puede estar en un chip de memoria dedicado o integrada en una zona reservada por Marlin en la propia ROM de la electrónica... siendo estas las más aconsejables/comunes también contamos con la opción de guardar nuestra EEPROM en la SD de nuestra electrónica donde crea un eeprom.dat (depende de la versión de Marlin este nombre puede variar).
En esta EEPROM Marlin guarda valores de configuración que suelen ser ajustables por el usuario, esto permite un ajuste más sencillo sin requerir tener que ajustar estos valores en las fuentes de Marlin, compilar y aplicar el nuevo firmware a nuestra máquina.
Al arrancar Marlin lo que hace es cargar los valores guardados en la EEPROM (memoria no volátil) a la RAM (que es una memoria volátil) para poderlos usar, consultar y ajustar durante nuestras impresiones, al apagar la máquina esta RAM se borra para realizar el proceso de carga de valores de la EEPROM al arrancar de nuevo Marlin.
A continuación os explicaremos algunos gcodes que vamos a disponer para gestionar esta EEPROM, cuando la tengamos activa activando EEPROM_SETTINGS, y como usarlos en cada caso:
M500 (Save Settings) El gcode M500 (Save Settings) guarda la configuración que tangamos activa en nuestra RAM a la EEPROM para que los cambios realizados no se pierdan al apagar la máquina. También podemos lanzar este comando desde la pantalla modo emulación Marlin con Store Settings o en pantállas táctiles suelen contar con opciones para realizar el proceso también.
M501 (Restore Settings) El gcode M501 (Restore Settings) carga los valores de nuestra EEPROM sobre nuestra RAM, básicamente realiza el proceso contrario que M500. Normalmente el uso normal del M501 es para deshacer ajustes realizados en nuestra RAM y que no fueron aplicados a nuestra EEPROM. También desde la pantalla modo emulación Marlin disponemos de la opción Load Settings con la que ejecutaremos el M501.
M502 (Factory Reset) Con M502 (Factory Reset) cargaremos las configuraciones incluídas en el firmware, no en la EEPROM, en nuestra RAM asegurándonos que volvemos a los valores originales de nuestro firmware. Suele ser aconsejable realizar un M502, seguido de un M500, cada vez que apliquemos una nueva versión de firmware a nuestra máquina ya que de esta forma cargamos los valores del nuevo firmware reseteando cualquier resto de configuraciones que tuviéramos del anterior en nuestra EEPROM. Es importante decir que en últimas versiones de Marlin, en el caso de detectar cambios significativos en la estructura de la EEPROM con respecto a nuevo firmware, ya nos va a sugerir por pantalla que realicemos este Reset de la EEPROM.
M503 (Report Settings) El gcode M503 (Report Settings) nos va a permitir mostrar los valores de nuestra RAM por la consola serial (Pronterface por ejemplo) lo cual es algo extremadamente útil para verificar que valores está usando nuestra máquina verdaderamente. En versiones actuales de Marlin contamos con una función llamada CONFIGURATION_EMBEDDING que nos permitirá añadir el parámetro C a nuestro M503 y que nos deje un fichero zip en nuestra SD, siempre que sea posible, con los valores de nuestra RAM en formato texto.
M504 (Validate EEPROM) Por último contamos con M504 (Validate EEPROM) que nos va a vaidar que el formato/estructura de EEPROM es correcta para la versión de nuestro firmware, dado que en el caso que no lo fuera nuestra firmware podría no arrancar correctamente en determinadas circunstancias.
Las placas actuales se genera un firmware.bin que se pone en la SD, en estos casos si el proceso de actualización se hizo de forma correcta este fichero queda renombrado a .CUR. Así que para comprobar si el proceso fué de forma correcta extrae la SD después de realizar el proceso de actualización y comprueba desde tu ordenador que el .BIN cambió a .CUR
Otras placas, normalmente antiguas de 8b, se "quema" directamente el nuevo firmware en la placa con lo que es necesario tenerlas conectadas por USB. En algunos casos puede dar problemas al programarla por USB por lo que puedes ir a la ubicación donde dejó el binario compilado... en estos casos es un fichero .hex normalmente... y subirlo desde otras herramientas especificas para tu impresora, los slicers/fileteadores como PrusaSlicer o Cura pueden realizar este paso de forma bastante sencilla también
Hemos desarrollado una automatización para poder generar, para un numero limitado de impresoras y electrónicas, de forma automática el firmware compilado usando las fuentes y pre-configurados de Marlin.
En la siguiente tabla podéis ver las actualmente soportadas, si estáis interesados en que añadamos más podéis contactar por nuestro grupo Telegram 3Dwork en español e inglés.
En las siguientes pestañas podéis encontrar el listado de marcas y modelos soportados:
Modelo, podréis ver el modelo de impresora y la electrónica usada
Firmware, un link a la descarga del firmware compilado
Config, un link a los ficheros de configuración usados para generar el firmware que podéis utilizar para personalizarlos vosotros mismos y generar vuestros propio firmware
default_env, el default_env a poner en el fichero platformio.ini
IMPORTANTE!!!
Los firmwares compilados a continuación están hechos en base a las fuentes y pre-configurados de Marlin oficial.
En cualquier caso no nos hacemos responsables de ningún problema relacionados con los mismos, es tu responsabilidad usarlos y aplicarlos.
Desde tu navegador favorito ves al GitHub oficial de Marlin: https://github.com/MarlinFirmware/Marlin
Si queréis conocer las novedades, contenido o problemas corregidos de las diferentes versiones de Marlin lo podéis hacer desde el siguiente link:
Una vez en la página descarga el código de Marlin de la siguiente forma:
También puedes ir directamente a la página de descargas de Marlin:
https://marlinfw.org/meta/download/
Es importante recordar las diferentes versiones disponibles
versión release, que es la normalmente estable... ej. 2.1.1.zip
versión release con actualizaciones, esta versión contiene resolución de problemas sobre la versión estable aunque en ocasiones pueden provocar daños colaterales... ej.. 2.1.x.zip
versión bugfix, son usadas para integrar correcciones para testear... siempre que no sea porque corrije un fallo para nuestra máquina lo ideal es evitarlas... ej. bugfix-2.1.x.zip
El siguiente paso, si tenemos una impresora comercial, descargaremos los pre-configurados de configuración desde https://github.com/MarlinFirmware/Configurations y siguiendo el mismo proceso que el explicado en el punto anterior
IMPORTANTE!!! Recuerda bajar la version de preconfiguraciones que concuerde con la versión de Marlin descargada con release en su nombre. Como referencia existen las siguientes ramas en los preconfigurados: - release : son las versiones que se usan con las versiones estables de Marlin que compiles - bugfix : en el caso que uses un Marlin bugfix, normalmente no aconsejable, deberás usar los preconfigurados de esta rama - import : esta rama no es aconsejable ya que están integrados cambios que no estan ligados con versiones de Marlin directamente y pueden contener configuraciones erroneas o problemáticas
Ahora y dispones de los archivos de Marlin en tu ordenador deberemos de descomprimirlos.
Importante!!! Idealmente no dejar la carpeta con tu Marlin dentro de muchas carpetas anidadas ni con símbolos o acentos en los nombres de las mismas ya que pueden provocar errores en la compilación.
Abrimos el explorador de archivos de Windows y accedemos a la carpeta donde hemos descargado y descomprimido el repositorio de Marlin .
Una vez ahí, abriremos otro explorador de ficheros con el contenido del repositorio de pre-configuraciones
Encontraremos dos ficheros de pre-configuración de Marlin para nuestra impresora, en la imagen de ejemplo usaremos una Ender 3 con las pre-configuraciones para una placa SKR MINI v2 (la carpeta a buscar sería lo indicado en el cuadro azul de la siguiente captura):
Copiamos los archivos del interior de la carpeta de nuestro pre-configurado (cuadro rojo de la captura anterior y los pegaremos (substituyendo los existentes) en la carpeta «...\Marlin» donde dejamos descomprimido el repositorio de Marlin
Con esto ya tenemos nuestro Marlin listo para compilar!!!
El siguiente paso es instalar el software necesario, para ello descargue e instale los siguientes programas:
Python: https://www.python.org/downloads/ tambien puedes descargarlo desde la Store de Apps de Windows que en algunos casos realiza una instalación de forma más correcta
Durante la instalación asegúrate que seleccionas la casilla "Add Python x.x to PATH"
Git: https://git-scm.com/
Visual Studio Code: https://code.visualstudio.com/A pesar de que parezca que Python y Git no se usan en ningún paso, son requerimientos de Visual Studio Code para este tutorial
Algo muy importante, es dejar marcada la casilla «Agregar a PATH» en el cuadro de diálogo de Tareas Adicionales
Una vez instalados ambos programas, vedemos instalar el plugin PlatformIO en Visual Studio Code, para ello seguiremos los siguientes pasos:
Presionamos los cuadrados del menú izquierdo
en el buscador escribimos «PlatformIO»
presionamos sobre le rectángulo verde de instalar
Posibles soluciones a problemas en la instalación de la extensión Platformio:
Instala Python antes, tal como se sugiere en esta guía, desde su web o la App Store de Windows
Ejecuta VSC como administrador, al menos durante la instalación de las extensiones necesarias, así evitaras que en determinadas configuraciones de Windows ciertas acciones esten restringidas o bloqueadas
Ves a "Aplicaciones y características" en caso de Windows, eligiremos la opción de "Alias de ejecución de aplicaciones" desactivando el instalador de aplicaciones python.exe y python3.exe. Una vez realizado este paso reiniciaremos VSC y volveremos a intentar la instalación.
Asegúrate que tú antivirus/firewall no está bloqueando el proceso de VSC/instalación Platformio ya que partes del proceso requieren descargar módulos desde Internet.
Si no ha funcionado... empieza de cero y en el orden correcto de instalación:
Desinsta completamente VSC y cualquier otro componente relacionado que instalaste
Borrar cualquier directorio que quede relacionado con estas tareas de compilado de Marlin
Instalar todo de cero siguiendo los pasos de la guía de esta guía
Comprobaciones para verificar que Python esta correctamente instalado (depende de version de Python instalada y de sistema operativo) ya que es una parte fundamental tanto de la instalación de Platformio y para que funcione:
Ejecutar desde una linea de comandos (tecla Windows + R -> cmd.exe
)
echo %PATH% - esto deberia retornar un listado de directorios donde uno de ellos debería de ser el de Python y hay que asegurarse que apunte a la versión compatible con nuestra versión de Platformio... ejemplo, el path muestra una version 2.5 y nuestro Platformio necesita Python 3.6+
echo %PYTHONPATH% - al igual que el anterior deberia retornar el path de Python
python --version - en el caso que este correcto lo anterior debería retornar la version de nuestro Python instalado
pip --version - pip es un instalador de paquetes de Python y también puede ser necesario para algunas acciones
Lista de alternativas si no es posible hacer funcionar VSC+Platformio:
Una vez tenemos nuestro Marlin a nivel de ficheros y el software necesario instalado correctamente toca compilarlo para poder generar el fichero a usar en nuestras impresoras:
Una vez realizado este paso, abrimos Visual Studio Code, presionamos sobre el icono con dos documentos del menú izquierdo, y a continuación sobre le botón azul de «Agregar carpeta»
Buscamos la ubicación donde tenemos nuestro repositorio Marlin y presionamos Agregar:
Os aconsejamos no tener la carpeta con vuestras fuentes de Marlin en muchos directorios anidados ya que esto puede provocar algunos problemas.
Lo ideal es tenerlo en la raíz de cualquiera de vuestras unidades, ej. C:/Marlin
En Visual Studio Code, seleccionamos el archivo plaformio.ini del área de trabajo de Marlin que acabamos de añadir.
Editamos la fila de «default_envs» y sustituimos » megaatmega2560 » por el adecuado para nuestra placa/impresora, haciendo scroll en este documento encontraras diversas placas, encuentra la tuya y substituye «megaatmega2560» por tu placa en caso de que sea necesario
Otro truco para encontrar cual es nuestro default_envs si solo conocemos la placa que tenemos que poder en MOTHERBOARD dentro de /Marlin/configuration.h es ir al fichero pins de Marlin (Marlin/Marlin/src/pins/pins.h) donde buscaremos por nuestro MOTHERBOARD y en la parte final de la linea encontraremos esa información:
En la captura anterior podéis ver un ejemplo para una SKR MINI V3 donde:
encontraréis los valores a poner en vuestro platformio.ini en ocasiones podéis encontrar varios, normalmente usar el primero
hace referencia a la carpeta donde se encuentra el fichero pins de nuestra electrónica en el caso que tengamos que averiguar el ID de un pin o cambiar el rol a alguno
A continuación si queremos hacer cambios en la configuración básica de nuestra impresora, ya sea por que le hemos hecho una modificación o para mejorar algún ajuste, desplegamos la carpeta Marlin y nos aparecerán los dos archivos de configuración. Podeis encontrar información de opciones básicas de Marlin en el siguiente link de su documentación o explicado de una forma más "sencilla" en nuestra guía de Marlin.
Una vez realizados los ajustes deseados, presionamos sobre el botón de compilar, este se encuentra en la parte inferior izquierda y tiene forma de «check»
Para errores del tipo "IncludePath"/ faltas de librerias se aconseja borrar la cache:
borrar la carpeta .pio
borrar la carpeta .vscode
hacer click en el icono de papelera (Clean) de la barra azul de Platformio
Del menú de Platformio lanzar un Rebuild IntelliSense Index o el icono de basura de la barra inferior azul del VSC
Si no funciona lo ideal es desinstalar y reinstalar las extensiones C++ y Platformio
Cuando ya esté compilado el código, vamos a la carpeta: «...\Marlin\.pio\build\xxxx» donde encostraremos un fichero llamado «firmware.bin» o similar dependiendo de las características que necesite nuestra electrónica.
En el caso de ejemplo se describe el proceso para una placa de 32b en las cuales es suficiente copiar el fichero generado en la tarjeta SD de nuestra impresora.
Para impresoras más antiguas el fichero generado suele ser un .hex el cual con la impresora conectada por USB podemos directamente subir desde VSC o usar PrusaSlicer o Cura para actualizar nuestra impresora.
Recuerda que es posible que VSC no lo haga directamente en el caso que no instales los drivers de tu placa y sea capaz de detectar correctamente el COM que se crea o tengas por ejemplo Cura abierto
Copiamos este fichero en una tarjeta SD vacía en el directorio raíz o seguiremos el proceso adecuado para nuestra electrónica.
Extraemos la SD del ordenador
Apagamos la impresora (Desconectamos el USB y la alimentación si están ambos conectados)
Esperamos unos 30 segundos
Colocamos la tarjeta SD con el nuevo Firmware
Encendemos la Impresora, tras unos segundos, veremos como esta instalando el nuevo firmware, poco después, y se iniciara con nuestro nuevo Marlin instalado.
Muchos usuarios ven muy complicado el proceso de actualización de la versión última cocinada por ellos a una nueva, a continuación os damos algunos consejos de como realizar el proceso para que sea más sencillo.
Descargar la nueva versión de Marlin, tal como os indicabamos aquí descargaremos la nueva versión de Marlin ya sea desde el enlace release de su documentación o desde su Github.
Una vez descargado y descomprimido añadiremos esa carpeta a nuestro proyecto en VSC junto con la antigua versión
Ahora que tenemos ambos directorios en nuestro proyecto tan solo tendremos que usar la herramienta de comparacion que lleva incluida VSC para comparar los ficheros de configuración de Marlin
platformio.ini, es el fichero donde básicamente encontraremos el env de nuestra electrónica
Marlin/configuration.h, fichero donde normalmente habilitaremos las funciones y configuración de la impresora/electrónica/extensiones
Marlin/configuration_adv.h, similar al anterior pero donde encontraremos ciertas funciones avanzadas
Para comparar dos ficheros y desde el panel lateral donde se muestra la estructura de ficheros y carpetas de nuestro proyecto (Explorer) sobre el fichero a comparar de nuestra antigua versión pulsaremos Select for Compare del menú que aparece al hacer click derecho sobre el
A continuación haremos lo mismo pero con el fichero de nuestra nueva versión pero en este caso seleccionaremos la opción Compare with Selected y nos aparecerá una nueva pantalla con la comparación entre ellos
En la parte superior marcada en la captura siguiente veremos el nombre y carpeta de los ficheros a comparar
En la parte central vemos como marca los cambios, en el primer bloque indica en rojo las partes que no incluye el destino (rojo), el central donde indica cambios en ambos sitios y la que normalmente usaremos para detectar ajustes (rojo/verde) y la parte inferior (verde) donde encontrarás lo que se encuentra en el nuevo y no en el antiguo
podéis invertir el orden de selección de ficheros si el código de colores os es más amigable
os aconsejamos que siempre se añadan comentarios, con // al final de las lineas que modifiqueis ya que os sera mas sencillo identificar cambios
en ocasiones puede que funciones cambien de sitio o nombre asi como el formato de valores, aqui tan solo es fijarse y leer los comentarios del propio codigo
Una vez ajustados todos los cambios solamente toca cargar el nuevo proyecto en Platformio como os explicamos al inicio de la guia y compilar ajustando cualquier error que nos aparezca ya que normalmente los errores suelen ser bastante descriptivos.