So you want to run Klipper on your BIQU BX? Well too bad it's not supported.... but I do have some good news. I have a preliminary branch ready to submit to Klipper to support the BIQU BX. Here's what you need to know in order to get started.
_**UPDATE: The Biqu BX is now supported in mainstream klipper!
NOTE: CAN will not work on this board due to a hardware mis-configuration
NOTE: I2C is not quite working yet!
First, a few requirements:
- You need Klipper setup on your Raspberry PI with your favorite control interface (Octoprint, Fluidd, Mainsail, etc..).
- You need your favorite Touchscreen UI installed (unless you just want to run headless). There is more on the HDMI config for the RPI below.
- For Octoprint, I recommend OctoDash
- For Fluidd and Mainsail, I recomment KlipperScreen
- You MUST have removed the Z endstop physical switch. Not disconnected, but completely removed.
Ok, so let's get started.
When configuring the klipper firmware to run on the BTT SKR SE BX board, there are a couple things to know about.
- Use the main klipper branch.
- In order for the toucscreen to work, you will need to set GPIO pins PB5 and PE5 to an initial state during the config
- Use the
config/printer-biqu-bx-2021.cfg
file for your intial printer.cfg - Once you are setup, you will need to calibrate your sensorless homing: https://www.klipper3d.org/TMC_Drivers.html?h=sensorless+ho#sensorless-homing
There are 4 different connections you can make from the Raspberry Pi to the mainboard, 2 Serial and 2 USB.
USB (on PA11/PA12)
is the USB port on the front base of the machine.USB (on PB14/PB15)
is the USB port on the right side of the touchscreen.Serial (on USART1 PA10/PA9)
is the TFT connector on the mainboard.Serial (on UART4 PA0/PA1)
is the WiFi connector on the mainboard.
For the HDMI to work properly with the Raspberry Pi, you need the following set in /boot/config.txt
on the Raspberry Pi. If you are currently using the RPI touchscreen, this should already be setup.
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}
Here are some notes on how I have Klipper setup and working quite well for my machine.
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.
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.
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:
- Raise the Z axis
- Home the X axis
- Home the Y axis
- Move the probe to the center of the bed (different than the nozzle at center)
- Home the Z with the probe.
- When starting a print, additionally:
- After the bed reaches temp, the printer waits for 90 seconds with the probe close to the bed to warm up the probe.
- Steps 1-5 are repeated with a warm probe
- Move to the origin to start the print.
I wanted some custom configs for OctoDash to control the LEDs and the extruder from the control screen. Here are my entries to make that happen. Edit /config/octodash/config.json
from the home directory on the Raspberry Pi with the icons you want from below.
"octodash": {
"customActions": [
{
"icon": "home",
"command": "G28 X Y Z",
"color": "#dcdde1",
"confirm": false,
"exit": true
},
{
"icon": "snowflake",
"command": "M140 S0; M104 S0",
"color": "#0097e6",
"confirm": false,
"exit": true
},
{
"icon": "long-arrow-alt-down",
"command": "M83; G1 E5 F100",
"color": "#00ff00",
"confirm": false,
"exit": false
},
{
"icon": "long-arrow-alt-up",
"command": "M83; G1 E-5 F100",
"color": "#800080",
"confirm": false,
"exit": false
},
{
"icon": "sun",
"command": "SET_LED LED=led RED=1.0 BLUE=1.0 GREEN=1.0; SET_LED LED=knob RED=1.0 BLUE=1.0 GREEN=1.0",
"color": "#ffff00",
"confirm": false,
"exit": false
},
{
"icon": "moon",
"command": "SET_LED LED=led RED=0.0 BLUE=0.0 GREEN=0.0; SET_LED LED=knob RED=0.0 BLUE=0.0 GREEN=0.0",
"color": "#bc8f8f",
"confirm": false,
"exit": false
},
{
"icon": "redo-alt",
"command": "[!RELOAD]",
"color": "#7f8fa6",
"confirm": true,
"exit": false
},
{
"icon": "power-off",
"command": "[!SHUTDOWN]",
"color": "#e84118",
"confirm": true,
"exit": false
}