Skip to content

Instantly share code, notes, and snippets.

@BlackShadeOSS
Created May 24, 2024 09:48
Show Gist options
  • Save BlackShadeOSS/67dbeb202e4fedd263bdacd58f45d2a7 to your computer and use it in GitHub Desktop.
Save BlackShadeOSS/67dbeb202e4fedd263bdacd58f45d2a7 to your computer and use it in GitHub Desktop.
Multifan Alternative

1. Install Virtual Pins

cd ~
git clone https://github.com/pedrolamas/klipper-virtual-pins.git
./klipper-virtual-pins/install.sh

2. Add Fake Fan somewhere in config

[virtual_pins] 

[fan] 
pin: virtual_pin: fake_fan

3. Change multifan

Change multifan in tool config to fan_generic and change it's name to PartFan_T0 for tool 0 and PartFan_T1 for tool 1 etc.

[multi_fan T0_partfan] #change to [fan_generic PartFan_T0]
pin: et0:PA0

4. Delete fan from [tool]

[tool T0]
tool_number: 0
extruder: extruder
params_type: 'rods_mini_hookon'
#Delete line under from all tools config
fan: multi_fan T0_partfan
gcode_x_offset: 0
gcode_y_offset: 0
gcode_z_offset: 0
params_park_x: 0.0
params_park_y: -7.7
params_park_z: 349.5

5. Override M106

[gcode_macro M106] 
rename_existing: M106.1 
gcode: 
	{% set target = params.S|default(255)|int %} 
		SET_GCODE_VARIABLE MACRO=_TOOLGLOBALVARIABLES VARIABLE=fanspeed VALUE={target} 
	{% if printer.toolchanger.tool_number == -1 %} 
		SET_FAN_SPEED FAN=PartFan_T0 SPEED={target/255} 
	{% else %} 
		SET_FAN_SPEED FAN=PartFan_T{printer.toolchanger.tool_number} SPEED={target/255} 
	{% endif %} 
	M106.1 S{target}

6. Add Tool Variables

[gcode_macro _TOOLGLOBALVARIABLES] 
variable_fanspeed: 0 
gcode: 
	{action_respond_info("This is only variables macro")}

7. Change [toolchanger]

[toolchanger]
	...
	
  before_change_gcode:
    {% set tn = "T"+(tool.tool_number|string) %}
    {% if printer["gcode_macro " + tn ] %}
       SET_GCODE_VARIABLE MACRO={tn} VARIABLE=color VALUE="''"
       #Add the line under this
       SET_FAN_SPEED FAN=PartFan_T{tool.tool_number} SPEED=0
    {% endif %}

  after_change_gcode:
    {% set tn = "T"+(tool.tool_number|string) %}
    {% if printer["gcode_macro " + tn ] %}
       SET_GCODE_VARIABLE MACRO={tn} VARIABLE=color VALUE="'c44'"
       #Add the line under this
       M106 S{printer["gcode_macro _TOOLGLOBALVARIABLES"].fanspeed}
    {% endif %}
    
	...

8. Enjoy the sliders

Contact me on discord if you get any problems

My Discord: blackshade

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment