# Octopus/Octopus Pro + EBB Toolhead (CANbridge)

En esta guía os mostraremos el proceso para tener nuestra Octopus/Octopus Pro usando un módulo EBB conectada directamente a nuestra Octopus.

{% hint style="info" %}
📖 **Review y guía completa:** [BTT Octopus: Análisis y Guía de configuración con Marlin y Klipper](https://3dwork.io/btt-octopus/) — análisis detallado del hardware, pinout y ejemplos de configuración.
{% endhint %}

## Conexiones

En la siguiente imágen podremos ver el diagrama de conexiones que vamos a utilizar:

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

Conectaremos nuestra Octopus mediante cable USB y nuestro toolhead EBB usando el conector CAN de nuestra Octopus... a continuación tenéis más detalle sobre las conexiones:

* Usaremos un cable de calidad y de la menos distancia posible USB-A a USB-c para conectar nuestra Octopus (USB-C) a nuestro host (USB-A)
* Alimentaremos desde nuestra fuente de alimentación de la impresora nuestra Octopus y el toolhead EBB
* Para el cable CANbus entre nuestra Octopus y el EBB.

  Necesitaremos un conector RJ11/12 (telefono 6 pins) y un tramo de cable, os acosejamos leer más abajo las sugerencias para el cableado CANbus, al igual que una crimpadora para esos conectores

{% tabs %}
{% tab title="Octopus CAN" %}

<figure><img src="/files/49iuH6z73S6fFo2yjLyX" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="EBB36 CAN" %}

<figure><img src="/files/Koj8hbtmQBDnjzBzfxJP" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="EBB42" %}

<figure><img src="/files/Kny76w75sTAZfbMYp5hi" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Sugerencias sobre el cableado CAN:

* La impedancia de los cables CAN debe ser de unos 120 ohms (+- 10%), para facilitar esto el cable utilizado tiene que tener una baja resistencia para mantener el umbral requerido por los receptores junto con los terminadores resistivos del bus
* La sección del cable debería de ser >= 0.22mm2
* Es aconsejable que el par de cables usados para la comunicación CAN sean trenzados o incluso en según que condiciones que estos tengan protección con un mallado extra en el cable

<img src="/files/DiCE3kFCdWYyrfvEb5eM" alt="" data-size="original">

* Es importante encontrar la combinación adecuada entre el bitrate y la longitud del cable, al final de la guía tenéis más información al respecto

<img src="/files/vwn3I8kFydoH0Xa1Afnm" alt="" data-size="original">

* Dado que el cableado va a estar en unas condiciones de temperatura y movimientos especiles en una impresora 3D se aconseja usar un cableado que sea relativamente flexible y aguante temperatura... cables PTFE suelen ser aconsejables
  {% endhint %}

## Instalando CANboot

Antes de comenzar con el proceso vamos a explicar brevemente que es CANboot y para/porque lo vamos a utilizar:

* CANboot es un bootloader que se aplica a nuestras electrónicas (Octopus y EBB en este caso) que nos va a permitir poder aplicar el firmware Klipper usando USB, USART o CAN sin necesidad de acceder físicamente a la electrónica para realizar procesos como un reset o DFU
* Utiliza un sistema similar a Klipper y su `make menuconfig` para crear, configurar y compilar el firmware

Vamos a comenzar instalando y entrando en el menú de creación del firmware/bootloader, desde el terminal SSH ejecutaremos:

```bash
cd ~
git clone https://github.com/Arksine/CanBoot
cd CanBoot
make menuconfig
```

### CANboot para Octopus

En el menu de configuración de firmware/bootloader configuraremos de la siguiente forma, recuerda que tendrás que hacerlo para tu Octopus:

{% tabs %}
{% tab title="Octopus F446" %}

<figure><img src="/files/QZW8vi540dPN1JOytBRt" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Octopus F407" %}

<figure><img src="/files/ySHIsafSKiNeqvjbJzOo" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Octopus F429" %}

<figure><img src="/files/cyxCCAEUY9KUj25dLyEN" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

