# Duet 2 Wifi - Klipper

Las electrónicas Duet son muy buenas, sobre todo en entornos de producción porque son muy robustas. Originalmente, usan RRF que es un gran firmware 3D pero sinceramente nunca nos hemos llevado muy bien con él y en especial desde que Klipper empezó a dar sus primeros pasos.

Vamos a explicar el proceso a seguir para aplicar el firmware Klipper a nuestra Duet en especial teniendo en cuenta algunos aspectos importantes.

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

**El proceso de aplicar un firmware a una electrónica es un paso crítico que de fallar o realizarse de forma incorrecta puede dejar dañada nuestra electrónica y puede requerir de herramientas adicionales para recuperarla o incluso dejar inservible de darse el caso.**

**Los siguientes pasos si los realizas son bajo tu propia responsabilidad!!!**
{% endhint %}

## Klipper... ojo con el sistema que utilizamos en nustro host

MainsailOS es una de las distribuciones, para Raspberry, más utilizadas y actualizadas ya que tenemos todo pre-instalado... por contra y en el caso de Duet puede dar problemas si utilizamos una distribución de MainsailOS basada en Debian 11. Podemos averiguar que usamos mediante el comando lsb\_release

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

Aunque puede ser un poco laborioso, en el caso que el escenario anterior sea el vuestro, os aconsejamos utilizar dos imágenes... una con MainsailOS actualizado y otra u otro dispositivo host utilizando una version OS que no esté afectada por el fallo anterior.

Podemos utilizar una distribución de Rasbian Lite antigua basada en buster, realizaremos la instalación de Kiauh y desde el instalar Kiauh. Desde el propio Kiauh pudemos hacer el proceso de creación y aplicar el firmware y debería funcionar.

