Feature Request: Automatic Tool Shutdown After Last Use (Toolchanger/Multi-Tool/IDEX) #1606

Open
opened 2026-04-05 18:38:50 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @PrintStructor on 11/17/2025

Is there an existing issue for this feature request?

  • I have searched the existing issues

Yes. In multi-tool/IDEX prints, OrcaSlicer can keep inactive tools at standby temperature (typically 100°C-150°C) until the print ends, even after they are no longer needed.

This causes three main problems:

  1. Energy Waste: Unused tools consume 20-40W at standby temperature for potentially hours
  2. Oozing Issues: Even at standby temps, residual filament can ooze from inactive nozzles, creating strings and artifacts on the print
  3. Unnecessary Wear: Hotends remain heated unnecessarily, potentially reducing component lifespan

Example scenario:

  • 3-tool print, 20 layers total
  • Tool T0: Used in layers 1-5 (then idle for 15 layers at 100°C)
  • Tool T1: Used in layers 6-10 (then idle for 10 layers at 100°C)
  • Tool T2: Used in layers 11-20 (active until end)

This results in significant wasted energy and potential print quality issues from oozing.

Which printers will be beneficial to this feature?

Klipper, Marlin, Others, All

Describe the solution you'd like

Add a new setting in Printer Settings → Multi-Tool configuration:

Setting name: "Auto-shutdown unused tools"
Options:

  • ☐ Enable automatic tool shutdown after last use
  • Shutdown temperature: [0°C] (configurable)
  • Delay after last use: [0] layers (optional safety buffer)

Implementation:

  1. During slicing, track the last usage (extrusion) of each tool
  2. After a tool's final use, insert shutdown command: M104 S0 T{tool_number}
  3. Display in print preview: "Tool T{n} auto-shutdown at layer {x}"
  4. Add summary in G-code comments showing energy savings estimate

User Experience:

  • Completely automatic - no manual G-code editing required
  • Safe - uses standard temperature commands
  • Transparent - clear indication in preview and G-code
  • Optional - can be enabled/disabled per printer profile

Firmware Compatibility:

  • Marlin: M104 S0 T{n}
  • Klipper: Compatible via SET_HEATER_TEMPERATURE
  • RepRapFirmware: M568 P{n} A0

Describe alternatives you've considered

Alternative 1: Post-Processing Script (Current Workaround)
I've implemented a Python post-processing script that achieves this functionality:

Limitations of this approach:

  • Requires external script installation
  • Not integrated in slicer UI
  • Users must manually add to post-processing
  • No visual feedback in print preview

Alternative 2: Manual G-code Editing
Users can manually add M104 S0 commands, but this is:

  • Time-consuming and error-prone
  • Requires finding exact line numbers
  • Must be repeated for every print
  • Not practical for most users

Alternative 3: Firmware-Level Solution
Some firmware could implement automatic shutdown logic, but:

  • Lacks context about remaining print (slicer knows this better)
  • Would require firmware modifications by all manufacturers
  • Slicer-based solution is more universal

Why Native OrcaSlicer Implementation is Best:

  • Integrated UI - checkbox to enable/disable
  • Print preview shows shutdown points
  • No external dependencies
  • Works for all users out of the box
  • Maintains all advantages of post-processing script without the hassle

Additional context

Working Reference Implementation:
I've created a fully functional post-processing script that demonstrates this feature:

Script Features (could be integrated):
✓ Analyzes tool usage automatically
✓ Tracks last extrusion per tool
✓ Inserts shutdown commands at optimal positions
✓ Generates detailed usage report
✓ Tool change count verified to match OrcaSlicer exactly
✓ Supports M82/M83 extrusion modes
✓ Compatible with all materials and firmware

Energy Savings Example:
For a typical 3-tool, 5-hour print:

  • 2 tools finish early (avg 2 hours idle each)
  • Standby power: ~30W per tool
  • Savings: 2 tools × 2 hours × 30W = 120 Wh per print
  • Annual savings (100 prints): ~12 kWh

Community Interest:
This addresses a frequently requested feature in the multi-tool community:

  • Klipper Discourse: Multiple discussion threads
  • Reddit r/3Dprinting: Common IDEX user question
  • E3D ToolChanger community: Requested feature

Affected Printer Types:

  • IDEX printers (Flashforge Creator Pro, BCN3D Sigma, etc.)
  • Toolchanger systems (E3D ToolChanger, Jubilee, Prusa XL, DIY custom builds)
  • Any printer with 3+ independent extruders
  • Estimated user base: Thousands of multi-tool printer owners

Technical Implementation Notes:

  • Logic similar to existing standby temperature system
  • Low complexity - mainly tracking + insertion
  • Uses standard G-code commands (no special requirements)
  • Could reuse existing tool tracking code

I'm happy to contribute code or assist with implementation if this feature is considered!

Related Files:

