Skip to content

Instantly share code, notes, and snippets.

@varazir
Forked from adelyser/biqu_bx_klipper.md
Last active August 24, 2026 23:57
Show Gist options
  • Select an option

  • Save varazir/f8994b0ebbe4ce2d1e1cdf88fb65621d to your computer and use it in GitHub Desktop.

Select an option

Save varazir/f8994b0ebbe4ce2d1e1cdf88fb65621d to your computer and use it in GitHub Desktop.
Klipper on the BIQU BX V3

Klipper on the BIQU BX V3

NOTE: If you have a V2 board/screen(HDMI),click here

First, a few requirements:

  1. You need Klipper setup on your Raspberry PI ( borad that support DSI) with your favorite control interface (Octoprint, Fluidd, Mainsail, etc..).
  2. Install the Drivers for V3 screen https://github.com/bigtreetech/BIQU-BX/tree/master/Firmware/RPi-Linux-RPi-7inch-DSI
  3. You need your favorite Touchscreen UI installed (unless you just want to run headless).
  4. You MUST have removed the Z endstop physical switch. Not disconnected, but completely removed.

NOTE: CAN will not work on this board due to a hardware mis-configuration
NOTE: I2C is not quite working yet!

Ok, so let's get started.


Klipper firmware configuration

When configuring the klipper firmware to run on the BTT SKR SE BX board, there are a couple things to know about.

  1. Use the main klipper branch.
  2. In order for the toucscreen to work, you will need to set GPIO pins PB5 and PE5 to an initial state during the config
  3. Use the config/printer-biqu-bx-2021.cfg file for your intial printer.cfg
  4. Once you are setup, you will need to calibrate your sensorless homing: https://www.klipper3d.org/TMC_Drivers.html?h=sensorless+ho#sensorless-homing

Klipper Firmware Configuration

A note on connection methods:

There are 4 different connections you can make from the Raspberry Pi to the mainboard, 2 Serial and 2 USB.

Communication Interface

  • Serial (on UART4 PA0/PA1) <--- For v3 board/screen you need to use this

To use serial connections, you have to enable the serial port on the raspberry pi and compile the correct serial port for the BX mainboard. Once you have the serial port enabled on the raspberry pi, it will show up as /dev/ttyAMAx, with x being the port number.

Once you have it setup, your printer.cfg should then contain the following under the MCU section: serial: /dev/ttyAMAx, substituting the x for your port number.


HDMI configuration

As v3 uses DSI you don't need any HDMI settings

Drivers for V3 screen

Config.txt

Example on /boot/config.txt

Make sure this are in the config.txt file, some wil be added by the drivers installation skript.
[all]
dtparam=i2c_vc=on
dtparam=i2c_arm=on
enable_uart=1
dtoverlay=disable-bt
dtoverlay=vc4-kms-dsi-btt-bxv3-7inch
disable_splash=1

Slicer configuration

For your slicer, you need to call the PRINT_START macro instead of any preliminary gcode. The NOZZLE and BED temps get passed in as arguments. Some examples for the more popular slicers:

  • Cura: PRINT_START BED={material_bed_temperature_layer_0} NOZZLE={material_print_temperature_layer_0}
  • PrusaSlicer: PRINT_START NOZZLE=[first_layer_temperature] BED=[bed_temperature]
  • Ideamaker: PRINT_START NOZZLE={temperature_heatbed} BED={temperature_extruder1}
  • Simplify3D: PRINT_START NOZZLE=[extruder0_temperature] BED=[bed0_temperature]
  • Kiri:Moto: PRINT_START NOZZLE={temp} BED={bed_temp}

Klipper Functionality

Here are some notes on how I have Klipper setup and working quite well for my machine.

Touchscreen Sleep

The Touchscreen will go dark when the printer idle timeout occurs. This happens when there is not a print job in action and currently set for 5 minutes. Pressing the Menu Knob on the display will wake up the Touchscreen.

LEDS

The Neopixels are setup and will cycle through colors on bootup. I have the idle timeout set to shut off the LEDS when the printer is inactive. The LEDs automatically come on when a print is started or when the LCD is wakened.

Homing Routine

I have programmed a reliable homing routine that works well for me, however you can adjust or setup your own to taste. My routine will do the following:

  1. Raise the Z axis
  2. Home the X axis
  3. Home the Y axis
  4. Move the probe to the center of the bed (different than the nozzle at center)
  5. Home the Z with the probe.
  • When starting a print, additionally:
  1. After the bed reaches temp, the printer waits for 90 seconds with the probe close to the bed to warm up the probe.
  2. Steps 1-5 are repeated with a warm probe
  3. Move to the origin to start the print.
@varazir

varazir commented Feb 18, 2026

Copy link
Copy Markdown
Author

I have given my BX printer to the local maker space so I can't test anything.

@CharlyJr

CharlyJr commented Apr 3, 2026

Copy link
Copy Markdown

Thanks @valpackett !!! With your help, after struggling for a week, I finally got it fixed!!!!!!!

@ldgallardo

Copy link
Copy Markdown

Ahora no me toma la sd para copiar el firmware, a alguien le paso?
entonces no puedo probar Klipper
Saludos.

@davydcr

davydcr commented Aug 21, 2026

Copy link
Copy Markdown

Ahora no me toma la sd para copiar el firmware, a alguien le paso? entonces no puedo probar Klipper Saludos.

