66 Commits

Author SHA1 Message Date
Bassam Husain
860ac59849 Update firmware. Update OS bundles; minor improvements. 2025-11-06 15:34:12 -05:00
Bassam Husain
b8fe5bbdb9 Fix support settings for 0.6 nozzle; OS. 2025-07-20 20:46:40 -04:00
Bassam Husain
75ee5ce853 Add new OS bundles: added 15mm3 profiles. 2025-05-27 00:07:14 -04:00
Bassam Husain
caf257f5dd Adjust readme: differences between marlin. 2025-05-26 18:51:09 -04:00
Bassam Husain
0c08a67f06 Turn function that allows prints to start when bed temp is 'target - 1' into a param in _globals. 2025-05-19 16:38:04 -04:00
Bassam Husain
4539b75797 Minor adjustments to README download section. Add firmware v0.13.x. 2025-05-17 19:21:12 -04:00
Bassam Husain
7e6db63cf6 Adjust OS bundles. 2025-04-20 18:01:55 -04:00
Bassam Husain
a8828801fb Adjust bundles: PS-2.9.2. 2025-04-15 02:58:09 -04:00
Bassam Husain
7c094ad4c1 Merge branch 'master' into sv06-plus 2025-03-29 20:20:00 -04:00
Bassam Husain
b02417e067 Adjust prusa bundle: improve scarf join settings; update to 2.9.1. 2025-03-29 20:18:19 -04:00
Bassam Husain
00d0fdef7b Add PS bundle 2.9.0 with 0.6 mm nozzle. 2025-02-11 03:16:16 -05:00
Bassam Husain
28a8d8a946 Add PS bundle 2.9.0 with 0.6 mm nozzle. 2025-02-11 03:11:50 -05:00
Bassam Husain
1a205958fe Add mcu timer too close error to special considerations. 2025-01-02 22:49:14 -05:00
Bassam Husain
3fecf3266d Adjust readme header. 2024-11-25 00:44:38 -05:00
Bassam Husain
da2e8b2105 Merge branch 'master' into sv06-plus 2024-09-02 14:57:31 -04:00
Bassam Husain
446f550f0f Merge branch 'master' into sv06-plus 2024-08-28 23:59:40 -04:00
Bassam Husain
7a1c7497be Merge branch 'master' into sv06-plus 2024-08-28 23:07:15 -04:00
Bassam Husain
6ac961ac5d Merge master 2024-07-05 23:59:24 -04:00
Bassam Husain
6904de8eb0 Merge branch 'master' into sv06-plus 2024-05-15 16:07:11 -04:00
Bassam Husain
92cdc64b70 Merge branch 'master' into sv06-plus 2024-05-15 15:06:21 -04:00
Bassam Husain
e826302ca3 Adjust PS config bundle: edit printer notes tab. 2024-05-07 01:18:55 -04:00
Bassam Husain
9578324800 Merge branch 'master' into sv06-plus 2024-03-08 13:46:03 -05:00
Bassam Husain
6edcaa0ec7 Merge branch 'master' into sv06-plus 2024-02-21 02:54:43 -05:00
bassamanator
eba2dee3bf Merge branch 'master' into sv06-plus 2024-01-22 23:50:41 -05:00
bassamanator
d8fd12fc7e Merge branch 'master' into sv06-plus 2024-01-16 00:08:05 -05:00
Bassam Husain
d60dbdb27f Merge branch 'master' into sv06-plus 2023-12-08 19:06:21 -05:00
Bassam Husain
a090e190fd Merge branch 'master' into sv06-plus 2023-12-08 01:13:47 -05:00
Bassam Husain
41421c7b10 Merge branch 'master' into sv06-plus 2023-12-03 00:36:51 -05:00
Bassam Husain
98f5f8a1db Merge branch 'master' into sv06-plus 2023-12-01 15:41:30 -05:00
Bassam Husain
5d2cbe02c0 Merge branch 'master' into sv06-plus 2023-12-01 14:11:22 -05:00
Bassam Husain
5a906faa0e Merge branch 'master' into sv06-plus 2023-12-01 13:59:21 -05:00
Bassam Husain
c544c811be Merge branch 'master' into sv06-plus 2023-11-27 20:34:10 -05:00
Bassam Husain
06666b3f0b Merge branch 'master' into sv06-plus 2023-11-27 19:02:00 -05:00
Bassam Husain
33e548c442 Merge branch 'master' into sv06-plus 2023-11-27 04:16:32 -05:00
Bassam Husain
3586b60959 Merge branch 'master' into sv06-plus 2023-11-27 02:28:10 -05:00
Bassam Husain
46ec52afa7 Improve bed_mesh section with the help of users: ijaaz and gaspode-wonderdog. 2023-11-25 21:45:16 -05:00
Bassam Husain
96c847a66c Add screws_tilt_adjust, axis_twist_compensation sections. 2023-11-25 02:06:48 -05:00
Bassam Husain
360c9eff51 Adjust config bundles. 2023-11-23 14:07:41 -05:00
Bassam Husain
db93adb507 Merge branch 'master' into sv06-plus 2023-11-23 04:39:35 -05:00
Bassam Husain
a01a06fe87 Merge branch 'master' into sv06-plus 2023-11-22 21:04:41 -05:00
Bassam Husain
52e7aa0e86 Merge branch 'master' into sv06-plus 2023-11-22 19:09:45 -05:00
Bassam Husain
afed2f2ecf Merge branch 'master' into sv06-plus 2023-11-20 03:19:50 -05:00
Bassam Husain
361f205980 Merge branch 'master' into sv06-plus 2023-11-20 02:46:20 -05:00
Bassam Husain
48cf6f5ef1 Merge branch 'master' into sv06-plus 2023-11-20 01:38:48 -05:00
Bassam Husain
f2df1d4d98 Adjust PS config bundle. 2023-11-19 21:38:16 -05:00
Bassam Husain
fcc276e6a8 Merge branch 'master' into sv06-plus 2023-11-19 21:15:28 -05:00
Bassam Husain
094fd2722f Merge branch 'master' into sv06-plus 2023-11-19 17:34:37 -05:00
Bassam Husain
7516f847fe Merge branch 'master' into sv06-plus 2023-09-13 18:37:36 -04:00
Bassam Husain
fae0f321ec Merge branch 'master' into sv06-plus 2023-09-13 17:22:42 -04:00
Bassam Husain
e985892303 Merge branch 'master' into sv06-plus 2023-09-10 15:11:10 -04:00
Bassam Husain
51a0b29a54 Merge branch 'master' into sv06-plus 2023-08-27 19:47:31 -04:00
Bassam Husain
268268a530 Adjust settings. 2023-08-26 19:42:59 -04:00
Bassam Husain
f118f22b54 Merge branch 'master' into sv06-plus 2023-08-26 16:57:40 -04:00
Bassam Husain
b03589bc73 Adjust sources. 2023-08-23 20:25:00 -04:00
Bassam Husain
2176a5d572 Adjust PS config bundle. 2023-08-23 19:40:43 -04:00
Bassam Husain
12a478779e Adjust PS config bundle. 2023-08-23 18:59:32 -04:00
Bassam Husain
403819a510 Add source. 2023-08-23 15:57:22 -04:00
Bassam Husain
333a90f55e Adjust PS config bundle. 2023-08-23 15:54:06 -04:00
Bassam Husain
1ae169db05 Added PS config bundle. 2023-08-23 01:16:26 -04:00
Bassam Husain
247034e87a Add colour to README.md. 2023-08-16 00:49:44 -04:00
Bassam Husain
65633e597b Cleanup in misc folder. Added plus texture. 2023-08-15 23:20:11 -04:00
Bassam Husain
2457c0622c Merge branch 'master' into sv06-plus 2023-08-13 16:14:45 -04:00
Bassam Husain
0ed21d3008 Merge branch 'master' into sv06-plus 2023-08-05 18:37:27 -04:00
Bassam Husain
1d5e35b099 Merge branch 'master' into sv06-plus 2023-08-05 02:14:51 -04:00
Bassam Husain
1c7d2b8064 Merge branch 'master' into sv06-plus 2023-07-27 16:49:14 -04:00
Bassam Husain
8c1b5093e7 Merge branch 'master' into sv06-plus 2023-07-01 02:31:22 -04:00
34 changed files with 18411 additions and 70 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
ko_fi: bassamanator

