Please consider donating to support my open source work ❤️
One-Stop-Shop Klipper Configuration
| Printer | Branch |
|---|---|
{\normalsize{\textcolor{darkturquoise}{\text{Sovol SV06}}}} |
master |
| Sovol SV06 SKR-Mini-E3-V3.0 | skr-mini-e3-v3 |
| Sovol SV06 Fly-E3-Pro-V3 | fly-e3-pro-v3 ** |
| Sovol SV06 Plus | sv06-plus |
| All other printers | ⚡ {\scriptsize{\textcolor{darkturquoise}{\text{YOU ARE HERE}}}} ⚡ |
{\small{\textit{** Maintained by ElPainis}}}
Warning
I am creating these files for my personal use and cannot be held responsible for what it might do to your printer. Use at your own risk.
Outline
- Features
- Stay Up-to-Date
- Preface
- Before You Begin
- Klipper Installation
- Adjust Your Slicer
- Support Me
- Directory Structure
- Special Considerations
- FAQ
- Useful Resources
- Sovol Official Links
- Sources
Features
- 💥 This Klipper configuration is an endpoint, meaning that it contains everything that you could possibly need in order to have an excellent Klipper experience! 💥 CoreXY users can rightly disagree and say that it lacks the quad gantry levelling macros. Please create a pull request if you can help in this regard!
- Filament runout sensor usage implemented.
- Minimum configuration settings for
MainsailandFluidd. - Pre-configured configuration bundles based on the Ellis SuperSlicer Print Profiles:
- SuperSlicer
- PrusaSlicer
- Macros
- Improved mechanical gantry calibration/
G34macro that provides the user audio feedback, and time to check the calibration. - Misc macros:
PRINT_START,CANCEL_PRINT,PRINT_END,PAUSE,RESUME. - Parking macros (parks the printhead at various locations):
PARKFRONT,PARKFRONTLOW,PARKREAR,PARKCENTER,PARKBED. - Load/unload filament macros.
PURGE_LINEmacro.TEST_SPEEDmacro. Find instructions here.
- Improved mechanical gantry calibration/
- Klipper Adaptive Meshing & Purging (KAMP) integrated. Read about it here.
Stay Up-to-Date
{\normalsize{\textcolor{goldenrod}{\texttt{Star ⭐ this project.}}}}
Watch for updates.
Preface
Although I've made switching over to Klipper as easy as is possible, it can still be a challenge for some, especially considering that most of you have likely never used GNU+Linux. Save yourself the frustration, and fully read this documentation. Also note that Klipper is not a must, and is not for everyone. You can stick with Marlin, and have a fine 3D printing experience.
In many ways, this entire repository can be considered my opinion on the 3D printing experience and this has been my attempt to share that experience. Some factors, such as accuracy and testing, have been at the forefront of my thoughts during this process. I hope you find this repository suitable. Cheers.
Before You Begin
- This entire page is a 12 minute read. Save yourself hours of troubleshooting and read this documentation fully.
- It is assumed that you already have a working
printer.cfgand you already have your printer up and running Klipper. - The master branch of this repo contains baby step by step instructions on how to get Klipper going for a particular bed printer (Sovol SV06). If you are a beginner, you might find those instructions useful.
- Make sure your printer is in good physical condition, because print and travel speeds will be a lot faster than they were before. Beginner's would be wise to go through the steps mentioned here. Consider yourself warned.
- Follow the steps in order.
- If an error was reported at a step, do no proceed to the next step.
- It is assumed that you are connected to your host Raspberry Pi (or other host device) via SSH, and that your printer motherboard is connected to the host via a data USB cable. 💡 Most of the micro USB cables that you find at home are unlikely to be data cables, and it's not possible to tell just by looking.
- Disable the USB cable's 5V pin.
- It is also assumed that the username on the host device is
pi. If that is not the case, you will have to manually editmoonraker.confandcfgs/misc-macros.cfgand change any mentions of/home/pito/home/yourUserName. - Klipper must be installed on the host Raspberry Pi for everything to work. Easiest is to use a MainsailOS image. Alternatively, you can install
FluiddorMainsailvia KIAUH. - Klipper must be up to date.
- In
Fluidd, you can do this fromSettings>Software Updates. - In
Mainsail, you can do this fromMachine>Update Manager.
- In
- Robert Redford's performance in Spy Game (2001) was superb!
It is assumed that there is one instance of Klipper installed. If you have multiple instances of Klipper installed, viaKIAUHfor example, then this guide is not for you. You can still use all the configs of course, but the steps in this guide will likely not work for you.- Your question has probably been answered already, but if it hasn't, please post in the Discussion section.
- I would recommend searching for the word
NOTEin this configuration. There are roughly half a dozen short points amongst the various files that you should be aware of. - You must have a
bed_meshforPRINT_STARTto work correctly. If you do not have a probe to create abed_mesh, simply comment out the lineBED_MESH_PROFILE LOAD=defaultin thePRINT_STARTmacro.
Klipper Installation
Flash Firmware
You must flash your motherboard according to the manufacturer's instructions.
Download OSS Klipper Configuration
- Download the
ZIPfile containing the Klipper configuration. - The parent folder in the
ZIPisSovol-SV06-firmware-any-printer. This is relevant in the next step. - Extract only the contents of the parent folder into
~/printer_data/config.
See what files are necessary and which ones can be skipped here.
💡 If you get a warning that you already have a moonraker.conf and if you're not using a low powered device such as a Raspberry Pi Zero, do not overwrite the existing moonraker.conf and simply paste the following into it:
[file_manager]
enable_object_processing: True
Setup Instructions
Simply add [include ./osskc.cfg] somewhere at the top of your printer.cfg.
And remember to adjust your slicer.
Adjust Your Slicer
Note
If you are using the slicer bundles found on this repo, you can skip this section.
Start G-Code
It varies depending on your slicer. Find instructions here.
End G-Code
PRINT_END
Line Purge
If you would like to print a purge line before your print starts, at the end of your start gcode, on a new line, add one of the following:
PURGE_LINE; prints a standard purge line.LINE_PURGE; prints KAMP's purge line.
Warning
Do not attempt to use
LINE_PURGEwithout reading this section.
# 📝 This is just an example Start G-Code
PRINT_START ...
PURGE_LINE
Support Me
Please ⭐ star this repository!
Support open source, and buy me a
.
Directory Structure
This repository contains many files and folders. Some are necessary for this Klipper configuration to work, others are not.
- Necessary items are marked with a ✅.
- Items that can optionally be deleted are marked with a 💠.
/home/pi/printer_data/config
├── cfgs/ ✅
├── CODE_OF_CONDUCT.md 💠
├── CONTRIBUTING.md 💠
├── .github/ 💠
├── .gitignore 💠
├── images/ 💠
├── LICENSE 💠
├── misc/ 💠
├── moonraker.conf ✅ ❔
├── osskc.cfg ✅
├── README.md 💠
├── SECURITY.md 💠
└── .vscode/ 💠
Special Considerations
Sequential printing
If enabled, cancelling, or resuming a print from pause, could lead to collisions with previously printed objects. In order to prevent collisions, in your slicer, ensure that objects are printed from the back of the build plate to the front.
In PrusaSlicer, please see Printer Settings > Notes, for extruder clearances.
Renamed GCODE Commands
BED_MESH_CALIBRATE
Renamed to _BED_MESH_CALIBRATE.
Errors
MCU 'mcu' shutdown: Timer too close
This error often occurs when the mcu is unable to generate the required microsteps. Lower power Klipper hosts might be especially susceptible. Reducing microsteps to 64, or even 32 can resolve the issue.
FAQ
What are some settings that I can change?
Edit the relevant file according to your needs.
| File | Section |
|---|---|
cfgs/misc-macros.cfg |
[gcode_macro _globals] |
| Variable | Disable | Enable | Notes |
|---|---|---|---|
variable_beeping_enabled |
0 (default) |
1 |
|
variable_filament_sensor_enabled |
0 (default) |
1 |
|
variable_kamp_enable |
0 (default) |
1 |
See here |
How do I import a configuration bundle into SuperSlicer/PrusaSlicer?
Please see this discussion.
How do I print using SuperSlicer/PrusaSlicer?
Please see this discussion.
When does beeping occur?
The printer will beep upon:
- Filament runout.
- Filament change/
M600. - Upon
PRINT_END. MECHANICAL_GANTRY_CALIBRATION/G34.
I want to use a filament sensor. How do I set it up?
You can find information about the physical setup here.
You can test the sensor via QUERY_FILAMENT_SENSOR SENSOR=filament_sensor.
My filament runout sensor works, but I just started a print without any filament loaded. What gives?
A simple runout sensor can only detect a change in state. So, if you start a print without filament loaded, the printer will not know that there is no filament loaded. You should test your sensor by having filament loaded, starting a print, then cutting the filament. The expected behaviour is that the print will pause, and as long as you have beeping enabled, you will hear 3 annoying beeps.
What happens when I put in M600/colour change at a certain layer?
- The printer will beep 3 times (not annoyingly).
- Printing will stop.
- The printhead will park itself front center.
- The hotend will turn off, but the bed will remain hot.
What happens when I pause a print?
Same behaviour as M600/colour change except there won't be any beeping.
What happens when filament runs out?
If you have a working filament sensor, the same behaviour as M600/colour change will occur except the beeps will be fairly annoying.
How do I resume a print after a colour change or filament runout?
Warning
Do not disable the stepper motors during this process!
The printhead is now parked front center waiting for you to insert filament. You will:
- Heat up the hotend to the desired temperature.
- Use your Klipper dashboard.
- Purge (push) some filament through the nozzle.
- Use your Klipper dashboard, and extrude maybe 50mm (for a colour change you probably want to extrude more).
- OR, you can push some filament by hand making sure to first disengage the extruder's spring loaded arm.
- Hit resume in your Klipper dashboard.
What do I need to know about KAMP?
Warning
No KAMP functionality can be used on low-powered devices such as the Raspberry Pi Zero.
Warning
If KAMP is disabled, and there is no
defaultmesh,PRINT_STARTwill crash.
Important
The Label objects setting in your slicer must be enabled for KAMP to work.
Note
LINE_PURGEis useable on appropriate devices even if KAMP is disabled.
This repo contains all the code from the KAMP repository, however, only the adaptive meshing and LINE_PURGE functionality of KAMP has been configured and tested for use. To enable other functionality, adjust /cfgs/kamp/KAMP_Settings.cfg.
Read KAMP official docs to learn more.
How do I use the TEST_SPEED macro?
Warning
This is for advanced users only, with well oiled machines. You can cause serious damage to your printer if you're not careful.
Find full instructions here.
Some tips:
- Before running with
ITERATIONS=40with an untested speed/accel value, run withITERATIONS=1. - Pay close attention throughout the run, so that you can click
{\small{\textcolor{red}{\texttt{EMERGENCY STOP}}}}at a moment's notice. - This macro will simply help you determine the maximum speed your printhead and bed can reliably move at, not necessarily print at. The bottleneck for my SV06, for example, is the 15mm/s^2 that the hotend maxes out at (well under 200mm/s actual print speed).
How do I compile my own firmware?
Please see this discussion.
Useful Resources
- Everything Sovol SV06
- RP2040-Zero ADXL345 Connection Klipper
- ⭐⭐⭐⭐⭐ Ellis' Print Tuning Guide
- Simplify3D Print Quality Troubleshooting Guide