Hi @SiC_FPV
Version 2 - for multiple extruders on one carriages
eg my printer … Test(2) - YouTube
Add to macro Txx
## add to T0 macro
#
# CARRIAGE_PRINT_FAN
#
## add to T1 macro
#
# CARRIAGE_PRINT_FAN
HW config FANs
# X1 print cooling fan
# [fan_generic fan]
# pin: PC9
# cycle_time: 0.0100
# kick_start_time: 1.00
# X2 print cooling fan
# [fan_generic fan1]
# pin: PA8
# cycle_time: 0.0100
# kick_start_time: 1.000
# Other define FANs
# [fan_generic fan2]
# pin:
# [fan_generic fan3]
# pin:
# [fan_generic fan4]
# pin:
# [fan_generic fan5]
# pin:
Macros M160 / M107
##########################################################
# PRINTER FANS MANAGEMENT
# Redefine G-code command M106 and M107
##########################################################
[gcode_macro M106]
description: Override "M106" to allow multiple extruders.
gcode:
{% set raw_speed = params.S|default(255)|float %}
{% set fan_speed = (raw_speed / 255.0)|round(2) %}
{% if (params.P) is defined %}
{% set target_fan = params.P|int %}
{% set default_fan = ('fan', 'fan1', 'fan2', 'fan3', 'fan4', 'fan5')[target_fan] %}
SET_FAN_SPEED FAN={default_fan} SPEED={fan_speed}
{% else %}
### carriages print cooling FAN
CARRIAGE_PRINT_FAN SPEED={fan_speed}
{% endif %}
#===============================================================
[gcode_macro M107]
description: Override "M107" to allow multiple extruders.
gcode:
{% if (params.P) is defined %}
M106 S0 P{params.P}
{% else %}
M106 S0
{% endif %}
#===============================================================
[gcode_macro CARRIAGE_PRINT_FAN]
description: Set automatically the print fan speed for dual carriages modes
#--- Carriages print cooling FANs ---
variable_fan: 'fan' # carriage X1
variable_fan1: 'fan1' # carriage X2
gcode:
### FAN speed
{% if params.SPEED is defined %}
{% set fan_speed = params.SPEED|float %}
{% else %}
### read print fan speed from active carriage/extruder
{% set fan_speed = printer["fan_generic " + fan].speed|float %}
{% set fan1_speed = printer["fan_generic " + fan1].speed|float %}
{% set fan_speed = [fan_speed, fan1_speed]|max %}
{% endif %}
### Active FAN for carriage
{% set active_toolhead =({'extruder':0,'extruder1':1,'extruder2':2,'extruder3':3})[printer['toolhead'].extruder] %}
{% if active_toolhead in [0,1] %}
### FAN on carriage X1
SET_FAN_SPEED FAN={fan} SPEED={fan_speed}
SET_FAN_SPEED FAN={fan1} SPEED=0
{% elif active_toolhead in [2,3] %}
### FAN on carriage X2
SET_FAN_SPEED FAN={fan} SPEED=0
SET_FAN_SPEED FAN={fan1} SPEED={fan_speed}
{% endif %}
```