16
.vscode/settings.json vendored
View File

@@ -32,9 +32,11 @@
"pico",
"Printables",
"Prusa",
"reformats",
"runout",
"scriptsize",
"Sovol",
"superslicer",
"textcolor",
"textit",
"texttt"
@@ -65,4 +67,18 @@
"titleBar.inactiveForeground": "#e7e7e799"
},
"peacock.color": "#512e0a"
// "[html][jinja][jinja-html]": {
// "editor.formatOnSave": false,
// "editor.defaultFormatter": "monosans.djlint",
// "editor.detectIndentation": true,
// "editor.linkedEditing": true,
// "editor.tabSize": 4,
// "djlint.enableLinting": true,
// "djlint.profile": "jinja"
// },
// "djlint.showInstallError": true,
// "djlint.useVenv": false,
// "djlint.pythonPath": "/home/bassam/.local/share/uv/tools",
// "djlint.formatLanguages": ["django-html", "jinja", "jinja-html"]
}

203
README.md
View File

@@ -7,18 +7,20 @@ support my open source work ❤️
# One-Stop-Shop Klipper Configuration
| Printer | Branch |
| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| ${\normalsize{\textcolor{darkturquoise}{\text{Sovol SV06}}}}$ | [master](https://github.com/bassamanator/Sovol-SV06-firmware/tree/master) |
| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| 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}}}}$ ⚡ |
| ${\normalsize{\textcolor{darkturquoise}{\text{Sovol SV06 Plus}}}}$ | ⚡ ${\scriptsize{\textcolor{darkturquoise}{\text{YOU ARE HERE}}}}$ ⚡ |
| All other printers | [any-printer](https://github.com/bassamanator/Sovol-SV06-firmware/tree/any-printer) |
${\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.
🙏🏻 🙌🏻 Big thanks to [blanchas3d](https://github.com/blanchas3d) in testing out this branch and reporting issues.
## Outline
- [Features](#features)
@@ -28,7 +30,9 @@ ${\small{\textit{** Maintained by ElPainis}}}$
- [Klipper Installation](#klipper-installation)
- [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)
@@ -40,13 +44,16 @@ ${\small{\textit{** Maintained by ElPainis}}}$
## 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!
- 💥 This Klipper configuration is an _endpoint_, meaning that it contains **everything** that you could possibly need in order to have an excellent Klipper experience! 💥
- 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):
- SuperSlicer
- PrusaSlicer
- Macros
- 🚀 OrcaSlicer 🚀
- Printer profiles: `SV06/Plus`; `SV07/Plus`
- Bed model and texture to use in SuperSlicer/PrusaSlicer.
- Macros:
- **Improved** mechanical gantry calibration/`G34` macro 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`.
@@ -77,24 +84,31 @@ In many ways, this entire repository can be considered _my opinion_ on the `3D p
## 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.cfg` and you already have your printer up and running Klipper.
- The [master](https://github.com/bassamanator/Sovol-SV06-firmware/tree/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](https://github.com/bassamanator/everything-sovol-sv06/blob/main/initialsteps.md). 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](https://github.com/bassamanator/everything-sovol-sv06/blob/main/howto.md#disable-usb-cable-5v-pin) 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 edit `moonraker.conf` and `cfgs/misc-macros.cfg` and change any mentions of `/home/pi` to `/home/yourUserName`.
- Klipper _must_ be installed on the host Raspberry Pi for everything to work. Easiest is to use a [MainsailOS](https://github.com/mainsail-crew/mainsail/releases/latest) image. Alternatively, you can install `Fluidd` or `Mainsail` via [KIAUH](https://github.com/th33xitus/kiauh).
- This entire page is a **9 minute read**. Save yourself _hours of troubleshooting_ and read this documentation fully.
- 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.
- It is also assumed that the username on the host device is `pi`. If that is not the case, edit `moonraker.conf` and `cfgs/misc-macros.cfg` to change any mentions of `/home/pi` to `/home/yourUserName`.
- Klipper _must_ be installed on the host beforehand. Easiest is to use [MainsailOS](https://github.com/mainsail-crew/mainsail/releases/latest). [KIAUH](https://github.com/th33xitus/kiauh) is another option.
- Klipper _must_ be up to date.
- In `Fluidd`, you can do this from `Settings` > `Software Updates`.
- In `Mainsail`, you can do this from `Machine` > `Update Manager`.
- 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.~~
- It is assumed that there is one instance of Klipper installed. If that is not the case, the steps in this guide will not work _perfectly_ 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 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.
- Consider [these](https://github.com/bassamanator/everything-sovol-sv06/blob/main/parts/README.md#printed-upgrades) printable parts, and also see my [Printables](https://www.printables.com/@bassamanator) page.
> [!IMPORTANT]
> On the SV06 Plus, your screen will not work if you install Klipper. You can get it _mostly_ working again via the instructions found [here](https://github.com/fryc88/klipper-sv06plus-screen) (note that I do not maintain that repo).
> [!TIP]
> Most of the micro USB cables that you find at home are _unlikely_ to be data cables, and it is not possible to tell just by looking.
> [!CAUTION]
> Make sure your printer is in good physical condition, because print and travel speeds will be _a lot faster_. Beginners would be wise to run through [these steps](https://github.com/bassamanator/everything-sovol-sv06/blob/main/initialsteps.md).
> [!CAUTION]
> [Disable](https://github.com/bassamanator/everything-sovol-sv06/blob/main/howto.md#disable-usb-cable-5v-pin) the USB cable's 5V pin.
[🔼 Back to top](#outline)
@@ -102,28 +116,129 @@ In many ways, this entire repository can be considered _my opinion_ on the `3D p
### Flash Firmware
You must flash your motherboard according to the manufacturer's instructions.
💡 If you flashed Klipper onto your motherboard in the past, you can skip this step.
Please note:
- For the sake of simplicity, I will refer to the firmware file as `klipper.bin` even though the actual filename is something along the lines of `klipper-v0.11.0-148-g52f4e20c.bin`.
- The firmware file is located in the `misc` folder.
- Flashing will only work if current firmware filename is _different from previous flashing procedure_. The `.bin` is also important.
- You may find this [video](https://youtu.be/p6l253OJa34) useful.
> [!WARNING]
> Many users have reported having issues flashing Klipper using the Sovol microSD card.
#### 1. Prepare the microSD Card for Flashing with These Parameters
- Size: `16GB` maximum.
- File system: `FAT32`.
- Allocation unit size: `4096 bytes`.
- Must not contain any files _except_ the firmware file.
#### 2. Flashing Procedure
1. Disconnect any USB cables that might be connected to the motherboard.
2. Copy `klipper.bin` to the microSD card.
3. Make sure the printer is off.
4. Insert the microSD card into printer.
5. Turn on the printer and wait a minute (usually takes 10 seconds).
6. Turn off the printer and remove the microSD.
> [!IMPORTANT]
> ⏲️ At this point, it's not possible to tell with certainty whether your flash was successful, continue on with the guide.
[🔼 Back to top](#outline)
### Download OSS Klipper Configuration
1. [Download](https://github.com/bassamanator/Sovol-SV06-firmware/archive/refs/heads/any-printer.zip) the `ZIP` file containing the Klipper configuration.
2. The parent folder in the `ZIP` is `Sovol-SV06-firmware-any-printer`. This is relevant in the next step.
3. Extract **only** the _contents_ of the parent folder into `~/printer_data/config`.
#### Method 1: Clone the Repository
See what files are necessary and which ones can be skipped [here](#directory-structure).
💡 Make sure `git` is installed (`sudo apt update && sudo apt install git`).
💡 **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:
1. `ssh` into the Klipper host.
2. `cd ~/printer_data/config`
3. Empty entire `~/printer_data/config` folder.
- In linux, you can delete files via `rm fileName` and directories via `rmdir directoryName`.
- In linux, you can list files and folders via `ls -lah`.
4. `git clone -b sv06-plus --single-branch https://github.com/bassamanator/Sovol-SV06-firmware.git .` ⚠️ Don't miss the period!
```yaml
[file_manager]
enable_object_processing: True
```
#### Method 2: Download the ZIP
### Setup Instructions
1. [Download](https://github.com/bassamanator/Sovol-SV06-firmware/archive/refs/heads/sv06-plus.zip) the `ZIP` file containing the Klipper configuration.
2. See `Step 2` in `Method 1`.
3. The parent folder in the `ZIP` is `Sovol-SV06-firmware-sv06-plus`. This is relevant in the next step.
4. Extract **only** the _contents_ of the parent folder into `~/printer_data/config`.
Simply add `[include ./osskc.cfg]` somewhere at the top of your `printer.cfg`.
[🔼 Back to top](#outline)
And remember to _adjust your slicer_.
## Initial Steps
### Adjust Configuration with MCU Path
💡 Make sure the host and printer are connected via USB.
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` in the Klipper console.
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. 🎉 **Your printer has been Klipperized!** 🎉
[🔼 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.
> [!NOTE]
> 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. You might be able to go further, which is great, but I recommend leaving a 2mm gap for safety.
1. `G28`
2. `G90`
3. `G1 X300 F3000`
4. `G1 Y300 F3000`
2. Do a 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. Create a bed mesh.
1. `DO_CREATE_MESH`
2. `SAVE_CONFIG` (once completed)
🏁 If you've made it here, then your Klipperized printer is ready to print! 🏁
_But first_, adjust your slicer.
[🔼 Back to top](#outline)
@@ -181,13 +296,14 @@ This repository contains many files and folders. Some are _necessary_ for this K
├── cfgs/ ✅
├── CODE_OF_CONDUCT.md 💠
├── CONTRIBUTING.md 💠
├── .git/ ✅❔
├── .github/ 💠
├── .gitignore 💠
├── images/ 💠
├── .gitignore ✅❔
├── LICENSE 💠
├── misc/ 💠
├── moonraker.conf ✅
├── moonraker.conf ✅
├── osskc.cfg ✅
├── printer.cfg ✅
├── README.md 💠
├── SECURITY.md 💠
└── .vscode/ 💠
@@ -228,10 +344,18 @@ Edit the relevant file according to your needs.
| `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_filament_sensor_enabled` | `0` | `1` (default) |
| `variable_kamp_enable` | `0` (default) | `1` | See [here](#what-do-i-need-to-know-about-kamp) |
| `variable_bed_temp_over` | `0` | `10` (default) | Speeds up print start |
| `variable_bed_temp_not_exact` | `0` | `1` (default) | Speeds up print start |
### Any differences between this configuration and Sovol's Marlin firmware?
| Property | Marlin | OSS Klipper Config |
| ------------------------- | ------ | ------------------ |
| `microsteps` | 16 | 128 |
### How do I import a configuration bundle into SuperSlicer/PrusaSlicer?
@@ -243,6 +367,8 @@ Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware
### When does beeping occur?
💡 Beeping will likely not work on the SV06 Plus. I recommend not turning it on.
The printer will beep upon:
- Filament runout.
@@ -345,11 +471,14 @@ Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware
## Sources
- [Klipper Adaptive Meshing & Purging](https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging)
- [PS print settings based on Ellis' SS print settings](https://github.com/mjonuschat/PrusaSlicer-Profiles)
- [https://www.klipper3d.org](https://www.klipper3d.org)
- [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide)
- [Mechanical Gantry Calibration Macro](https://github.com/strayr/strayr-k-macros)
- [SV06 printer.cfg](https://github.com/spinixguy/Sovol-SV06-firmware)
- [SV06 Buildplate and Texture](https://www.printables.com/model/378915-sovol-sv06-buildplate-texture-and-model-for-prusas)
- [SV06 Plus Buildplate and Texture](https://www.printables.com/model/447787-sovol-sv06-plus-build-plate)
- [Ellis' SuperSlicer Profiles](https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles)
- [Klipper Adaptive Meshing & Purging](https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging)
- [PrusaSlicer Print Settings](https://github.com/mjonuschat/PrusaSlicer-Profiles)

View File

@@ -99,12 +99,12 @@ gcode:
gcode:
MECHANICAL_GANTRY_CALIBRATION
[menu __main __setup __calib __mech_gantry_calibrate]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: G34 Gantry Level
gcode:
G34
#[menu __main __setup __calib __mech_gantry_calibrate]
#type: command
#enable: {not printer.idle_timeout.state == "Printing"}
#name: G34 Gantry Level
#gcode:
# G34
[force_move]
enable_force_move: true ; enable FORCE_MOVE and SET_KINEMATIC_POSITION

View File

@@ -23,16 +23,17 @@ path: /home/pi/printer_data/gcodes
[pause_resume]
[display_status]
# NOTE If you have a filament sensor, uncomment the following 4 lines
# [delayed_gcode DISABLEFILAMENTSENSOR]
# initial_duration: 1
# gcode:
# SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0
[delayed_gcode DISABLEFILAMENTSENSOR]
initial_duration: 1
gcode:
SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0
[gcode_macro _globals]
variable_filament_sensor_enabled: 0 # NOTE Enable(1) or disable(0) the filament sensor, if one is connected
# NOTE 0 = false; 1 = true
variable_filament_sensor_enabled: 1 # NOTE Enable(1) or disable(0) the filament sensor, if one is connected
variable_beeping_enabled: 0 # NOTE Enable(1) or disable(0) beeping everywhere except during gantry calibration
variable_bed_temp_over: 10 # NOTE Start print if bed temperature is over by this amount, otherwise wait for temperature drop
variable_bed_temp_over: 10 # NOTE Start print if bed temperature is over by this amount. Set to 0 to disable, meaning, wait for temperature to drop
variable_bed_temp_not_exact: 1 # NOTE Start print if bed temperature is `target temperature - 1` (but continue to heat until target is reached)
variable_kamp_enable: 0 # NOTE Enable(1) or disable(0) KAMP (adaptive mesh)
variable_pre_purge_prime_length: 1.40
gcode:
@@ -76,12 +77,20 @@ gcode:
[gcode_macro M190]
rename_existing: M99190
gcode:
#Parameters
# Global variables/settings
{% set bedtempNotExact = printer["gcode_macro _globals"].bed_temp_not_exact|default(1)|int %}
# Parameters
{% set s = params.S|float %}
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set bed temp
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1} ; Wait for bed temp (within 1 degree)
{% if bedtempNotExact == 1 %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-1} MAXIMUM={s+1} ; set & wait for bed temp (within -1 or +1 degree)
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; set & don't wait for bed temp
{% else %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1} ; Wait for bed temp (within +1 degree)
{% endif %}
{% endif %}
[gcode_macro PURGE_LINE]

77
misc/M503-plus-output.yml Normal file
View File

@@ -0,0 +1,77 @@
echo:; Linear Units:
echo: G21 ; (mm)
echo:; Temperature Units:
echo: M149 C ; Units in Celsius
echo:; Filament settings (Disabled):
echo: M200 S0 D1.75
echo:; Steps per unit:
echo: M92 X80.00 Y80.00 Z800.00 E691.50
echo:; Max feedrates (units/s):
echo: M203 X500.00 Y500.00 Z10.00 E50.00
echo:; Max Acceleration (units/s2):
echo: M201 X2000.00 Y2000.00 Z100.00 E5000.00
echo:; Acceleration (units/s2) (P<print-accel> R<retract-accel> T<travel-accel>):
echo: M204 P1000.00 R3000.00 T1000.00
echo:; Advanced (B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> X<max_x_jerk> Y<max_y_jerk> Z<max_z_jerk> E<max_e_jerk>):
echo: M205 B20000.00 S0.00 T0.00 X5.00 Y5.00 Z0.40 E10.00
echo:; Home offset:
echo: M206 X0.00 Y0.00 Z0.00
echo:; Auto Bed Leveling:
echo: M420 S1 Z20.00 ; Leveling ON
echo: G29 W I0 J0 Z-0.01490
echo: G29 W I1 J0 Z-0.06615
echo: G29 W I2 J0 Z-0.14615
echo: G29 W I3 J0 Z-0.44865
echo: G29 W I4 J0 Z-0.91865
echo: G29 W I0 J1 Z0.21010
echo: G29 W I1 J1 Z0.12885
echo: G29 W I2 J1 Z0.06260
echo: G29 W I3 J1 Z-0.20240
echo: G29 W I4 J1 Z-0.60365
echo: G29 W I0 J2 Z0.26885
echo: G29 W I1 J2 Z0.19760
echo: G29 W I2 J2 Z0.15135
echo: G29 W I3 J2 Z-0.07990
echo: G29 W I4 J2 Z-0.42490
echo: G29 W I0 J3 Z0.17760
echo: G29 W I1 J3 Z0.09260
echo: G29 W I2 J3 Z0.05760
echo: G29 W I3 J3 Z-0.10740
echo: G29 W I4 J3 Z-0.41740
echo: G29 W I0 J4 Z-0.02865
echo: G29 W I1 J4 Z-0.08740
echo: G29 W I2 J4 Z-0.09615
echo: G29 W I3 J4 Z-0.24615
echo: G29 W I4 J4 Z-0.53740
echo:; Material heatup parameters:
echo: M145 S0 H195.00 B60.00 F0
echo: M145 S1 H240.00 B80.00 F0
echo:; Hotend PID:
echo: M301 P15.66 I1.49 D41.96
echo:; Bed PID:
echo:echo: M304 P186.38 I36.12 D637.30
echo:; User thermistors:
echo: M305 P0 R4700.0 T94162.0 B4160.0 C0.000000000 ; HOTEND 0
echo:; LCD Brightness:
echo: M256 B250
echo:; Power-loss recovery:
echo: M413 S1 ; ON
echo:; Z-Probe Offset:
echo: M851 X25.00 Y-25.00 Z-1.81 ; (mm)
echo:; Stepper driver current:
echo: M906 X820 Y880 Z800
echo: M906 T0 E550
echo:; Hybrid Threshold:
echo: M913 X253 Y253 Z61
echo: M913 T0 E81
echo:; StallGuard threshold:
echo: M914 X86 Y110
echo:; Driver stepping mode:
echo: M569 S1 X Y Z
echo: M569 S1 T0 E
echo:; Linear Advance:
echo: M900 K0.03
echo:; Filament load/unload:
echo: M603 L0.00 U50.00 ; (mm)
echo:; Filament runout sensor:
echo: M412 S1 ; Sensor ON

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

BIN
misc/SV06Plus-texture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -23,8 +23,6 @@ You have to decide what camp you want to be apart off.
##### Update Klipper repo first
\*\* _For those coming from the_ ${\small{\textcolor{WildStrawberry}{\texttt{Before You B.egin}}}}$ _section (installing Klipper for the first time), complete_ **only** _this section_. No need to compile the firmware, etc.
It's always best to update the Klipper repository that lives on the host before compiling. This ensures that your `klipper.bin` will be as 'fresh' as possible.
- In `Fluidd`, you can do this from `Settings` > `Software Updates`.
@@ -37,9 +35,13 @@ It's always best to update the Klipper repository that lives on the host before
1. `ssh` into the Klipper host (i.e., RPi, OrangePi, etc.).
2. `cd ~/klipper`
3. `make menuconfig`
4. Set things up to look as follows:
![make-menuconfig](https://github.com/bassamanator/Sovol-SV06-firmware/assets/61985779/22298d47-2604-4231-ad10-7d6793be7904)
5. `make clean`
- Adjusts compilation settings via terminal GUI.
5. Set things up to look as follows:
<div align='center'>
<img width="561" height="323" alt="image" src="https://github.com/user-attachments/assets/868f89f7-29a2-42b6-bf08-e7a59e8c8510" />
</div>
6. `make clean`
- Clears `~/klipper/out/`
6. `make`
7. `make`
- Compiles `klipper.bin` and puts it in `~/klipper/out/`

Binary file not shown.

Binary file not shown.

73
misc/how-to-update.md Normal file
View File

@@ -0,0 +1,73 @@
\*\* _Flashing the firmware is not required for any method_
## Should You Update?
I treat this config like software, and like any piece of modern software, it will require periodic updates to fix issues, add features, improve functionality, etc. So, if you want to have the latest and greatest, I recommend you periodically pull the changes from this repo.
### What Changes Should You Be Concerned With
The only changes you need to be concerned with relate to the `.cfg` and `.conf` files; all changes to `.md` files (these are markdown files, the text that you see when you visit this repo) can be ignored.
### Git Users
If you do a `git diff origin/master --name-only` and it shows you that a `.cfg` file has changed, you might want to pull in those changes (but you don't have to).
### Non-Git Users
Unfortunately, there's no simple way for you to ascertain whether there have been changes. I simply recommend that you update your config via the instructions below from time to time.
## How to Update
There are three methods to accomplish this:
1. The correct method, using `git`.
2. The mostly acceptable method, without using `git`.
3. The start-from-scratch method. _Recommended for non-git users and those who haven't made many changes to their configuration._
### The `git` method.
⚠️ This method is only intended for those who already know how to use `git`.
📝 In this example, I'm using the `master` branch which applies to SV06 users only. Be sure to use the appropriate branch for your printer.
📝 The assumption is that you didn't change branches after the initial setup, so you are in `master`, and there are many untracked changes.
1. `ssh` into your Klipper host.
2. `cd ~/printer_data/config`
3. `git checkout -b my-settings`
4. `git add .`
5. `git commit -m "Saving my settings."`
6. `git checkout master`
7. `git pull`
8. `git checkout my-settings`
9. `git merge master --no-ff --no-commit`
10. Deal with comparing and pulling in incoming changes from `master` using your favourite code editor. You can also do this from the command line via `git commit --interactive`, however, only advanced `git` users should attempt this, though it is easy enough.
11. Add all welcomed changes to the staging area, and discard all other changes.
12. `git commit -m "Update with upstream."`
You should push your branch to your own fork of this repo.
For any future updates, you can run through the same process again, however, you cannot re-create the `my-settings` branch as you did in `step 3`, because it already exists. Simply omit the `-b` flag in `step 3` next time you update.
### The mostly acceptable method.
This method has shortcomings, because it relies on the user's memory, and requires more manual edits. Perfectly functional method, however.
1. Read all the documentation.
2. Backup your current configuration, essentially everything inside `~/printer_data/config`.
3. Repeat steps in [Download OSS Klipper Configuration](https://github.com/bassamanator/Sovol-SV06-firmware#download-oss-klipper-configuration), and [Adjust Configuration with MCU Path](https://github.com/bassamanator/Sovol-SV06-firmware#adjust-configuration-with-mcu-path).
4. Copy everything from `#*# <---------------------- SAVE_CONFIG ---------------------->` onward and paste into new `printer.cfg`, inclusive.
5. Copy any other changes you might have made into the new configuration. Maybe you had adjusted the size of your printer (`position_max`), or other such changes.
### The start-from-scratch method.
1. Delete the folder `~/printer_data/config`.
2. Recreate the folder `~/printer_data/config` via `mkdir ~/printer_data/config`.
3. Start the Klipper installation process starting from `Download OSS Klipper Configuration` in the appropriate branch.
## Linux Tips
- In linux, you can delete files via `rm fileName` and directories via `rmdir directoryName`.
- In linux, you can list files and folders via `ls -lah`.
You are now up-to-date with this repo, and have added your personal settings on top.

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,15 @@
## Converting PrusaSlicer/SuperSlicer config bundles to OrcaSlicer
OrcaSlicer configs can be converted from PrusaSlicer using [SuperSlicer_to_Orca_scripts](https://github.com/apparle/SuperSlicer_to_Orca_scripts). It is a fork of theophile's script with some enhancements which haven't been merged yet ([theophile/SuperSlicer_to_Orca_scripts#43](https://github.com/theophile/SuperSlicer_to_Orca_scripts/pull/43)). It does require a few perl modules which can be installed using `cpanminus` (or your favorite perl module manager).
Most of the script is automated, with the exception of `printer_model` field which must be manually specified with a `json`. This attribute is used by OrcaSlicer to load the appropriate build plate images & STLs.
```
perl SuperSlicer_to_Orca_scripts/superslicer_to_orca.pl --input PrusaSlicer_config_bundle-2.9.2.ini --nozzle-size 0.4 --compatible_printers_condition KEEP --skip-link-system-printer --printer-models-json printer_models_conversion_mapping.json --output-config-bundle OrcaSlicer_config_bundle-2.9.2-DEV.zip
```
## How to use OrcaSlicer bundle:
This config bundle can be imported into OrcaSlicer : `File > Import > Import configs...`
Note, OrcaSlicer reformats the `json` and adds some default attributes, so the imported files cannot be directly compared with the contents of the zipped bundle. But you can use json comparison tools like [https://www.jsondiff.com/](https://www.jsondiff.com/) to analyze the differences if needed.

View File

@@ -0,0 +1,12 @@
{
"SV06 0.4 nozzle": "Sovol SV06",
"SV06 0.6 nozzle": "Sovol SV06",
"SV06 ACE 0.4 nozzle": "Sovol SV06 ACE",
"SV06 ACE 0.6 nozzle": "Sovol SV06 ACE",
"SV06 Plus 0.4 nozzle": "Sovol SV06 Plus",
"SV06 Plus 0.6 nozzle": "Sovol SV06 Plus",
"SV07 0.4 nozzle": "Sovol SV07",
"SV07 0.6 nozzle": "Sovol SV07",
"SV07 Plus 0.4 nozzle": "Sovol SV07 Plus",
"SV07 Plus 0.6 nozzle": "Sovol SV07 Plus"
}

227
printer.cfg Normal file
View File

@@ -0,0 +1,227 @@
# This file contains pin mappings for the stock Sovol SV06 Plus.
#
# Find installation instructions at https://github.com/bassamanator/Sovol-SV06-firmware
#
# See https://www.klipper3d.org/Config_Reference.html for configuration reference.
[include ./osskc.cfg]
[mcu]
# NOTE Obtain definition by "ls /dev/serial/by-id/*" or "ls /dev/serial/by-path/*"
serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 200
max_accel: 3000
max_z_velocity: 15
max_z_accel: 45
square_corner_velocity: 8.0
#####################################################################
# X/Y/Z Stepper Settings
#####################################################################
[stepper_x]
step_pin: PC2
dir_pin: !PB9
enable_pin: !PC3
microsteps: 128
rotation_distance: 40
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
position_max: 300 # NOTE You can adjust this if you have more room
homing_speed: 40
homing_retract_dist: 0
[tmc2209 stepper_x]
uart_pin: PC1
run_current: 0.820
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 86 # NOTE Bump sensitivity; increase to make more sensitive
diag_pin: PA5
[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 128
rotation_distance: 40
endstop_pin: tmc2209_stepper_y:virtual_endstop
position_endstop: 0
position_max: 300 # NOTE You can adjust this if you have more room
homing_speed: 40
homing_retract_dist: 0
[tmc2209 stepper_y]
uart_pin: PC0
run_current: 0.880
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 110 # NOTE Bump sensitivity; increase to make more sensitive
diag_pin: PA6
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 128
rotation_distance: 4
endstop_pin: probe:z_virtual_endstop
position_min: -4
position_max: 340 # NOTE You can adjust this if you have more room
homing_speed: 5
[tmc2209 stepper_z]
uart_pin: PA15
run_current: 0.800
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
diag_pin: PA7
#####################################################################
# Extruder
#####################################################################
[extruder]
step_pin: PB4
dir_pin: !PB3
enable_pin: !PC3
microsteps: 128
rotation_distance: 4.65 # NOTE Calibrate e-steps https://www.klipper3d.org/Rotation_Distance.html#calibrating-rotation_distance-on-extruders, https://github.com/bassamanator/everything-sovol-sv06/blob/main/howto.md#calibrate-esteps
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid
pid_kd: 41.96
pid_kp: 15.66
pid_ki: 1.49
min_temp: 0
max_temp: 300
max_extrude_only_distance: 150.0
max_extrude_cross_section: 5 # NOTE Needed for KAMP purge
[tmc2209 extruder]
uart_pin: PC14
run_current: 0.550
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
#####################################################################
# Bed Heater
#####################################################################
[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
pid_kp: 186.38
pid_ki: 36.12
pid_kd: 637.30
min_temp: 0
max_temp: 110
#####################################################################
# Probe Related
#####################################################################
[probe]
pin: PB1
x_offset: 27
y_offset: -20
z_offset: 0
samples: 3
samples_result: median
samples_tolerance: 0.01
samples_tolerance_retries: 5
[safe_z_home]
home_xy_position: 123, 170
speed: 100.0
z_hop: 10
z_hop_speed: 15
[bed_mesh]
speed: 175
mesh_min: 27, 6 # probe as close to origin as possible while remaining fully on the bed
mesh_max: 299, 280 # (x.position_max - 1), (y.position_max - abs(y_offset)) ; probe as far as possible from the origin while remaining fully on the bed
probe_count: 7, 7
algorithm: bicubic
fade_start: 1
fade_end: 10
fade_target: 0
[axis_twist_compensation]
calibrate_start_x: 27 # probe x coor at furthest left ; abs(x_offset)
calibrate_end_x: 272 # probe x coor at furthest right ; (x.position_max - abs(x_offset) - 1)
calibrate_y: 154
#####################################################################
# Fans
#####################################################################
[fan]
pin: PA0
#####################################################################
# Misc
#####################################################################
# NOTE The screen is not Klipper friendly
# [display]
# lcd_type: st7920
# cs_pin: PB12
# sclk_pin: PB13
# sid_pin: PB15
# encoder_pins: ^PB14, ^PB10
# click_pin: ^!PB2
[screws_tilt_adjust]
screw1_name: center front left base
screw1: 84, 136
screw2_name: front left
screw2: 5, 55
screw3_name: front right
screw3: 244, 55
screw4_name: center front right
screw4: 164, 136
screw5_name: center back left
screw5: 84, 216
screw6_name: center back right
screw6: 164, 216
screw7_name: back left
screw7: 5, 295
screw8_name: back right
screw8: 244, 295
horizontal_move_z: 10
screw_thread: CCW-M4
# NOTE The speaker will not work, since the screen doesn't
# [output_pin beeper]
# pin: PC6
# value: 0
# shutdown_value: 0
# pwm: True
# cycle_time: 0.0005 ; Default beeper tone in kHz. 1 / 0.0005 = 2000Hz (2kHz)
[filament_switch_sensor filament_sensor]
switch_pin: PA4
pause_on_runout: True
insert_gcode:
{ action_respond_info("Insert Detected") }
runout_gcode:
{ action_respond_info("Runout Detected") }
CONDITIONAL_BEEP i=3 dur=300 freq=400