Una vez ajustadas las opciones pulsaremos Q y Y para salir y guardar la configuración.\
Lanzaremos el comando make:

```bash
make
```

Al finalizar obtendremos un firmware canboot.bin en /home/pi/CanBoot/out/canboot.bin el cual deberemos de copiar a nuestro equipo si aplicamos el firmware usando la SD en la electrónica.

A continuación vamos a aplicar nuestro firmware/bootloader CANboot a nuestra Octopus, y para ello necesitaremos la aplicación [**STM32CubeProgrammer**](https://www.st.com/en/development-tools/stm32cubeprog.html) para ello necesitaremos poner nuestra Octopus en modo DFU.

* Conectaremos el cable USB entre nuestro ordenador y nuestra Octopus
* Quitaremos el jumper de los pines USB-C y pondremos un jumper en BOOT0

<figure><img src="/files/sOctON0mUDIsHFU2n3YM" alt=""><figcaption><p>Octopus v1.0/v1.1</p></figcaption></figure>

<figure><img src="/files/sAuSrULK0p97Ww2tjOri" alt=""><figcaption><p>Octopus Pro</p></figcaption></figure>

* Aplicaremos alimentación a nuestra Octpus desde la fuente de la impresora y pulsaremos y soltaremos el boton RESET, esto hará que entre en modo DFU.

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

* Abriremos en nuestro ordenador STM32CubeProgrammer, deberemos asegurarnos que tenemos **seleccionado USB** y pulsaremos el botón de **Connect** en el caso que no nos indique que estemos conectados.

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

* Deberemos de limpiar la memoria flash de nuestra Octopus.

![](/files/8Zkco22TGDFPiBGK8ZXc) ![](/files/zjaSEj9xODE737qwxBAB)

* Volveremos al inicio pulsando sobre el icono del lápiz y cargaremos nuestro firmware canboot.bin, el que preparamos para nuestra Octopus, y daremos a Download que descargará el firmware/bootloader a nuestra Octopus.

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

* Una vez aplicado apagaremos la alimentación de nuestra Octopus y quitaremos el jumper de BOOT0... ya tenemos nuestra Octopus con CANboot!!!

### CANboot para EBB

Volveremos al menu de CANboot para crear el firmware/bootloader para nuestro toolhead EBB:

```bash
make clean
make menuconfig
```

{% tabs %}
{% tab title="EBB36/42 v1.0 F072" %}

<figure><img src="/files/d2UpnIZo6CMS8Z4gY3sy" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="EBB36/42 v1.1 G0B1" %}

<figure><img src="/files/xFIk5jRR2qwmg9i3c0zf" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
En los ejemplos anteriores usamos 500000 como velocidad del bus CAN, en cualquier caso es interesante realizar la pruebas con 1000000 para ver si funciona correctamente.
{% endhint %}

Una vez ajustadas las opciones, pulsaremos Q y Y para salir y guardar la configuración.\
Lanzaremos el comando `make`:

```bash
make
```

Al finalizar obtendremos un firmware canboot.bin en /home/pi/CanBoot/out/canboot.bin el cual deberemos de copiar a nuestro equipo.

A continuación vamos a aplicar nuestro firmware/bootloader CANboot a nuestra EBB, y para ello necesitaremos la aplicación [**STM32CubeProgrammer**](https://www.st.com/en/development-tools/stm32cubeprog.html) para ello necesitaremos poner nuestra EBB en modo DFU.

* Comenzaremos colocando el jumper VUSB para que permita encender la EBB mediante USB

{% tabs %}
{% tab title="EBB36/42 v1.0 F072" %}

<figure><img src="/files/NBGyols44OyRK7kRQjqz" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="EBB36/42 v1.1/v1.2 G0B1" %}

<figure><img src="/files/5LkPqViZrpo4OqjnRvYq" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
IMPORTANTE!!

Para los modelos EBB36/42 v1.1 al entrar en modo DFU se activa el pin del calentador del hotend.\
Si tenemos alimentada nuestra EBB con la fuente de la impresora puede calentar el hotend sin ningún tipo de protección lo que puede causar daños importantes!!!
{% endhint %}
{% endtab %}
{% endtabs %}