Es necesario usar la ranura principal, no la de la pantalla de la impresora.

@ldgallardo

Copy link
Copy Markdown

Ahora no me toma la sd para copiar el firmware, a alguien le paso? entonces no puedo probar Klipper Saludos.

Es necesario usar la ranura principal, no la de la pantalla de la impresora.

Hola, lamentablemente no me tomo mas la SD, pero lo bueno y raro, ya que segun el archivo no se podia, pude grabar klipper por USB en modo DFU, y quedo funcionando, lo malo que no puedo usar la pantalla de mi vieja BIQU BX, pero klipper funcionando
Captura de pantalla 2026-08-24 204744

@ldgallardo

ldgallardo commented Aug 24, 2026

Copy link
Copy Markdown

Instalación de Klipper en BIQU BX mediante DFU por USB

Decidí documentar el proceso que utilicé para instalar Klipper en una BIQU BX, ya que encontré algunas dificultades durante la instalación y no encontré demasiada información sobre el procedimiento completo.

Utilicé una Raspberry Pi para instalar y compilar Klipper, y posteriormente pude cargar el firmware directamente en la placa de la impresora mediante USB utilizando el modo DFU.

La documentación de la BIQU BX normalmente indica realizar la actualización del firmware mediante tarjeta SD. En mi caso conseguí realizar el proceso mediante DFU por USB.


1. Preparar la Raspberry Pi

Utilicé una Raspberry Pi con Raspberry Pi OS y acceso mediante SSH.

Una vez conectado por SSH, instalé Klipper y sus dependencias.

El objetivo era tener el código fuente de Klipper en la Raspberry Pi para poder compilar el firmware directamente desde allí.


2. Configurar y compilar Klipper

Desde el directorio de Klipper ejecuté:

make menuconfig

Aquí configuré Klipper de acuerdo con la placa utilizada por la BIQU BX.

La placa utiliza un microcontrolador STM32H7, por lo que es importante seleccionar correctamente el microcontrolador y las opciones correspondientes.

Una vez terminada la configuración ejecuté:

make

Si la compilación termina correctamente, se genera:

out/klipper.bin

Ese es el archivo que posteriormente cargué en la placa.


3. Poner la BIQU BX en modo DFU

En lugar de utilizar una tarjeta SD, conecté la placa de la BIQU BX directamente a la Raspberry Pi mediante USB y la puse en modo DFU.

Para comprobar que la Raspberry Pi detectaba la placa ejecuté:

lsusb

En mi caso apareció:

0483:df11
STMicroelectronics STM Device in DFU Mode

La aparición de 0483:df11 indica que la placa está en modo DFU y preparada para recibir el firmware.


4. Flashear Klipper mediante USB

Con la placa en modo DFU ejecuté:

make flash FLASH_DEVICE=0483:df11

De esta manera pude cargar directamente el firmware compilado en la memoria del microcontrolador mediante USB.

Este fue el punto que considero más interesante de todo el proceso, ya que no utilicé una tarjeta SD para cargar Klipper.


5. Comprobar la conexión después del flasheo

Después del proceso comprobé nuevamente la conexión USB:

lsusb

También comprobé si Linux había creado el puerto serie:

ls /dev/serial/by-id/

Y, en caso de no encontrarlo, revisé:

dmesg | tail -n 50

También comprobé:

ls /dev/ttyACM*

y:

ls /dev/ttyUSB*

Un detalle importante

Durante mi instalación tuve un problema en esta etapa.

La Raspberry Pi reconocía correctamente la placa en modo DFU mediante:

0483:df11

pero después del flasheo la placa no apareció inmediatamente como dispositivo serie en /dev/serial/by-id/.

Por eso, si alguien llega a este punto y no encuentra el puerto serie, no significa necesariamente que la compilación o el flasheo hayan fallado. Conviene comprobar primero el estado USB y los mensajes del sistema.


6. Configuración de Klipper

Una vez que la placa queda correctamente conectada a la Raspberry Pi, el siguiente paso es configurar el printer.cfg correspondiente a la BIQU BX.

No voy a entrar en esta guía en la configuración de BLTouch, bed_mesh, offsets de Z, calibraciones ni ajustes de impresión.

El objetivo de este post es documentar específicamente el procedimiento que utilicé para compilar y cargar Klipper mediante DFU/USB.


Resumen

El procedimiento que utilicé fue:

Raspberry Pi
     │
     ├── Instalar Klipper
     │
     ├── make menuconfig
     │
     ├── make
     │
     └── obtener out/klipper.bin
                 │
                 ▼
          BIQU BX por USB
                 │
                 ▼
             Modo DFU
                 │
                 ▼
        0483:df11 detectado
                 │
                 ▼
 make flash FLASH_DEVICE=0483:df11
                 │
                 ▼
          Klipper cargado

Conclusión

En mi caso pude instalar el firmware de Klipper en la BIQU BX utilizando DFU mediante USB, sin necesidad de utilizar la tarjeta SD para realizar el flasheo.

El punto clave fue conseguir que la placa fuera reconocida por la Raspberry Pi como:

0483:df11

y posteriormente ejecutar:

make flash FLASH_DEVICE=0483:df11

Espero que esta experiencia pueda servirle a alguien que esté intentando instalar Klipper en una BIQU BX y tenga problemas con el método tradicional mediante SD.

Gracias
Saludos.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment