Klipper on SV05


Hi, Markus, thanks for sharing your printer.cfg flie. :slight_smile: Looks like Andreas (@Andi85kuehn) says it works very well.

Have you updated/improved the printer.cfg file since December, and if so, would you mind sharing your current version?

Also, do you have any tips for setting up Klipper with an SV05 that you can share? I’m looking into trying this out and am entirely new to Klipper.

I recently found this SV05 printer.cfg file in the Sovol Facebook group Files section. I think it may be based on the printer.cfg file you posted. Wanted to share it here in case there is anything in it that might be interesting/useful.

Hopefully we can build some good information here for SV05 owners who would like to use Klipper! :slight_smile:

# This file contains pin mappings for the stock 2022 Sovol SV05
# with the 32-bit Creality 4.2.2 board. To use this config, during
# "make menuconfig" select Enable "extra low-level configuration options", "STMicroelectronics STM32"
# with "STM32F103".

# Flash this firmware by copying "out/klipper.bin" to a SD card and
# turning on the printer with the card inserted. The firmware
# filename must end in ".bin" and must not match the last filename
# that was flashed. Might need a renaming if printer dosnt flash.

# See docs/Config_Reference.md for a description of parameters.

path: ~/printer_data/gcodes

serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 # Adjust if needed
restart_method: command

kinematics: cartesian
max_velocity: 300
max_accel: 1000
max_z_velocity: 5
max_z_accel: 100
max_accel_to_decel: 500
square_corner_velocity: 3.0

heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
min_temp: 0
max_temp: 130

pin: PA0

home_xy_position: 74, 105 # Change coordinates to the center of your print bed
speed: 100
z_hop: 10                 # Move up 10mm
z_hop_speed: 20

step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_endstop: 220
position_max: 220
homing_speed: 50

step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA6
position_endstop: 220
position_max: 220
position_min: -4.5
homing_speed: 50

step_pin: PB6
dir_pin: PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 300


step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 7.394 # Adjust to youre needs

nozzle_diameter: 0.400
filament_diameter: 1.750
max_extrude_only_distance: 100.0

heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5

min_temp: 0
max_temp: 280

sensor_pin: ^PB1
control_pin: PB0
z_offset: 1.3
x_offset: 40
y_offset: 5

speed: 100
horizontal_move_z: 5
mesh_min: 40, 5
mesh_max: 220, 220
probe_count: 5, 5
algorithm: bicubic
fade_start: 2 # The Z height in which to start phasing out adjustment. It is a good idea to get a few layers down before starting the fade process.
fade_end: 10 # The Z height in which fade should complete

# Replace the slicer's custom start and end g-code scripts with

[gcode_macro START_PRINT]
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(200)|float %}
# Start bed heating
    M140 S{BED_TEMP}
# Wait for bed to reach temperature
    M190 S{BED_TEMP}
# Set and wait for nozzle to reach temperature
# Use absolute coordinates
# Home the printer
# reset extruder
    G92 E0

[gcode_macro END_PRINT]
# Turn off bed, extruder, and fan
    M140 S0
    M104 S0
    M106 S0
# Use relative coordinates
# Raise nozzle by 20mm
    G1 Z20 F3000
# Move nozzle away from print while retracting
# Use absolute coordinates
# reset extruder
    G92 E0
#G1 X0 Y0 E-3 F3000
    G0 X210 Y210 E-3 F3000

# Disable steppers
    M106 S0

