Voron 3D Printer Configurations
This repository contains files related to my Voron 3D printer build. This includes Klipper configurations, macros, and a range of helpful scripts and setup steps.
Installation
The easiest way to setup this configuration is using the moonraker.conf
file to install and manage updates.
[update_manager voron-config]
type: git_repo
path: ~/voron-config
origin: https://github.com/SierraSoftworks/voron-config.git
primary_branch: main
managed_services: klipper
Once this is done, you'll end up with a voron-config
directory in your printer root, from which you can then symlink
to the printer_data/config
directory. This should ensure that you consistently have the most recent config available
for your printer.
git clone https://github.com/SierraSoftworks/voron-config /printing/voron-config
/printing/voron-config/scripts/install.sh
Details
Printer Build
This configuration assumes that your build reflects my own, including the following:
- Voron 2.4 R2 (350mm)
- BigTreeTech Pi v1.4
- BigTreeTech U2C v2.1
- BigTreeTech Octopus v1.1
- BigTreeTech EBB2240 v1.0
- BigTreeTech Smart Filament Sensor v1.1
- PT1000 (2 wire) hotend thermistor
- Voron Tap (R8)
- Nevermore Micro v6
- Klipper + Mainsail installed under
/printing
. - Tailscale for secure remote access.
Printer Hardware Configuration
-
Powering the EBB2240 using the HE3 port on the Octopus, allowing us to use the Octopus' built in relay to disable power remotely in an emergency.
NOTE: This requires that you compile the Octopus firmware with the
PB11
GPIO pin configured to be on at controller startup. If you do not do this, Klipper will fail to start (waiting on the EBB2240 to start) and will not enable the pin. Careful that you don't connect a heater there, as it will be on at all times! -
Using MOTOR_6 for the B stepper (and MOTOR_0 for the A stepper) to avoid needing to replace the Formbot kit cable which was too short to allow nice cable management.
-
Configuring the EBB2240 firmware to enable the
PA0
GPIO pin at startup (FAN1/heater fan) so that restarts don't run the risk of overheating the hotend. -
Nevermore v6 connected to FAN4 on the Octopus (with jumpers set to 12V supply for Sunon Maglev 5015 fans).
-
Smart Filament Sensor connected to the
DIAG_7
port on the Octopus. -
Chamber thermistor attached to
T0
on the Octopus (replacing the original hotend thermistor port).
Host Configuration
The BigTreeTech Pi starts off running the stock CB1 image, which I have then reconfigured fairly substantially. This includes at least the following:
- Moving all printing tooling and configuration to the
/printing
directory (from/home/biqu
). - Migrating all printing agents to a new
printing
user, and creating aprinting
group for it. - Creating custom user accounts with membership to the
printing
group to better manage access permissions. - Installing Tailscale to provide network access to the printer, as well as secured SSH access.
- Upgrading the OS to Debian 12 (Bookworm) to ensure we're running the latest stable packages.
- Replacing NGINX with Caddy 2.0 as the reverse proxy for Mainsail, enabling the user of Tailscale+LetsEncrypt certs.
- Setting up the
can0
network interface and configuringsystemd-network
to manage it.
Klipper Firmware Configuration
To setup the Klipper firmware, you'll need to compile it for each of the boards in your system.
You do this by running make menuconfig
and then selecting the following options (once saved,
you can run make
to compile the firmware which will be placed in out/klipper.bin
).
BTT Octopus
- Enable extra low-level configuration options
- Micro-processor architecture:
STM32
- Processor model:
STM32F446
- Bootloader offset:
32KiB
- Clock Reference:
12 MHz crystal
- Communication interface:
USB on PA11/PA12
- GPIO pins to set at micro-controller startup:
PB11
Once the firmware is built, place it on the SD card with the filename firmware.bin
and insert it into the Octopus.
A power cycle should then cause the Octopus to flash the firmware and reboot, at which point the firmware file will be
renamed to firmware.cur
.
BTT EBB2240
- Enable extra low-level configuration options
- Micro-processor architecture:
STM32
- Processor model:
STM32G0B1
- Bootloader offset:
8KiB
- Clock Reference:
8 MHz crystal
- Communication interface:
CAN bus on PB0/PB1
- CAN bus speed:
1 Mbit/s
(1000000) - GPIO pins to set at micro-controller startup:
PA0
Once the firmware is built, flash it using the CANboot tooling by running the following command:
cd /printing/canboot/scripts
python3 flash_can.py -i can0 -q # Get the CAN ID of the EBB2240
# Once you have the ID, run the following command to flash the firmware (with the ID replaced if needed)
python3 ./flash_can.py -i can0 -f /printing/klipper/out/klipper.bin -u 9cf9505f7c7c
Klipper Configuration
My Klipper configuration draws on a number of sources and integrates these into
a series of [include]
statements, using a _index.cfg
file to manage includes
within a number of subdirectories.
controllers
contains configuration files for the various control boards in the system.displays
contains configuration files for the various displays/indicators in the system.effectors
contains configuration files for things that influence the environment (heaters, fans, motors etc).features
contains configuration files for various Klipper features used by the system.macros
contains various custom macros used by the system.config.cfg
contains the_ConfigurationS
overrides used to configure the system's behaviour.printer.cfg
contains the[include]
statements for the aforementioned configs, as well as auto-generated overrides.
Macros
NEVERMORE SPEED=[0..1]
turns on the Nevermore at the requested speed (and resets any shutdown delay).NEVERMORE_OFF_AFTER SECONDS=900
turns off the Nevermore after the requested number of seconds (using delayed gcode).
Post Installation Printer Setup
PID Tuning
Once you've configured your printer, you'll need to tune the PID values for your hotend and bed. You can do this using the following commands:
G28 # Home the printer
G0 X175 Y175 # Move to the center of the bed
G0 Z10 # Move the nozzle to 10mm above the bed
# Tune the bed PID at 110C
PID_CALIBRATE HEATER=heater_bed TARGET=110
# Tune the hotend PID at 250C (make sure you have an appropriate filament loaded, like ABS/ASA)
PID_CALIBRATE HEATER=extruder TARGET=250
Probe Calibration
Ensure that the probe has been correctly calibrated and the corresponding z_offset has been set in the Klipper config. You can do this using the following commands:
G28 # Home the printer
G0 X175 Y175 # Move to the center of the bed
PROBE_CALIBRATE # Run the probe calibration routine
SAVE_CONFIG # Save the new z_offset value
Input Shaper Tuning
Once you've configured