Merge branch 'master' into any-printer

This commit is contained in:
Bassam Husain
2025-01-11 18:47:01 -05:00
12 changed files with 1832 additions and 886 deletions

251
README.md
View File

@@ -1,18 +1,23 @@
# 🚨 _One-Stop-Shop_ Klipper Configuration
<p align="center">
Please consider
<a href="https://ko-fi.com/bassamanator" target="_blank">donating</a> to
support my open source work ❤️
</p>
This branch contains the OSS Klipper configuration that can be used with **any single-extruder printer** running Klipper. You must, however, have a working `printer.cfg`.
# One-Stop-Shop Klipper Configuration
| Printer | Branch |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Sovol SV06 | [master](https://github.com/bassamanator/Sovol-SV06-firmware/tree/master) |
| Sovol SV06 Skr-Mini-E3-V3.0 | [skr-mini-e3-v3](https://github.com/bassamanator/Sovol-SV06-firmware/tree/skr-mini-e3-v3) |
| Sovol SV06 Fly-E3-Pro-V3 | [fly-e3-pro-v3](https://github.com/ElPainis/Fly-E3-Pro-v3) \*\* |
| Sovol SV06 Plus | [sv06-plus](https://github.com/bassamanator/Sovol-SV06-firmware/tree/sv06-plus) |
| ${\normalsize{\textcolor{darkturquoise}{\texttt{All other printers}}}}$ | ⚡ $\small{\textcolor{darkturquoise}{\text{YOU ARE HERE}}}$ ⚡ |
| Printer | Branch |
| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| ${\normalsize{\textcolor{darkturquoise}{\text{Sovol SV06}}}}$ | [master](https://github.com/bassamanator/Sovol-SV06-firmware/tree/master) |
| Sovol SV06 SKR-Mini-E3-V3.0 | [skr-mini-e3-v3](https://github.com/bassamanator/Sovol-SV06-firmware/tree/skr-mini-e3-v3) |
| Sovol SV06 Fly-E3-Pro-V3 | [fly-e3-pro-v3](https://github.com/ElPainis/Fly-E3-Pro-v3) \*\* |
| Sovol SV06 Plus | [sv06-plus](https://github.com/bassamanator/Sovol-SV06-firmware/tree/sv06-plus) |
| All other printers | ⚡ ${\scriptsize{\textcolor{darkturquoise}{\text{YOU ARE HERE}}}}$ ⚡ |
\*\* _Maintained by [ElPainis](https://github.com/ElPainis)_
${\small{\textit{** Maintained by ElPainis}}}$
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.
> [!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
@@ -24,12 +29,10 @@ I am creating these files for my personal use and cannot be held responsible for
- [Flash Firmware](#flash-firmware)
- [Download OSS Klipper Configuration](#download-oss-klipper-configuration)
- [Setup Instructions](#setup-instructions)
- [Initial Steps](#initial-steps)
1. [Adjust Configuration with MCU Path](#adjust-configuration-with-mcu-path)
2. [Configure Your Printer](#configure-your-printer)
- [Adjust Your Slicer](#adjust-your-slicer)
- [Support Me](#support-me)
- [Directory Structure](#directory-structure)
- [Special Considerations](#special-considerations)
- [FAQ](#faq)
- [Useful Resources](#useful-resources)
- [Sovol Official Links](#sovol-official-links)
@@ -40,7 +43,7 @@ I am creating these files for my personal use and cannot be held responsible for
- 💥 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 `Mainsail` and `Fluidd`.
- Pre-configured configuration bundles based on the [Ellis SuperSlicer Print Profiles](https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles)
- Pre-configured configuration bundles based on the [Ellis SuperSlicer Print Profiles](https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles):
- SuperSlicer
- PrusaSlicer
- Macros
@@ -50,23 +53,25 @@ I am creating these files for my personal use and cannot be held responsible for
- Load/unload filament macros.
- `PURGE_LINE` macro.
- `TEST_SPEED` macro. Find instructions [here](#how-do-i-use-the-test_speed-macro).
- Klipper Adaptive Meshing & Purging (KAMP) integrated. Read about it [here](#how-do-i-enable-kamp-klipper-adaptive-meshing--purging).
- Klipper Adaptive Meshing & Purging (KAMP) integrated. Read about it [here](#what-do-i-need-to-know-about-kamp).
[🔼 Back to top](#outline)
## Stay Up-to-Date
${\normalsize{\textcolor{goldenrod}{\texttt{Star ⭐ this project}}}}$
${\normalsize{\textcolor{goldenrod}{\texttt{Star ⭐ this project.}}}}$
Watch for releases and updates. Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/37).
Watch for [updates](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/37).
<img src="./images/githubstar.gif" width="500" alt='github star'/>
<img src="./misc/images/githubstar.gif" width="500" alt='github star'/>
[🔼 Back to top](#outline)
## 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 all the documentation on this page_. 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.
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.
[🔼 Back to top](#outline)
@@ -88,8 +93,8 @@ Although I've made switching over to Klipper as easy as is possible, it can stil
- 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, via `KIAUH` for 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](https://github.com/bassamanator/Sovol-SV06-firmware/discussions) section.
- I would recommend searching for the word `NOTE` in this repository. There are roughly half a dozen short points amongst the various files that you should be aware of if you're using this configuration.
- You must have a `bed_mesh` for `PRINT_START` to work correctly. If you do not have probe to create a `bed_mesh`, simply comment out the line `BED_MESH_PROFILE LOAD=default` in the `PRINT_START` macro.
- I would recommend searching for the word `NOTE` in 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_mesh` for `PRINT_START` to work correctly. If you do not have a probe to create a `bed_mesh`, simply comment out the line `BED_MESH_PROFILE LOAD=default` in the `PRINT_START` macro.
[🔼 Back to top](#outline)
@@ -118,93 +123,37 @@ enable_object_processing: True
Simply add `[include ./osskc.cfg]` somewhere at the top of your `printer.cfg`.
[🔼 Back to top](#outline)
## Initial Steps
### Adjust Configuration with MCU Path
1. Find what port the `mcu` (printer motherboard) is connected to via **one** of the following commands:
- `ls /dev/serial/by-id/*`
- `ls /dev/serial/by-path/*`
1. The output will be something along the lines of
- `/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0`
2. Adjust the `[mcu]` section in `printer.cfg` accordingly.
```yaml
# 🗒️ This is just an example
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
restart_method: command
```
3. Do a `FIRMWARE_RESTART`.
If the Klipper flash that you did earlier was successful, and you've done everything else correctly, you should see no errors or warnings in the `Mainsail`/`Fluidd` dashboard. **Klipper has successfully been installed on your printer!**
[🔼 Back to top](#outline)
### Configure Your Printer
❗☠️ **Your finger should be on the power switch for most of these steps** ☠️❗
❗☠️ **Power off if there is a collision/problem** ☠️❗
💡 The ${\small{\textcolor{red}{\texttt{EMERGENCY STOP}}}}$ button in your dashboard works faster than hitting the power switch.
💡 Do a practice emergency stop.
💡 I recommend no filament be loaded for any of these steps.
🗒️ You will be pasting/typing these commands into the `Mainsail`/`Fluidd` console.
1. Check to see if `X` and `Y` max positions can be reached, and adjust `position_max`, if necessary. I recommend leaving a 2mm gap for safety.
1. `G28`
2. `G90`
3. `G1 X{insert_X_position_max_here} F3000`
- Example `G1 X223 F3000`
4. `G1 Y{insert_Y_position_max_here} F3000`
- Example `G1 Y223 F3000`
2. _This step is optional_: do this step if the official firmware for your printer has this as an option. Mechanical gantry calibration; `G34`. After the controlled collision against the beam at the top, there will be a 10 second pause for you to verify that both sides of the gantry are pressed up against the `stoppers` at the top. ~~You will hear a succession of beeps.~~
1. Figure out your `Z` `position_max` by baby stepping your way up to the beam, and adjust `position_max`, if necessary.
3. PID tune the bed. Ideally, all PID tuning should occur at the temperatures that you print most at.
1. `PID_TEST_BED TEMP=70`
2. `SAVE_CONFIG` (once completed)
4. PID tune the extruder while part cooling fan runs at 25%.
1. `PID_TEST_HOTEND TEMP=245`
2. `SAVE_CONFIG` (once completed)
5. Adjust `z_offset`. Make sure your nozzle if very clean. Do the [Paper test](https://www.klipper3d.org/Bed_Level.html?h=probe_calibrate#the-paper-test).
1. `DO_PROBE_CALIBRATE`
2. Follow `z_offset` setup in `Mainsail`/`Fluidd`.
3. `SAVE_CONFIG` (once completed)
6. _This step is optional_. Create a bed mesh.
1. `DO_CREATE_MESH`
2. `SAVE_CONFIG` (once completed)
🏁 If you've made it here, then your printer has been Klipperized, and is ready to print! 🏁
But first, adjust your slicer.
And remember to _adjust your slicer_.
[🔼 Back to top](#outline)
## Adjust Your Slicer
💡 If you are using the config bundles found on this repo, you can skip this step.
> [!NOTE]
> If you are using the slicer bundles found on this repo, you can skip this section.
You need to adjust the start and end gcode in your slicer. The relevant macros are `PRINT_START` and `PRINT_END`. Find instructions [here](https://ellis3dp.com/Print-Tuning-Guide/articles/passing_slicer_variables.html#slicer-start-g-code).
### Start G-Code
It varies depending on your slicer. Find instructions [here](https://ellis3dp.com/Print-Tuning-Guide/articles/passing_slicer_variables.html#slicer-start-g-code).
### 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. ⚠️ Do not attempt to use without reading [this section](#how-do-i-enable-kamp-klipper-adaptive-meshing--purging).
- `LINE_PURGE`; prints KAMP's purge line.
> [!WARNING]
> Do not attempt to use `LINE_PURGE` without reading [this section](#what-do-i-need-to-know-about-kamp).
```yaml
# 🗒️ This is just an example Start G-Code
# 📝 This is just an example Start G-Code
PRINT_START ...
PURGE_LINE
```
@@ -215,7 +164,7 @@ PURGE_LINE
Please ⭐ star this repository!
If you found my work useful, buy me a [<img src="./images/logo_white_stroke.png" height="20" alt='Ko-fi'/>](https://ko-fi.com/bassamanator).
Support [open source](https://en.wikipedia.org/wiki/Open_source), and buy me a [<img src="./misc/images/logo_white_stroke.png" height="20" alt='Ko-fi'/>](https://ko-fi.com/bassamanator).
[🔼 Back to top](#outline)
@@ -224,34 +173,71 @@ If you found my work useful, buy me a [<img src="./images/logo_white_stroke.png"
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 .
<!-- tree -a -C -I '.git|.directory' -L 1 -F -->
- Items that can _optionally_ be deleted are marked with a 💠.
<!-- tree -a -C -I '.directory' -L 1 -F -->
```sh
/home/pi/printer_data/config
├── cfgs/ ✅
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── .github/
├── .gitignore
├── images/
├── LICENSE
├── misc/
├── CODE_OF_CONDUCT.md 💠
├── CONTRIBUTING.md 💠
├── .github/ 💠
├── .gitignore 💠
├── images/ 💠
├── LICENSE 💠
├── misc/ 💠
├── moonraker.conf ✅ ❔
├── osskc.cfg ✅
├── README.md
├── SECURITY.md
└── .vscode/
├── README.md 💠
├── SECURITY.md 💠
└── .vscode/ 💠
```
[🔼 Back to top](#outline)
## 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.
[🔼 Back to top](#outline)
## 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](#what-do-i-need-to-know-about-kamp) |
### How do I import a configuration bundle into SuperSlicer/PrusaSlicer?
Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/13).
### How do I print using SuperSlicer?
### How do I print using SuperSlicer/PrusaSlicer?
Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/14).
@@ -264,27 +250,11 @@ The printer will beep upon:
- Upon `PRINT_END`.
- `MECHANICAL_GANTRY_CALIBRATION`/`G34`.
Adjust behaviour according to your needs.
| File | `cfgs/misc-macros.cfg` |
| -------- | -------------------------- |
| Section | `[gcode_macro _globals]` |
| Variable | `variable_beeping_enabled` |
| Disable | `0` |
| Enable | `1` (default) |
### I want to use a filament sensor. How do I set it up?
You can find information about the physical setup [here](https://github.com/bassamanator/everything-sovol-sv06#filament-sensor).
Adjust behaviour according to your needs.
| File | `cfgs/misc-macros.cfg` |
| -------- | ---------------------------------- |
| Section | `[gcode_macro _globals]` |
| Variable | `variable_filament_sensor_enabled` |
| Disable | `0` (default) |
| Enable | `1` |
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?
@@ -307,7 +277,8 @@ _If_ you have a working filament sensor, the same behaviour as `M600`/colour cha
### How do I resume a print after a colour change or filament runout?
⚠️ Do not disable the stepper motors during this process!
> [!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:
@@ -318,30 +289,28 @@ The printhead is now parked front center waiting for you to insert filament. You
- OR, you can push some filament by hand _making sure to first disengage the extruder's spring loaded arm_.
3. Hit resume in your Klipper dashboard.
### How do I enable KAMP (Klipper Adaptive Meshing & Purging)?
### What do I need to know about KAMP?
⚠️ No KAMP functionality can be used on low-powered devices such as the Raspberry Pi Zero.
> [!WARNING]
> No KAMP functionality can be used on low-powered devices such as the Raspberry Pi Zero.
⚠️ If KAMP is disabled, and there is no `default` mesh, `PRINT_START` will crash.
> [!WARNING]
> If KAMP is disabled, and there is no `default` mesh, `PRINT_START` will crash.
🗒️ The [Label objects setting](https://docs.mainsail.xyz/overview/features/exclude-objects#enable-the-label-objects-setting-in-your-slicer) in your slicer must be enabled for KAMP to work.
> [!IMPORTANT]
> The [Label objects setting](https://docs.mainsail.xyz/overview/features/exclude-objects#enable-the-label-objects-setting-in-your-slicer) in your slicer must be enabled for KAMP to work.
🗒️ `LINE_PURGE` is useable (on appropriate devices) even if KAMP is disabled.
> [!NOTE]
> `LINE_PURGE` is 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`.
Adjust behaviour according to your needs.
| File | `cfgs/misc-macros.cfg` |
| -------- | ------------------------ |
| Section | `[gcode_macro _globals]` |
| Variable | `variable_kamp_enable` |
| Disable | `0` (default) |
| Enable | `1` |
Read [KAMP official docs](https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging) to learn more.
### How do I use the `TEST_SPEED` macro?
⚠️ This is for advanced users only, with well oiled machines. You can cause serious damage to your printer if you're not careful. ☠️ **You have been warned** ☠️.
> [!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](https://ellis3dp.com/Print-Tuning-Guide/articles/determining_max_speeds_accels.html).