[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
    {% set X = params.X|default(220)|int %}
    {% set Y = params.Y|default(220)|int %}
    {% set Z = params.Z|default(10)|int %}
    {% set E = params.E|default(1)|int %}
    G1 E-{E} F2100
    G1 Z{Z}
    G1 X{X} Y{Y} F6000

[gcode_macro RESUME]
rename_existing: BASE_RESUME
    {% set E = params.E|default(1)|int %}
    G1 E{E} F2100
    RESUME_BASE {get_params}

[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
variable_park: True
## Move head and retract only if not already in the pause state and park set to true
    {% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
    {% endif %}
    M106 S0

lcd_type: st7920
cs_pin: PB12
sclk_pin: PB13
sid_pin: PB15
encoder_pins: ^PB14, ^PB10
click_pin: ^!PB2


the config is not a 100% copy, but it should work in the same way.
These were my compilation instructions:

This file contains pin mappings for the stock Sovol SV05

with the 32-bit Creality 4.2.2 board (and GD32F303RET6 mcu). To use this config, during

“make menuconfig” select the STM32F103 with a “28KiB bootloader” and

serial (on USART1 PA10/PA9) communication.

you need to change the below serial: line in the mcu section to the value matching your printer

to go back to the original firmware follow the original firmware update instructions

I don’t have additional tips as the installation is straight forward if you follow i.e. the mainsailos howto.

Extruding is always an issue with this printer for me. I printed a top mounted spoolholder and removed the PTFE tube to bet a little bit better extrusion results.

1 Like

Thanks very much for the quick reply!

How has Klipper benefitted you the most with your SV05:

  • Print speed: Have you been able to significantly increase print speed w/out affecting print quality too much?
  • Print quality: Have you focused on print quality and aren’t as worried about speed?

Appreciate hearing about your experience/results in these areas.

When extrusion works, i can print about 2 times faster without loosing quality.
Input shaping using a ADXL345 also helped a bit.

Because of the stopping extrusion problem I am thinking of buying a better extruder kit or an X1.

1 Like

That is a BIG upgrade. :slight_smile: If you get it I think you will have some fun. :wink:

Thanks for the feedback.

Wanted to confirm I’ve made some progress thanks to your printer.cfg file you shared.

Pi set up w/Mainsail/Klipper (and added Octopi to allow sending jobs directly to the printer using Prusa). Printer flashed and connected to pi nicely.

Now I need to figure out a couple of things so I don’t break anything.

I had already calibrated my Z offset recently and would like to be lazy and not re-calibrate in Mainsail. Can I take my Marlin Z offset value (-0.62) and just enter that in Mainsail in the printer.cfg file? Or is that a dumb idea for some reason?

OK so I’m fully running Klipper know on my printer, and so far it’s been both more work and more difficult to set up than Ocotprint, by a good measure. I’d agree w/a 3D printing friend of mine that Klipper is for tweakers…if you just want “set it and forget it” with features like printing to your printer from the other room, monitoring job progress from your couch, etc., then Octoprint is the way to go. In some ways it’s better - it has a spool manager plugin that allows you to choose which spool you’re printing from at the start of each print, and then you can exactly monitory filmament usage on that spool and know when you’re going to run out, plan your last few prints on the spool so you don’t waste thread, etc. No such feature/add-on w/Klipper-Marlin-Fluid-Moonraker, unfortunately.

But overall Klipper looks like it will be a good platfor longer term, particularly because it means I don’t have to way for FW udpates to modify/update printer capabilities. And have to admit I enjoy futzing w/the setup, etc., now that I’ve got the basics in place.

Can you explain what you mean by “[wait] for FW [updates] to modify/update printer capabilities”?

I’ve had my SV05 for only a few hours and I’ve come across SOVOL’s GitHub where you can download the source code. From there one would make the changes they seek in something akin to PlatformIO, compile and load the firmware.bin. Am I missing something or were you not aware of that?

Or are you referring to Marlin not having features/capabilities Klipper may have?

Yes, and I’ve done that - I enabled several features in Marlin by downloading and modifying the source code from the Sovol GitHub. However, the Marlin version on their Github is not current, and updating the vanilla Marlin release to work w/the SV05 was a much more complicated and ultimately too difficult task for me. So to get the newer features and capabilities of the latest Marlin releases I would have had to wait for Sovol to update to the newer Marlin releases, which wasn’t happening.

This as well… :slight_smile:

Big news - there is an offical SV05 printer.cfg file on the Klipper Github! Happy day for those of you wanting to move to Klipper but waiting for an easier way to get started. :slight_smile:

You can find it here:

Kudos to @kenrok1 for noticing this…

Hello! Thanks @Danabw for the printer.cfg - helps a lot when you are new like me to klipper and 3d printing in general.
But i am currently strugglng with the situation when the print ends.

My build plate is not moving down and the the nozzle keeps staying at the last position.

Any advice what to add to my config to get the build plate move down and shutdown everything like the printer does when not using klipper?

Thanks for your help!