* Descargaremos una imagen de Raspian LITE 10 BUSTER (legacy) que podréis encontrar [aquí](https://support.pishop.us/article/137-official-links-to-raspberry-pi-os-buster) y la aplicaremos en una SD nueva para continuar manteniendo nuestro MainsailOS actualizado.\
  Asegúrate que habilitas la opción de SSH al quemar la imagen a la SD desde RaspiImager además de los datos de tu WiFi de ser necesario.
* Abriremos Terminus o Putty, cliente SSH para conectarnos al host con la imagen Raspbian Buster, recuerda encontrar la IP de tu host para ello.
* Desde el terminal SSH e **instalaremos Git:**

```bash
sudo apt update
sudo apt -get install git -y
```

* **Instalaremos y lanzamos** [**Kiauh**](https://github.com/dw-0/kiauh):

```bash
cd ~
git clone 
https://github.com/th33xitus/kiauh.git
./kiauh/kiauh.sh
```

* Dentro de Kiauh **instalaremos una instancia de Klipper y Moonraker** y ya podemos salir de Kiauh. Cin esto ya tenemos una versión actaulizada y mínima de Klipper en una versión antigua no afectada por el problema con Duet.

## Creando el firmware Klipper

{% hint style="warning" %}
**IMPORTANTE!!!**

**Antes de seguir este proceso os aconsejamos revisar el anterior con detalle!!!**
{% endhint %}

Vamos al paso sencillo que es crear el firmware para nuestra Duet utilizando el comando `make menuconfig` desde SSH, recuerda entrar en el directorio `klipper` antes, utilizando las siguientes opciones:

```bash
cd klipper
make menuconfig
```

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

Guardaremos y saldremos.

El siguiente paso es generar el firmware con la configuración anterior utilizando el comando `make`

## Aplicando el firmware a nuestra Duet

El siguiente paso, el complicado, es el de aplicar el firmware creado anteriormente en nuestra Duet. Os aconsejamos[ **revisar le guía de Duet** ](https://docs.duet3d.com/en/User_manual/RepRapFirmware/Updating_firmware#all-other-duet-boards)para más detalle del proceso.

En concreto nos fijaremos en los pasos para preparar nuestra Duet para ponerla en `flash mode`, **previamente deberemos haber hecho el proceso de borrado de firmware**.

También tenemos el proceso en otra guía que hicimos hace tiempo sobre la BLV que podéis ver en el siguiente link:

{% embed url="<https://labs.3dwork.io/reviews-guias/impresoras-3d/fdm/blv-cube-kit-fysetc#klipper>" %}

Básicamente deberemos de:

{% hint style="warning" %} <mark style="color:orange;">**IMPORTANTE!!! Conexión Raspberry/Duet**</mark>

**Dado que normalmente las Duet no tienen un jumper de alimentación USB es importante que tapemos el pin 5v del conector USB para evitar retroalimentación**

**Este pin ha de quedar sin tapar cuando realicemos el proceso de actualización de firmware cuando la Duet no tenga alimentación de la fuente.**

<img src="/files/6IhqCuGObzWAV9nKvc9o" alt="" data-size="original">
{% endhint %}

* Hacer un **borrado del firmware**, haremos un `factory reset` de nuestra placa, para ello con la placa apagada colocaremos un jumper en los pines de borrado (Erase pins en la imagen de abajo.\
  A continuación conectaremos el cable USB para alimentar nuestra placa.\
  Una vez el **led DIAG se encienda, quitaremos el jumper** y tendremos nuestra placa sin ningún firmware instalado
* Pulsaremos el botón RESET (Reset button) para poner en modo DFU

<figure><img src="/files/2KF3ugrgEHfXeBXMkRKD" alt=""><figcaption></figcaption></figure>

* Obtendremos el USB ID mediante el comando ls /dev/serial/by-id/\* que copiaremos.
* Pararemos el servicio Klipper por seguridad **`sudo service klipper stop`**
* Lanzaremos el comando para aplicar el firmware creado reemplazando el /dev/serial/by-id/xxxx por el obtenido en pasos anteriores **`make flash FLASH_DEVICE=/dev/serial/by-id/xxxx`**
* Si aparece algo como lo siguiente ya tenemos Klipper en nuestra Duet!!!

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

* Volveremos a iniciar el servicio Klipper con **`sudo service klipper start`.**

**Ahora con nuestro firmware Klipper aplicado podemos volver a nuestro MainsailOS y desde el interfaz web comentazar a ajustar nuestro printer.cfg y verificar que todo funcione correctamente.**

## printer.cfg

Ahora que ya tenemos nuestro firmware Klipper aplicado y el USB ID que obtuvimos con el ls en el paso anterior ya podemos montar nuestro printer.cfg, podemos utilizar el ejemplo proporcionado por Klipper en su Github.

{% embed url="<https://github.com/Klipper3d/klipper/blob/master/config/generic-duet2.cfg>" %}

A continuación un ejemplo de printer.cfg y uno de macros:

{% embed url="<https://gist.github.com/blackfyre/1a1701bd3ef765b8d16dbe637719c873#file-printer-cfg>" %}

{% embed url="<https://gist.github.com/blackfyre/1a1701bd3ef765b8d16dbe637719c873#file-printer_with_macros-cfg>" %}

#### Ajustes opcionales

A continuación os sugerimos algunos ajustes de Klipper interesantes para nuestra BLV:

* Configuración de la gestión de apagado/encendido

![](/files/aNJbVN83HVtCqo3cnnqt)

* Usar nuestra pantalla PanelDue, conectando la pantalla a nuestra Pi por GPIO... más detalle [**aquí**](https://docs.duet3d.com/en/User_manual/RepRapFirmware/Updating_PanelDue)<br>
  * Deberemos actualizar nuestro `config.txt` mediante ***`sudo nano /boot/config.txt`*** añadiendo al final ***`dtoverlay=pi3-miniuart-bt`*** presionaremos ***`CTRL+X`*** para guardar los cambios seguido de ***`ENTER`***\
    ![](/files/proMh3HH3Kavw4OqGLRH)
  * Por otro lado tendremos que actualizar nuestro `cmdline.txt` lanzando &#x73;***`udo nano /boot/cmdline.txt`*** eliminando o comentando ***`console=serial0,115200`*** presionaremos ***`CTRL+X`*** para guardar los cambios seguido de ***`ENTER`***\
    ![](/files/kegqWr78Hs2V7EjTgrm8)
  * Ejecutaremos la utilidad `raspi-config` mediante ***`sudo raspi-config`*** e iremos a la opción ***`3 Interface Options > P6 Serial Port > No > Yes`*** y reiniciaremos nuestra Pi
  * Nos aseguraremos que nuestro ***PanelDue está configurado en 115200***
  * Por último deberemos de realizar algunas ***modificaciones en el fichero moonraker.cfg*** de nuestro Klipper, [**aquí**](https://github.com/Arksine/moonraker/blob/master/docs/configuration.md#paneldue) tenéis más detalles de los cambios.

![](/files/B1JWcB1GigWyIu6uJQqe)

Tenéis un video de Nero3D para más referencias.

{% embed url="<https://youtu.be/G7yqrAaUMPw>" %}

También tenéis el siguiente PDF muy bueno aunque algo antiguo sobre el proceso.

{% file src="/files/CpeDi3nkRwVBwAnMm686" %}


---

# 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://klipper.3dwork.io/klipper/instalacion/duet-2-wifi-klipper.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.