* Activaremos el modo DFU

{% tabs %}
{% tab title="EBB36/42 v1.0 F072" %}

<figure><img src="/files/mq0Bx8O9P3K4eNOorS1n" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="EBB36/42 v1.1/v1.2 G0B1" %}
![](/files/rqBJi4ToERm9c37G83oH) ![](/files/dntp8FCgveuT971L8Z40)
{% endtab %}
{% endtabs %}

* Conectaremos la EBB a nuestro ordenador y desde STM32CubeProgrammer realizaremos los mismos pasos que hicimos para nuestra Octopus.
* Una vez finalizado el proceso apagaremos nuestra EBB quitando el cable USB, quitaremos el jumper VBUS y pondremos el jumper 120R.

{% tabs %}
{% tab title="EBB36/42 v1.0 F072" %}

<figure><img src="/files/88BPm864HhkjEEEHUBsV" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="EBB36/42 v1.1/v1.2 G0B1" %}

<figure><img src="/files/YdTgf5CLVl20G37T2WNd" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Instalando Klipper

Ahora que ya tenemos preparadas nuestra Octopus y EBB con CANboot toca ponerse con el firmware Klipper.

### Klipper para Octopus (CANbus Bridge)

* Comenzaremos creando el firmware Klipper desde make menuconfig seleccionando la configuración para nuestra Octopus usando CANbus bridge.

```bash
cd ~/klipper
make menuconfig
```

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

A la hora de generar el firmware Klipper usando como conexión CANbus asegúrate que seleccionas la velocidad correcta que usaste previamente al generar el fimware/bootloader CANboot.\
En el ejemplo usamos 500000 pero os aconsejamos hacer pruebas con 1000000.
{% endhint %}

{% tabs %}
{% tab title="Octopus F446" %}

<figure><img src="/files/cKkzHnG2PwnkFomfyR8S" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Octopus F407" %}

<figure><img src="/files/nBq0zDlq1hNoSupaQjGD" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Octopus F429" %}

<figure><img src="/files/oVWv9jyle5ADDQIbG6QP" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

* Una vez ajustadas las opciones, pulsaremos Q y Y para salir y guardar la configuración.\
  Lanzaremos el comando `make`:

```bash
make
```

* Os aconsejamos cambiar el nombre del firmware creado a octopus\_klipper.bin y lo dejaremos en el directorio de klipper para evitar que se sobreescriba

```bash
mv ~/klipper/out/klipper.bin octopus_klipper.bin
```

### Klipper para EBB

Vamos a continuar generando el firmware Klipper para nuestra EBB.

* Limpiaremos y lanzaremos nuestro `make` ajustando las opciones dependiendo de nuestro modelo:

```bash
make clean
make menuconfig
```

{% tabs %}
{% tab title="EBB36/42 v1.0 F072" %}

<figure><img src="/files/eT00s5Be3B7EEMfIPiw0" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="EBB36/42 v1.1/v1.2 G0B1" %}

<figure><img src="/files/jHNVikdB3JwuTvIqe4aT" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

* Una vez ajustadas las opciones, pulsaremos Q y Y para salir y guardar la configuración.\
  Lanzaremos el comando `make` y copiaremos el firmware creado a ebb\_klipper.bin en nuestro directorio klipper:

```bash
make
mv ~/klipper/out/klipper.bin ebb_klipper.bin
```

## Configuración Klipper

Conectaremos por USB nuestro host y Octopus alimentando esta con la alimentación de nuestra impresora. Desde el terminal SSH lanzaremos el comando:

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

Esto nos devolverá el serial id de nuestra Octopus, en nuestro caso `/dev/serial/by-id/usb-CanBoot_stm32f429xx_350026000B50314B33323220-if00` :

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

{% hint style="warning" %}
El serial id puede variar en tu caso, adapta los siguientes pasos a tu caso!!!
{% endhint %}

