Additional Tuning¶
Use this after your first successful print to refine quality and reliability. Nothing here is strictly required, but each item can reduce artifacts and increase consistency.
Hotend PID Tuning¶
Each tool's heater may need PID tuning to maintain stable temperatures. PID tuning should be done for each tool's extruder heater.
Extruder naming
The heater name differs between T0 and other tools:
- T0 uses
extruder(no number) - T1 uses
extruder1 - And so on...
Procedure:
- Select the tool you want to tune (e.g.,
T0orSELECT_TOOL T=0) - Heat the nozzle to your typical printing temperature (e.g., 220°C for PLA, 250°C for ABS)
- Run the PID calibration command:
For T0:
PID_CALIBRATE HEATER=extruder TARGET=220
For T1:
PID_CALIBRATE HEATER=extruder1 TARGET=220
- Wait for the calibration to complete
- The console will display the PID values (Kp, Ki, Kd). Copy these values.
- Manually add the PID values to your tool configuration file:
For T0 - Add to stealthchanger/tools/T0.cfg in the [extruder] section:
ini
[extruder]
control: pid
pid_Kp: <Kp_value>
pid_Ki: <Ki_value>
pid_Kd: <Kd_value>
For T1 - Add to stealthchanger/tools/T1.cfg in the [extruder1] section:
ini
[extruder1]
control: pid
pid_Kp: <Kp_value>
pid_Ki: <Ki_value>
pid_Kd: <Kd_value>
- Run
FIRMWARE_RESTARTto apply the changes.
Mesh and Z-offset touch-ups (first layer)¶
- Print a big single-layer square or a first-layer test.
- If some areas are squished or sparse in the far corners from the umbilical, it may be pulling enough to affect the first layer. Adjust the umbilical and try again.
Extrusion calibration (rotation_distance / steps)¶
- Mark filament and command a 100 mm extrude at print temp.
- Measure actual movement. Update extruder
rotation_distance(Klipper) using the ratio: new = old × (commanded / measured). - Do a short flow cube to validate; fine-tune slicer flow if necessary.
Pressure Advance¶
Pressure advance compensates for filament compression and improves print quality, especially at corners and layer changes. Each toolhead may require different pressure advance values depending on the extruder, hotend, and nozzle configuration.
Calibrating Pressure Advance¶
For each toolhead:
-
Select the toolhead you want to calibrate:
SELECT_TOOL T=0 # Replace with your tool number -
Print a pressure advance test or use Klipper's tuning tower:
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=0.005 -
Pick the segment with the most consistent walls and neat corners.
-
Note the value for that toolhead.
Setting Pressure Advance for Different Toolhead Types¶
If you have different toolhead types that have different pressure advance settings, you can save different pressure advance settings:
Method: Slicer Filament Profiles¶
Create separate filament profiles in your slicer for each toolhead, each with its own pressure advance value in one of the following ways:
-
Choose ONE way to store per-toolhead pressure advance values:
- Option A – Filament profiles: Create separate filament profiles in your slicer (OrcaSlicer, PrusaSlicer, etc.) with the correct pressure advance value for each toolhead.
- Profile for T0: Set pressure advance value for toolhead 0
- Profile for T1: Set pressure advance value for toolhead 1
- And so on for additional toolheads
- Option B – Custom filament G-code: Keep a shared filament profile, but add the
SET_PRESSURE_ADVANCEcommand to each profile’s custom G-code.- OrcaSlicer: Filament Settings → Custom G-code → Start G-code →
SET_PRESSURE_ADVANCE ADVANCE=<value> - PrusaSlicer: Printer Settings → Custom G-code → Filament G-code →
SET_PRESSURE_ADVANCE ADVANCE=<value>
- OrcaSlicer: Filament Settings → Custom G-code → Start G-code →
- Option A – Filament profiles: Create separate filament profiles in your slicer (OrcaSlicer, PrusaSlicer, etc.) with the correct pressure advance value for each toolhead.
-
Assign the correct filament profile to each toolhead when slicing:
- When setting up your print, assign the T0 filament profile to toolhead 0
- Assign the T1 filament profile to toolhead 1
- Continue for each additional toolhead
This approach ensures that each toolhead gets the correct pressure advance value when it's selected during printing, and the slicer will automatically insert the correct SET_PRESSURE_ADVANCE command for each toolhead.
If you're using multitool ramming (wipe tower), make sure pressure advance values are set in your filament settings, as the ramming process may temporarily set pressure advance to 0 and needs to restore it afterward.
Ooze Reduction¶
Reducing ooze during multi-material prints requires the slicer to actively cool idle tools, purge the nozzle as it reheats, and park the tool in a consistent location. Below are baseline configurations.
OrcaSlicer¶
-
Process → Multimaterial → Ooze prevention
- Toggle Enable on
- Set Temperature variation (drop amount) to
-25 °Cto-60 °C - Set Preheat time to your expected preheat time
-
Process → Multimaterial → Prime Tower
- Keep Prime tower enabled
- Set Minimal purge volume to
12 mm³–20 mm³ - If you use a nozzle blocker, lower the volume gradually while verifying clean tool changes
OrcaSlicer does not provide an “ooze shield/wipe wall” feature for toolchangers, so rely on the prime tower plus reduced idle temperatures to control drool.
Resonance Testing and Input Shaper Calibration¶
Input shaper compensates for printer vibrations to reduce ringing and improve print quality. For toolchangers, you should run this calibration for each toolhead, especially if they have different weights or mass distributions.
Setup¶
1. Configure Accelerometers in Toolhead Config Files¶
Name each accelerometer separately in your tool configuration files (e.g., Toolhead_T0.cfg, Toolhead_T1.cfg):
# In Toolhead_T0.cfg
[adxl345 ant0]
cs_pin: EBBT0:PB12
spi_software_sclk_pin: EBBT0:PB10
spi_software_mosi_pin: EBBT0:PB11
spi_software_miso_pin: EBBT0:PB2
axes_map: x,z,y
# In Toolhead_T1.cfg
[adxl345 ant1]
cs_pin: EBBT1:PB12
spi_software_sclk_pin: EBBT1:PB10
spi_software_mosi_pin: EBBT1:PB11
spi_software_miso_pin: EBBT1:PB2
axes_map: x,z,y
Use unique names for each accelerometer (e.g., ant0, ant1, ant2, etc.). The accelerometer type (e.g., adxl345) must match your hardware.
2. Add [resonance_tester] Section in Main printer.cfg¶
Add a single [resonance_tester] section in your main printer.cfg file (not in each toolhead config):
[resonance_tester]
accel_chip: adxl345 ant0 # Change to ant0, ant1, etc. for the tool you're testing
probe_points:
175, 175, 20 # Center of bed, 20mm above
There should only be ONE [resonance_tester] section in your entire configuration. Place it in your main printer.cfg file, not in the individual toolhead config files.
3. Verify Accelerometer is Working¶
Before running tests, verify each accelerometer is working:
ACCELEROMETER_QUERY CHIP=ant0
Replace ant0 with your accelerometer chip name (e.g., ant1, etc.). You should see accelerometer values (x, y, z) in the response.
Testing Methods¶
Method 1: Standard Klipper (TEST_RESONANCES + SHAPER_CALIBRATE)¶
This is the built-in Klipper method for input shaper calibration.
For each toolhead:
-
Update
accel_chipin[resonance_tester]to match the tool you're testing:ini [resonance_tester] accel_chip: adxl345 ant0 # Change to ant0, ant1, etc. -
Run
FIRMWARE_RESTARTto apply the change. -
Run resonance test for X axis:
TEST_RESONANCES AXIS=X -
Run resonance test for Y axis:
TEST_RESONANCES AXIS=Y -
Calculate input shaper parameters:
SHAPER_CALIBRATE -
Review the recommended shaper and frequency in the console output.
-
Apply the recommended settings to your tool's input shaper configuration:
ini # In your tool config file (e.g., Toolhead_T0.cfg) [input_shaper] shaper_freq_x: <recommended_frequency> shaper_type_x: <recommended_shaper> # e.g., mzv, ei, 2hump_ei shaper_freq_y: <recommended_frequency> shaper_type_y: <recommended_shaper> -
Run
FIRMWARE_RESTARTto apply the changes. -
Repeat steps 1-8 for each toolhead (update
accel_chipand restart for each tool).
Method 2: Klippain-ShakeTune¶
Klippain-ShakeTune is an advanced input shaper calibration tool that provides detailed graphs and analysis. It's particularly useful for toolchangers as it can switch between accelerometers without editing config files.
Option A: Using ACCEL_CHIP parameter (Recommended for toolchangers)
This method allows you to test different toolheads without editing config files or restarting:
- Run the calibration command with the accelerometer chip specified:
axes_shaper_calibration ACCEL_CHIP="'adxl345 ant0'"
Examples:
- If your accelerometer chip name has a space (e.g., adxl345 ant0):
axes_shaper_calibration ACCEL_CHIP="'adxl345 ant0'"
- Alternative example with shorter name:
axes_shaper_calibration ACCEL_CHIP="'adxl ant0'"
Note the quoting method: When your accelerometer chip name contains a space, use double quotes around single quotes: ACCEL_CHIP="'chip_name with space'". Replace the chip name with your actual accelerometer chip name (e.g., 'adxl345 ant1', 'adxl ant1', etc.).
-
Review the results in the ShakeTune web interface.
-
Apply the recommended settings to your tool's input shaper configuration (same as Method 1, step 7).
-
Repeat for each toolhead by changing the
ACCEL_CHIPparameter in the command.
Option B: Using config-based method
If you prefer the config-based approach (similar to standard Klipper):
-
Update
accel_chipin[resonance_tester]to match the tool you're testing. -
Run
FIRMWARE_RESTARTto apply the change. -
Run the ShakeTune calibration:
axes_shaper_calibration -
Review the results and apply settings.
-
Repeat for each toolhead (update
accel_chipand restart for each tool).
The axes_shaper_calibration command with ACCEL_CHIP parameter is specific to Klippain-ShakeTune and it avoids the need to edit config files and restart between tool calibrations.
FAQ (post-first-print fine-tuning)¶
- Temperatures overshoot or oscillate
- Re-run hotend/bed PID at your common temps and
SAVE_CONFIG. - First layer shifts near certain corners
- Likely cable/umbilical tug. Add slack, reclock strain relief, and re-test per the umbilical section.
- Ringing/ghosting on walls
- Lower accel/junction limits or re-run input shaper calibration. Check shuttle to backplate spacing.
- Stringing during tool changes
- Install nozzle blocker. Adjust retraction. Set slicer to reduce temperature when toolhead not printing.