*Originally created by @PrintStructor on 11/17/2025* ### Is there an existing issue for this feature request? - [x] I have searched the existing issues ### Is your feature request related to a problem? Yes. In multi-tool/IDEX prints, OrcaSlicer can keep inactive tools at standby temperature (typically 100°C-150°C) until the print ends, even after they are no longer needed. This causes three main problems: 1. **Energy Waste:** Unused tools consume 20-40W at standby temperature for potentially hours 2. **Oozing Issues:** Even at standby temps, residual filament can ooze from inactive nozzles, creating strings and artifacts on the print 3. **Unnecessary Wear:** Hotends remain heated unnecessarily, potentially reducing component lifespan Example scenario: - 3-tool print, 20 layers total - Tool T0: Used in layers 1-5 (then idle for 15 layers at 100°C) - Tool T1: Used in layers 6-10 (then idle for 10 layers at 100°C) - Tool T2: Used in layers 11-20 (active until end) This results in significant wasted energy and potential print quality issues from oozing. ### Which printers will be beneficial to this feature? Klipper, Marlin, Others, All ### Describe the solution you'd like Add a new setting in Printer Settings → Multi-Tool configuration: **Setting name:** "Auto-shutdown unused tools" **Options:** - ☐ Enable automatic tool shutdown after last use - Shutdown temperature: [0°C] (configurable) - Delay after last use: [0] layers (optional safety buffer) **Implementation:** 1. During slicing, track the last usage (extrusion) of each tool 2. After a tool's final use, insert shutdown command: `M104 S0 T{tool_number}` 3. Display in print preview: "Tool T{n} auto-shutdown at layer {x}" 4. Add summary in G-code comments showing energy savings estimate **User Experience:** - Completely automatic - no manual G-code editing required - Safe - uses standard temperature commands - Transparent - clear indication in preview and G-code - Optional - can be enabled/disabled per printer profile **Firmware Compatibility:** - Marlin: `M104 S0 T{n}` - Klipper: Compatible via `SET_HEATER_TEMPERATURE` - RepRapFirmware: `M568 P{n} A0` ### Describe alternatives you've considered **Alternative 1: Post-Processing Script (Current Workaround)** I've implemented a Python post-processing script that achieves this functionality: - Repository: https://github.com/PrintStructor/orcaslicer-tool-shutdown - Works by analyzing G-code and inserting shutdown commands - Successfully tested - tool change count matches OrcaSlicer Limitations of this approach: - Requires external script installation - Not integrated in slicer UI - Users must manually add to post-processing - No visual feedback in print preview **Alternative 2: Manual G-code Editing** Users can manually add M104 S0 commands, but this is: - Time-consuming and error-prone - Requires finding exact line numbers - Must be repeated for every print - Not practical for most users **Alternative 3: Firmware-Level Solution** Some firmware could implement automatic shutdown logic, but: - Lacks context about remaining print (slicer knows this better) - Would require firmware modifications by all manufacturers - Slicer-based solution is more universal **Why Native OrcaSlicer Implementation is Best:** - Integrated UI - checkbox to enable/disable - Print preview shows shutdown points - No external dependencies - Works for all users out of the box - Maintains all advantages of post-processing script without the hassle ### Additional context **Working Reference Implementation:** I've created a fully functional post-processing script that demonstrates this feature: - GitHub: https://github.com/PrintStructor/orcaslicer-tool-shutdown - Example output: https://github.com/PrintStructor/orcaslicer-tool-shutdown/blob/main/example_output.txt - Documentation: https://github.com/PrintStructor/orcaslicer-tool-shutdown/blob/main/README.md **Script Features (could be integrated):** ✓ Analyzes tool usage automatically ✓ Tracks last extrusion per tool ✓ Inserts shutdown commands at optimal positions ✓ Generates detailed usage report ✓ Tool change count verified to match OrcaSlicer exactly ✓ Supports M82/M83 extrusion modes ✓ Compatible with all materials and firmware **Energy Savings Example:** For a typical 3-tool, 5-hour print: - 2 tools finish early (avg 2 hours idle each) - Standby power: ~30W per tool - Savings: 2 tools × 2 hours × 30W = 120 Wh per print - Annual savings (100 prints): ~12 kWh **Community Interest:** This addresses a frequently requested feature in the multi-tool community: - Klipper Discourse: Multiple discussion threads - Reddit r/3Dprinting: Common IDEX user question - E3D ToolChanger community: Requested feature **Affected Printer Types:** - IDEX printers (Flashforge Creator Pro, BCN3D Sigma, etc.) - Toolchanger systems (E3D ToolChanger, Jubilee, Prusa XL, DIY custom builds) - Any printer with 3+ independent extruders - Estimated user base: Thousands of multi-tool printer owners **Technical Implementation Notes:** - Logic similar to existing standby temperature system - Low complexity - mainly tracking + insertion - Uses standard G-code commands (no special requirements) - Could reuse existing tool tracking code **I'm happy to contribute code or assist with implementation if this feature is considered!** **Related Files:** - Script: https://github.com/PrintStructor/orcaslicer-tool-shutdown/blob/main/orcaslicer_tool_shutdown.py - Example: https://github.com/PrintStructor/orcaslicer-tool-shutdown/blob/main/example_output.txt
MrUnknownDE added the enhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancementenhancement labels 2026-04-05 18:39:05 +02:00
Sign in to join this conversation.
No Label enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement enhancement
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#1606