Ahora procederemos a aplicar el firmware Klipper que generamos en el punto anterior usando CANboot:

```bash
cd CanBoot/scripts
pip3 install pyserial
python3 flash_can.py -f ~/klipper/octopus_klipper.bin -d /dev/serial/by-id/usb-CanBoot_stm32f429xx_350026000B50314B33323220-if0
```

{% hint style="info" %}
Recuerda poner tu serial id, y el paso de pip3 install pyserial solamente es necesario que lo hagas la primera vez.
{% endhint %}

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

Ahora que ya tenemos nuestra Octopus con el firmware Klipper que habilita CANbridge procederemos a configurar nuestra interfaz CAN.

```bash
sudo nano /etc/network/interfaces.d/can0
```

Y copiaremos la siguiente configuración:

{% code title="/etc/network/interfaces.d/can0" %}

```bash
allow-hotplug can0
iface can0 can static
    bitrate 500000
    up ifconfig $IFACE txqueuelen 1024
```

{% endcode %}

* Recuerda ajustar el bitrate al mismo que indicases en tu firmware/bootloader!!!
* Usando CTRL+X y Y y ENTER guardaremos los cambios

Apagaremos la impresora, conectaremos los cables de alimentación y RJ11/12 a nuestro EBB... Volveremos a encender la impresora.

Ahora que nuestra interfaz CAN vamos a revisar que esté levantado y funcionando con el comando, `ip -s link show can0` en el caso de que diera un error podemos intentar levantarlo con `sudo ip link set up can0` :

<figure><img src="/files/1A0XX9SpPdfHuktLQhMG" alt=""><figcaption></figcaption></figure>

Si todo funcionó correctamente, lanzaremos el siguiente comando para encontrar los UUID de nuestros dispositivos CAN:

```bash
cd CanBoot/scripts
python3 flash_can.py -i can0 -q
```

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

Podemos ver los UUID de nuestra Octopus con Klipper (463b35222d7b) y nuestra EBB en CANboot (127081e7e3c6).

Ahora lanzaremos el comando para aplicar el firmware Klipper previamente creado para nuestra EBB usando la interfaz CAN:

```
python3 flash_can.py -f ~/klipper/ebb_klipper.bin -u 127081e7e3c6
```

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

## Ajustando nuestro printer.cfg

Si hemos llegado hasta aquí ya tenemos nuestro CAN montado, aplicado nuestros firmwares Klipper/CANboot y disponemos de nuestro bus CAN funcionando y los UUID de nuestros componentes.

Ahora deberemos de configurar nuestro fichero de configuración de Klipper, printer.cfg o alguno de sus includes, para indicarle que conecte con nuestros componentes usando el bus CAN.

Modificaremos nuestras secciones mcu y mcu EBBCan para indicar sus UUID:

```django
[mcu]
canbus_uuid: 463b35222d7b

[mcu EBBCan]
canbus_uuid: 127081e7e3c6
```

{% hint style="success" %}
Si tenemos problemas de conexión:

* En ocasiones el interfaz/bus CAN puede tardar en levantarse, prueba a realizar un reset o un reinicio de la máquina
* Podemos lanzar el comando `sudo ip link set up can0`
* Revisa nuestra guía de [Troubleshooting CAN](/klipper/mejoras/canbus/canbus-troubleshooting.md)
  {% endhint %}

## Actualizando nuestro firmware Klipper mediante CANboot

Dado que ya tenemos montada nuestra red CANbus y disponemos de CANboot en nuestras electrónicas, podemos realizar actualizaciones de firmware de una forma sencilla.

* Volveremos a crear el firmware tal como realizamos en pasos anteriores
* Lanzaremos el script flash\_can.py para aplicar el firmware, es importante tener el UUID

```bash
python3 flash_can.py -f ~/klipper/octopus_klipper.bin -u 463b35222d7b
```

* Realizaremos el proceso tanto para nuestra Octopus como EBB


---

# 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/mejoras/canbus/octopus-octopus-pro-+-ebb-toolhead-canbridge.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.
