# Marlin - Guía Compilación

{% hint style="info" %}
**English**: Use your browser's built-in translation — Chrome and Edge detect the language automatically and offer to translate the page.
{% endhint %}

Pásate por nuestro [**grupo en español de Telegram sobre Marlin**](https://t.me/marlin_es) para cualquier duda relacionada con el, también si quieres acceder a un grupo general tienes nuestro [**grupo Telegram 3Dwork en español**](https://t.me/trastornados) e [**inglés**](https://t.me/The3DWorkChannel).

Os recordamos que tienes mas guias de ayuda en **nuestro bot de Telegram** [**@ThreeDWorkHelpBot**](https://t.me/ThreeDWorkHelpBot)

## Prepara tu propio Marlin para poder personalizarlo

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 varias opciones para obtener o generar nuestro firmware Marlin:

* [**Firmware precompilado oficial — MarlinBuilds**](#firmware-precompilado-oficial-marlinbuilds): el propio equipo de Marlin publica binarios compilados para más de 80 marcas basados en sus preconfigurados oficiales. La opción más rápida si tu máquina está entre las soportadas.
* [**Usando nuestro Auto Builder Marlin usando fuentes y pre-configurados de Marlin**](#procedimiento-automatico-3dwork-usando-fuentes-y-pre-configuraciones-de-marlin), en este caso el soporte a las máquinas que generamos el firmware es limitado... revisa si la tuya está incluida.
* [**Usando directamente las fuentes y pre-configurados de Marlin desde su Github**](#procedimiento-manual-usando-fuentes-y-pre-configuraciones-de-marlin), el método más flexible; también aplica si tu fabricante dispone de un fork personalizado

### Algunos consejos antes de comenzar

* 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 <mark style="color:green;">**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**</mark>
* **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.**

{% hint style="info" %}
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*](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/Marlin/Configuration.h#L2261), y como usarlos en cada caso:

* **M500 (Save Settings)**\
  El gcode [**M500 (Save Settings)**](https://marlinfw.org/docs/gcode/M500.html) 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.\
  ![marlin m500](https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_411,h_88/https://www.3dprintgorilla.com/wp-content/uploads/marlin-m500.png)

* **M501 (Restore Settings)**\
  El gcode [**M501 (Restore Settings)**](https://marlinfw.org/docs/gcode/M501.html) 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.\
  ![](/files/sSOoYmznj3yd0sUi8mK7)

* **M502 (Factory Reset)**\
  Con [**M502 (Factory Reset)**](https://marlinfw.org/docs/gcode/M502.html) 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.![marlin m502](https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_468,h_60/https://www.3dprintgorilla.com/wp-content/uploads/marlin-m502.png)

* **M503 (Report Settings)**\
  El gcode [**M503 (Report Settings)**](https://marlinfw.org/docs/gcode/M503.html) 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](https://github.com/MarlinFirmware/Marlin/blob/b1f45b384b2e472219ca055050ebd2182eea045d/Marlin/Configuration_adv.h#L1726) 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.\
  ![marlin m503](https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_566,h_355/https://www.3dprintgorilla.com/wp-content/uploads/marlin-m503.png)

* **M504 (Validate EEPROM)**\
  Por último contamos con [**M504 (Validate EEPROM)**](https://marlinfw.org/docs/gcode/M504.html) 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.\
  ![marlin m504](https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_167,h_46/https://www.3dprintgorilla.com/wp-content/uploads/marlin-m504.png)
  {% endhint %}

* 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

## Firmware precompilado oficial — MarlinBuilds

El equipo de Marlin publica desde 2024 binarios precompilados para la gran mayoría de impresoras comerciales en el repositorio oficial **MarlinBuilds**. Estos binarios se generan directamente a partir de los preconfigurados del repositorio Configurations, garantizando que coinciden 100% con la configuración oficial de cada máquina.

{% hint style="success" %}
Si tu impresora está entre las soportadas, **esta es la opción más rápida**: descarga el binario, cópialo en la SD y listo. No necesitas compilar nada.
{% endhint %}

**Repositorio oficial:**

{% embed url="<https://github.com/MarlinFirmware/MarlinBuilds>" %}

### ¿Qué máquinas están soportadas?

Más de 80 marcas y cientos de modelos, entre ellos:

* **Creality**: Ender-3, Ender-3 Pro, Ender-3 V2, Ender-3 S1, CR-10, CR-10 V2/V3, CR-6 SE...
* **Prusa**: i3 MK2/MK3, Mini
* **Elegoo**: Neptune series
* **Artillery**: Sidewinder X1/X2, Genius Pro
* **Sovol**, **Tevo**, **Geeetech**, **Two Trees**, **Qidi**, **Kingroon** y muchas más

Para encontrar tu máquina navega por la carpeta `builds/` → carpeta de tu marca → carpeta de tu modelo → descarga el `.bin` o `.hex` apropiado para tu electrónica.

{% hint style="warning" %}
Los binarios de MarlinBuilds están generados con los **preconfigurados sin modificar** de Marlin. Si has hecho modificaciones en tu máquina (sensor ABL diferente, driver distinto, etc.) necesitarás compilar tu propio firmware con esos cambios.
{% endhint %}

### ¿Cómo identificar el binario correcto?

Dentro de la carpeta de cada modelo encontrarás subcarpetas con variantes según la electrónica o los sensores instalados. Ejemplo para una Ender-3 V2:

```
builds/Creality/Ender-3 V2/
├── CrealityV422/         → placa stock Creality 4.2.2
├── CrealityV427/         → placa stock Creality 4.2.7
├── CrealityV427-BLTouch/ → placa 4.2.7 + BLTouch
└── ...
```

Descarga el `.bin` de la carpeta que se ajuste a tu configuración, cópialo en la SD y aplícalo igual que cualquier otro firmware Marlin.

***

### Procedimiento automático 3Dwork usando fuentes y pre-configuraciones de Marlin

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**](https://t.me/trastornados) e [**inglés**](https://t.me/The3DWorkChannel).

{% hint style="info" %}
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
  {% endhint %}

{% hint style="danger" %} <mark style="color:red;">**IMPORTANTE!!!**</mark>

Los firmwares compilados a continuación están hechos en base a las fuentes y pre-configurados de Marlin oficial.

<mark style="color:red;">**En cualquier caso no nos hacemos responsables de ningún problema relacionados con los mismos, es tu responsabilidad usarlos y aplicarlos.**</mark>
{% endhint %}

{% embed url="<https://gist.github.com/alienboyxp/07b5a603f9becbe484182f8c5dc25b52>" fullWidth="true" %}

### Procedimiento manual usando fuentes y pre-configuraciones de Marlin

* Desde tu navegador favorito ves al GitHub oficial de Marlin: <https://github.com/MarlinFirmware/Marlin>

{% hint style="success" %}
Si queréis conocer las novedades, contenido o problemas corregidos de las diferentes versiones de Marlin lo podéis hacer desde el siguiente link:

<https://github.com/MarlinFirmware/Marlin/releases>
{% endhint %}

* Una vez en la página descarga el código de Marlin de la siguiente forma:

![](/files/-MYdE0nsnUpMAxYuDlfw)

![](/files/-MYdESmXI3b_s_rQOaFn)

{% hint style="info" %}
También puedes ir directamente a la página de descargas de Marlin:

<https://marlinfw.org/meta/download/>

Es importante conocer las diferentes versiones disponibles (a abril 2026):

{% hint style="success" %}
**Recomendación**: usa siempre la versión **release estable** (actualmente 2.1.2.7) y sus preconfigurados de la rama `release-2.1.2.7` del repositorio Configurations. Los preconfigurados deben coincidir con la versión de Marlin.
{% endhint %}
{% endhint %}

| Versión          | Tipo                                                        | Descripción                                                                     |
| ---------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------- |
| **2.1.2.7**      | <mark style="color:green;">**Release estable**</mark>       | Versión estable actual recomendada para producción                              |
| **2.1.x**        | <mark style="color:orange;">**Release con hotfixes**</mark> | Rama 2.1 con correcciones sobre la estable; puede tener daños colaterales       |
| **2.1.3-b3**     | <mark style="color:blue;">**Beta pública**</mark>           | Actualización mayor en pruebas públicas; **no usar en producción**              |
| **bugfix-2.1.x** | <mark style="color:red;">**Bugfix de desarrollo**</mark>    | Para testear correcciones puntuales; evitar salvo que corrija un fallo concreto |

* 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

![](/files/-MYdEsuCQfMcATh4hoB0)

> **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.**

#### Combinaremos Marlin estable con el preconfigurado de nuestra máquina

* 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):

![](https://telegra.ph/file/cd0495eb5684364f721f5.png)

* 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!!!

## Instalación de software necesario para la edición y compilación de Marlin

El siguiente paso es instalar el software necesario, para ello descargue e instale los siguientes programas:

* **Python**: <https://www.python.org/downloads/> ***también puedes descargarlo desde la Store de Apps de Windows, que en algunos casos realiza una instalación más correcta***

{% hint style="info" %}
Durante la instalación asegúrate de seleccionar la casilla "**Add Python x.x to PATH"**
{% endhint %}

* **Git**: <https://git-scm.com/>
* **Visual Studio Code**: <https://code.visualstudio.com/> — A pesar de que parezca que Python y Git no se usan directamente, son requerimientos de Visual Studio Code para este tutorial.

{% hint style="info" %}
Algo muy importante: deja marcada la casilla «**Agregar a PATH**» en el cuadro de diálogo de **Tareas Adicionales** durante la instalación de Git y Python.
{% endhint %}

* Una vez instalados, debemos instalar dos extensiones en Visual Studio Code:

### Extensiones imprescindibles para VSCode

**1. PlatformIO** — el compilador

* Presiona el icono de extensiones del menú izquierdo (cuadros)
* Busca «PlatformIO»
* Pulsa instalar

![](https://wiki.eurek.org/wp-content/uploads/2019/12/image-18-1024x769.png)

**2. Auto Build Marlin** — compila con un solo clic

La extensión oficial del equipo de Marlin para VSCode. Detecta automáticamente la placa (`MOTHERBOARD`) definida en tu `Configuration.h` y muestra los entornos disponibles para compilar. Ya no necesitas editar `platformio.ini` manualmente para cambiar el `default_envs`.

* Busca «Auto Build Marlin» en el marketplace de extensiones de VSCode
* Instala la extensión de **MarlinFirmware**

{% embed url="<https://marketplace.visualstudio.com/items?itemName=MarlinFirmware.auto-build>" %}

{% hint style="info" %}
**Novedades de Auto Build Marlin:**

* **Configuration Editor (alpha)**: editor visual para `Configuration.h` y `Configuration_adv.h`. Haz click derecho sobre cualquiera de los dos ficheros y elige **Open With… → Config Editor** para buscar y activar opciones sin tocar el código directamente.
* **Detección automática de entornos**: muestra solo los entornos compatibles con tu `MOTHERBOARD`.
* Botones directos: **Build**, **Upload**, **Clean**, **Debug** desde el panel lateral.
  {% endhint %}

{% hint style="info" %}
**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
  * **Lanzar un limpiador de registro** como [CCleaner](https://www.ccleaner.com/es-es/ccleaner/download), [PrivaZer](https://privazer.com/en/version-difference.php) o similar, eliminando cualquier referencia a aplicaciones que no sean necesarias
  * **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
    {% endhint %}

![Ejemplo de error en la instalación de Platformio](/files/-MdT6VR65zOyYXCNXRdT)

{% hint style="info" %}
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
    {% endhint %}

{% hint style="info" %}
**Lista de alternativas si no es posible hacer funcionar VSC+Platformio**:

* [Usar Sublime en lugar de VSC](https://marlinfw.org/docs/basics/install_platformio_sublime.html)
* [Usar cualquier editor de textos y lanzar Platformio desde linea de comandos](https://marlinfw.org/docs/basics/install_platformio_cli.html)
* [Usar Atom en lugar de VSC](https://marlinfw.org/docs/basics/install_platformio_atom.html)
  {% endhint %}

## Compilando nuestro Marlin

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»**

![](https://wiki.eurek.org/wp-content/uploads/2019/12/image-20.png)

* Buscamos la **ubicación donde tenemos nuestro repositorio Marlin** y presionamos **Agregar**:

![](https://wiki.eurek.org/wp-content/uploads/2019/12/image-22.png)

{% hint style="info" %}
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
{% endhint %}

* 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

![](https://wiki.eurek.org/wp-content/uploads/2019/12/image-23-1024x770.png)

{% hint style="info" %}
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**](https://github.com/MarlinFirmware/Marlin/blob/2.1.x/Marlin/src/pins/pins.h)) donde buscaremos por nuestro MOTHERBOARD y en la parte final de la linea encontraremos esa información:

<img src="/files/WeDRLbTj4JVaKvUT5Q7k" alt="" data-size="line">

En la captura anterior podéis ver un ejemplo para una SKR MINI V3 donde:

1. encontraréis los **valores a poner en vuestro platformio.ini** en ocasiones podéis encontrar varios, normalmente usar el primero
2. **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
   {% endhint %}

<figure><img src="/files/WeDRLbTj4JVaKvUT5Q7k" alt=""><figcaption></figcaption></figure>

* 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**](https://marlinfw.org/docs/configuration/configuration.html) de su documentación o explicado de una forma más "sencilla" en [**nuestra guía de Marlin**](https://3dwork.io/configurar-marlin-2-0-x-desde-cero/).

![](https://wiki.eurek.org/wp-content/uploads/2019/12/image-24.png)

* Una vez realizados los ajustes deseados, compilamos de una de estas dos formas:
  * **Con Auto Build Marlin** (recomendado): haz clic en el icono ABM de la barra lateral → panel Auto Build → botón **Build**. Detectará automáticamente tu placa y el entorno correcto.
  * **Con PlatformIO directamente**: botón de compilar (check ✓) en la barra azul inferior izquierda de VSCode.

![](https://wiki.eurek.org/wp-content/uploads/2019/12/image-25.png)

{% hint style="info" %}
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
{% endhint %}

* 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**.

{% hint style="warning" %}
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
{% endhint %}

* 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.

## Actualizando nuestro Marlin a una nueva versión

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í](#procedimiento-manual-usando-marlin-ultima-version-estable) descargaremos la nueva versión de Marlin ya sea desde el [**enlace release de su documentación**](https://marlinfw.org/meta/download/) o desde su [**Github**](https://github.com/MarlinFirmware/Marlin/).

<figure><img src="/files/7v2Sktf4agW0HN4kgAbG" alt=""><figcaption><p>Descargar Marlin desde documentación</p></figcaption></figure>

<figure><img src="/files/JXMkz8nZbkuBLHY9NhsF" alt=""><figcaption><p>Descargar Marlin desde su Github, es importante seleccionar la rama adecuada en la esquina superior izquierda.</p></figcaption></figure>

* Una vez descargado y descomprimido añadiremos esa carpeta a nuestro proyecto en VSC junto con la antigua versión

<figure><img src="/files/G9K7pUIUyctgdpOdNDAR" alt=""><figcaption></figcaption></figure>

* 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

<figure><img src="/files/stElsQplGa6rtbXjep0H" alt=""><figcaption></figcaption></figure>

* 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

<figure><img src="/files/UznqBTDw6ZdaFwG9CYRG" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}

* 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
  {% endhint %}

* Una vez ajustados todos los cambios solamente toca [**cargar el nuevo proyecto en Platformio**](#compilando-nuestro-marlin) como os explicamos al inicio de la guia y [**compilar**](#compilando-nuestro-marlin) ajustando cualquier error que nos aparezca ya que normalmente los errores suelen ser bastante descriptivos.

## Opciones imprescindibles conocer en Marlin

{% embed url="<https://3dwork.io/configurar-marlin-2-0-x-desde-cero/>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://marlin.3dwork.io/marlin/marlin-guia-compilacion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
