# Klipper en PC con Windows (Usando WSL)

{% hint style="danger" %}
*Este método requiere que WSL se ejecute en un PC (Windows 10 o 11) todo el tiempo que está imprimiendo, **NO** se puede apagar.*
{% endhint %}

### Lista de materiales

* Paciencia
* Cable USB para conectar la MCU al PC

### Instalación de WSL <a href="#refheading___toc670_2080801950" id="refheading___toc670_2080801950"></a>

Antes de nada, voy a responder a la gran pregunta, Qué es WSL?.

Es e*l Subsistema de Windows para Linux que permite a los desarrolladores ejecutar un entorno Linux, incluida la mayoría de las herramientas, utilidades y aplicaciones de línea de comandos, directamente en Windows, sin modificaciones, sin la sobrecarga de una máquina virtual tradicional o una configuración de arranque dual.*

Para la mayoría de las personas esto no le será útil, pero no está de mas aclararlo. La instalación de WSL es muy sencilla. La documentación se puede consultar [aquí,](https://docs.microsoft.com/es-es/windows/wsl/install) pero continua leyendo para conocer los pasos básicos para iniciar la instalación.

<div align="left"><figure><img src="/files/b4ZpK2JQXGIwcVU7N3QO" alt=""><figcaption><p>Realize una búsqueda escribieno: símbolo del sistema</p></figcaption></figure></div>

En el símbolo del sistema como administrador, ejecute el siguiente comando:

```powershell
wsl --install
```

WSL comienza a instalarse, tenga paciencia, puede tardar bastante tiempo, ya que se tiene que descarga e instalar Ubuntu. En la tienda de Microsoft hay otro sistemas operativos de Linux disponibles y utilidades para facilitar el uso de WSL.

<div align="left"><figure><img src="/files/S87VI0HeCPSE0GvFdJH3" alt=""><figcaption></figcaption></figure></div>

Una vez completado, nos informa que los cambios no se aplicarán hasta que se haya reiniciado. Continúe y reinicie su PC. Cuando se inicie la instalación debería continuar automáticamente y se abrirá una ventana de Ubuntu. Introduzca un nombre de usuario y contraseña.

{% hint style="warning" %}
Tenga presente el usuario y contraseña, habrá que utilizarlo más adelante.
{% endhint %}

<div align="left"><figure><img src="/files/HcX1QN0HrRjrt1wo9zDh" alt=""><figcaption></figcaption></figure></div>

Debería de aparecer una bienvenida en la interfaz de línea de comandos de Ubuntu.

<div align="left"><figure><img src="/files/iBhrm8Z3WFu2otfpojci" alt=""><figcaption></figcaption></figure></div>

Abra una ventana del símbolo del sistema y actualice WSL antes de continuar. Cierre WSL y vuelva a ponerlo en marcha (Ubuntu debería aparecer como cualquier otro programa en su menú) para que los cambios surtan efecto.

```powershell
wsl --update
wsl --shutdown
```

<div align="left"><figure><img src="/files/6SGh4rL7hU1PKzbdk5az" alt=""><figcaption></figcaption></figure></div>

### Preparando el sistema para compartir los puertos de comunicación. <a href="#refheading___toc672_2080801950" id="refheading___toc672_2080801950"></a>

Desafortunadamente, WSL no tiene acceso automático a dispositivos USB o puertos de comunicación en serie. Por suerte, alguien ha [agregado una herramienta](https://github.com/dorssel/usbipd-win/wiki/WSL-support#usbip-client-tools) que incluye está caracteristica.

{% hint style="info" %}
Consulte el enlace anterior para verificar nuevas funciones y configuraciones.
{% endhint %}

En el símbolo del sistema, escriba el siguiente comando para instalar **usbipd** (ejecútelo como administrador)

```powershell
winget install usbipd
```

<div align="left"><figure><img src="/files/pnwRVCHzYYF7aXmtPPmx" alt=""><figcaption></figcaption></figure></div>

Conecte la mcu(placa base) de la impresora a su PC. Comprueba que puedes ver el puerto COM en el administrador de dispositivos. En la imagen es el COM8.

<div align="left"><figure><img src="/files/f2QDufl3559o3hSj7wUQ" alt=""><figcaption></figcaption></figure></div>

Ejecute el siguiente comando y tome nota del BUSID de su mcu. en la imagen es '1-12'.

`usbipd list`

<div align="left"><figure><img src="/files/aypy3YM9Tb2ZH1wqUDgS" alt=""><figcaption></figcaption></figure></div>

Dependiendo de su configuración y de si ha usado o no WSL anteriormente y/o Docker, es posible que deba configurar Ubuntu como predeterminado.\
Ejecute el siguiente comando para verificarlo. Si no es el predeterminado, utilice la segunda línea para activarlo como predeterminado.

{% hint style="warning" %}
Puede ejecutar el primer comando para comprobar que ahora es el predeterminado.
{% endhint %}

```bash
wsl --list
wsl --setdefault Ubuntu
wsl --list
```

<div align="left"><figure><img src="/files/9nUT6P4q07FrYfhgF79M" alt=""><figcaption></figcaption></figure></div>

```bash
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
```

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

Necesitamos conectar el dispositivo USB a WSL. Vamos a ejecutar el siguiente comando en el símbolo del sistema de windows. El dispositivo debería haber desaparecido de su lista de dispositivos.

```powershell
usbipd wsl attach --busid=1-12
```

<div align="left"><figure><img src="/files/0Cafz9UP93DfGNMin6mj" alt=""><figcaption></figcaption></figure></div>

Comprueba que no está visible en WSL.

Ejecute el siguiente comando en Ubuntu.

Puede ver los resultados de ejecutar este comando antes y después de conectar el dispositivo USB a continuación.

Nos aparece un dispositivo STM32 que puedo indentificar que es mi mcu, ya que es el procesador que utiliza.

```bash
lsusb
```

<div align="left"><figure><img src="/files/tKwsxDXv51K2wvXFgcdS" alt=""><figcaption></figcaption></figure></div>

Dentro de Ubuntu, ejecute los siguientes dos comandos. Se le pedirá la contraseña de sudo. Escriba la contraseña que estableció cuando creó su usuario al principio. Presione Y cuando se le solicite continuar con la instalación.

### Configurando Ubuntu <a href="#refheading___toc674_2080801950" id="refheading___toc674_2080801950"></a>

Instala las herramientas de red, ya que más adelante las usaremos para obtener la dirección IP.

```bash
sudo apt install net-tools
```

Ahora, necesitamos tener una versión que soporte la activación de Systemd, porque se utiliza con la mayoría de los servicios (Klipper, Moonraker, etc.) en segundo plano.

**Cómo habilitar Systemd en Ubuntu/WSL**

WSL admite Systemd, pero hay que comprobar la versión que tengamos instalada.

* Los nuevos usuarios de WSL con Windows 11 22H2 o posterior recibirán automáticamente la versión de la aplicación de WSL cuando se ejecuten `wsl --install`, a menos que se agregue específicamente la opción `--inbox`.
* Los usuarios de Windows 10 necesitan [KB5020030 ](https://support.microsoft.com/en-gb/topic/november-15-2022-kb5020030-os-builds-19042-2311-19043-2311-19044-2311-and-19045-2311-preview-237a9048-f853-4e29-a3a2-62efdbea95e2)o posterior. Tenga en cuenta que aún no está claro en el momento de esta actualización si funcionarán las versiones anteriores de Windows 10. Personalmente, solo he podido validarlo en Windows 10 22H2 hasta ahora.

Con la versión de Windows necesaria puede instalar o actualizar a la versión 1.0.0 (o posterior) de la aplicación WSL mediante varios métodos:

* A través de Microsoft Store (como "Subsistema de Windows para Linux").
* O desde la [página del proyecto ](https://github.com/microsoft/WSL/releases)en el repositorio de GitHub. Para instalar una versión manualmente:
  1. Reinicie (para asegurarse de que WSL no esté en uso). Un simple `wsl --shutdown` *puede* funcionar, pero a menudo no lo hará.
  2. Descargue la versión 1.0.0 (o posterior) desde el enlace de arriba.
  3. Inicie un PowerShell de administrador y:

```powershell
           Add-AppxPackage < <path>/Microsoft.WSL_1.0.3.0_x64_ARM64.msixbundle
           wsl --version # muestra la versión.
```

Para habilitar, inicie su distribución de Ubuntu (u otra Systemd) bajo WSL (normalmente`wsl`).

```bash
sudo -e /etc/wsl.conf
```

Agregue lo siguiente:

```
[boot]
systemd=true
```

Salga de Ubuntu y de nuevo:

```bash
wsl --shutdown
```

Luego reinicie Ubuntu.

```bash
sudo systemctl status
```

... debería mostrar sus servicios Systemd.

### Instalación de Klipper <a href="#refheading___toc676_2080801950" id="refheading___toc676_2080801950"></a>

Ahora es la parte fácil. Es hora de instalar Klipper usando [KIAUH](https://github.com/th33xitus/kiauh) como estamos acostumbrados.

Ejecute los siguientes comandos en Ubuntu:

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

<div align="left"><figure><img src="/files/dcHvqzbQliuPZGU9VuRr" alt=""><figcaption></figcaption></figure></div>

A continuación, inicie KIAUH e instale los componentes en el siguiente orden:

1. Klipper
2. Moonraker
3. Mainsail o Fluidd.

Para obtener la dirección IP del dispositivo, ejecute el siguiente comando: (Busque la línea `inet debajo de eth0`)

```bash
/sbin/ifconfig
```

<div align="left"><figure><img src="/files/srhQlmt7amE1dlsrnJiz" alt=""><figcaption></figcaption></figure></div>

Escriba la ip en su navegador web y listo, ¡klipper tendría que dar señales de vida!

<div align="left"><figure><img src="/files/h4TFQkeClZ3a6RpQzD2K" alt=""><figcaption></figcaption></figure></div>

Ahora solo falta confgurar nuestra mcu como estamos acostumbrados, ya vemos el error que nos muestra la interface web, necesitamos configurar el printer.cfg. Sin embargo, debemos asegurarnos de que la MCU está conectada al puerto USB, para ello, en el símbolo del sistema de windows, ejecute el siguiente comando (añadiendo el código que identifica su mcu, recuerda que lo hemos buscamos anteriormente)

```powershell
usbipd wsl attach --busid=1-12 
```

En Ubuntu, ejecute el siguiente comando para obtener el ID del dispositivo. Pegue esta ID en su archivo printer.cfg (usando la interfaz de usuario de mainsail o fluidd) y Klipper ya estaría funcional.

```bash
ls /dev/serial/by-id/*
```

<div align="left"><figure><img src="/files/C5bLoL8bZf8uidBBRlwO" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="/files/UmKMaXGx5rLceVBac8r8" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="/files/jVLMi1ZzvStYkNYLz3te" alt=""><figcaption></figcaption></figure></div>

\
Ahora solo queda realizar la configuración especifica para su impresora.<br>


---

# 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/klipper-en-pc-con-windows-usando-wsl.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.
