If you are printing PETG with a PLA interface, the default cooling will likely be too strong. It works well for PLA, but when switching from PETG to PLA, both AUX fans may ramp up to around 90%, which can cause the PETG to warp and detach from the PLA interface.
If you try to manually adjust the AUX fan speeds, they will reset on each layer and during every filament change.
To fix this, you can disable automatic cooling. Once it’s disabled, you’ll have full manual control over the fans (both AUX and exhaust), and your settings won’t be overwritten. This makes the X2D perform even better than before.
To do this, comment out the following G-code:
Under Machine Start, one line below:
;M142 P6 R30 S40 U0.3 V0.8 ; set PLA/TPU/PETG exhaust chamber autocooling
I’ll also include the full code for both layer change and filament change. I’m not adding anything new—just disabling autocooling during those steps.
Happy printing!
.
.
.
Layer change G-Code
;======== X2D layer_change gcode ==========
;===== 2025/04/08 =====
{if (layer_num + 1 == 1)}
{if (overall_chamber_temperature >= 40)}
;not reset filter fan in first layer
;not reset fan
{endif}
{endif}
{if (layer_num + 1 <= close_additional_fan_first_x_layers[current_extruder])}
{if (overall_chamber_temperature < 40)}
; M106 P2 S{first_x_layer_fan_speed[current_extruder]*255.0/100.0}
; M106 P10 S{first_x_layer_fan_speed[current_extruder]*255.0/100.0}
{endif}
;not reset fan
{elsif (layer_num + 1 < additional_fan_full_speed_layer[current_extruder] && additional_fan_full_speed_layer[current_extruder] > close_additional_fan_first_x_layers[current_extruder])}
{if (overall_chamber_temperature < 40)}
; M106 P2 S{(first_x_layer_fan_speed[current_extruder] + (additional_cooling_fan_speed[current_extruder] - first_x_layer_fan_speed[current_extruder]) * (layer_num + 1 - close_additional_fan_first_x_layers[current_extruder]) / (additional_fan_full_speed_layer[current_extruder] - close_additional_fan_first_x_layers[current_extruder])) * 255.0/100.0}
; M106 P10 S{(first_x_layer_fan_speed[current_extruder] + (additional_cooling_fan_speed[current_extruder] - first_x_layer_fan_speed[current_extruder]) * (layer_num + 1 - close_additional_fan_first_x_layers[current_extruder]) / (additional_fan_full_speed_layer[current_extruder] - close_additional_fan_first_x_layers[current_extruder])) * 255.0/100.0}
{endif}
;not reset fan
;{elsif (layer_num + 1 == max(close_additional_fan_first_x_layers[current_extruder] + 1, additional_fan_full_speed_layer[current_extruder]))}
;{if (overall_chamber_temperature < 40)}
;updata chamber autocooling in Xth layer
{if (min_vitrification_temperature <= 50)}
{if (nozzle_diameter == 0.2)}
; M142 P1 R30 S35 U{max_additional_fan/100.0} V1.0 O40; set PLA/TPU ND0.2 chamber autocooling
{else}
; M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.4 chamber autocooling
{endif}
{else}
{if (nozzle_diameter == 0.2)}
; M142 P1 R35 S45 U{max_additional_fan/100.0} V0.5 O50; set PETG ND0.2 chamber autocooling
{else}
; M142 P1 R35 S50 U{max_additional_fan/100.0} V0.5 O55; set PETG ND0.4 chamber autocooling
{endif}
{endif}
{else}
;not reset filter fan in Xth layer
{endif}
;not reset fan
{endif}
; update layer progress
M73 L{layer_num+1}
M991 S0 P{layer_num} ;notify layer change
.
.
.
.
.
.
Change filament G-Code
======== X2D filament_change gcode ==========
;===== 2026/04/08 =====
M620 S[next_extruder]A B H[next_hotend]
;M204 S9000
{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}
G17
G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift
{endif}
;nozzle_change_gcode
G1 Z{max_layer_z + 3.0} F1200
M400
M106 P1 S0
{if toolchange_count == 2}
; get travel path for change filament
;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0
;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1
;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2
{endif}
{if ((filament_type[current_extruder] == “PLA”) || (filament_type[current_extruder] == “PLA-CF”) || (filament_type[current_extruder] == “PETG”)) && (nozzle_diameter[current_extruder] == 0.2)}
M620.10 A0 F74.8347 L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1
{else}
M620.10 A0 F{flush_volumetric_speeds[current_extruder]/2.4053*60} L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1
{endif}
{if ((filament_type[next_extruder] == “PLA”) || (filament_type[next_extruder] == “PLA-CF”) || (filament_type[next_extruder] == “PETG”)) && (nozzle_diameter[next_extruder] == 0.2)}
M620.10 A1 F74.8347 L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1
{else}
M620.10 A1 F{flush_volumetric_speeds[next_extruder]/2.4053*60} L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1
{endif}
M620.15 C{new_filament_temp - filament_cooling_before_tower[next_extruder]}
{if long_retraction_when_cut}
M620.11 P1 L0 I[current_extruder] B[current_hotend] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}
{else}
M620.11 P0 L0 I[current_extruder] B[current_hotend] E0
{endif}
{if long_retraction_when_ec}
M620.11 K1 I[current_extruder] B[current_hotend] R{retraction_distance_when_ec} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}
{else}
M620.11 K0 I[current_extruder] B[current_hotend] R0
{endif}
M620.22 I[next_extruder] P1 ; enable remote extruder runout auto purge.
T[next_extruder] H[next_hotend]
;deretract
{if filament_type[next_extruder] == “TPU”}
{else}
{if filament_type[next_extruder] == “PA”}
;VG1 E1 F{max(new_filament_e_feedrate, 200)}
;VG1 E1 F{max(new_filament_e_feedrate/2, 100)}
{else}
;VG1 E4 F{max(new_filament_e_feedrate, 200)}
;VG1 E4 F{max(new_filament_e_feedrate/2, 100)}
{endif}
{endif}
; VFLUSH_START
{if flush_length>41.5}
;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}
;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}
{else}
;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}
{endif}
SYNC T{ceil(flush_length / 125) * 5}
; VFLUSH_END
M1002 set_filament_type:{filament_type[next_extruder]}
M400
M83
{if next_extruder < 255}
M620.10 R{retract_length_toolchange[filament_map[next_extruder]-1]}
M628 S0
;VM109 S[new_filament_temp]
M629
M400
;prime_tower_interface
{if is_prime_tower_interface && filament_tower_interface_purge_volume !=0}
G150.1
M620.13 W0 L{filament_tower_interface_purge_volume} T{filament_tower_interface_print_temp} R0.0
{endif}
;prime_tower_interface
M983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_extruder]-1]}
M400
G1 Z{max_layer_z + 3.0} F3000
{else}
G1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000
{endif}
M621 S[next_extruder]A B
M622.1 S0 ;for prev version, default skip
M1002 judge_flag powerloss_resume_flag
M622 J1
M983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_extruder]-1]}
M400
G1 Z{max_layer_z + 3.0} F3000
M1002 set_flag powerloss_resume_flag=0
M623
M620.6 I[next_extruder] H[next_hotend] W1 ;enable ams air printing detect
{if (filament_type[next_extruder] == “TPU”)}
M1015.3 S1 H[nozzle_diameter];enable tpu clog detect
{else}
M1015.3 S0;disable tpu clog detect
{endif}
{if (filament_type[next_extruder] == “PLA”) || (filament_type[next_extruder] == “PETG”)
|| (filament_type[next_extruder] == “PLA-CF”) || (filament_type[next_extruder] == “PETG-CF”)}
M1015.4 S1 K1 H[nozzle_diameter] ;enable E air printing detect
{else}
M1015.4 S0 K0 H[nozzle_diameter] ;disable E air printing detect
{endif}
{if layer_z <= (initial_layer_print_height + 0.001)}
M204 S[initial_layer_acceleration]
{else}
M204 S[travel_acceleration]
{endif}
G1 Y256 F18000
{if (overall_chamber_temperature < 40)}
{if (layer_num + 1 <= close_additional_fan_first_x_layers[next_extruder])}
; M106 P2 S{first_x_layer_fan_speed[next_extruder]*255.0/100.0 };set first x_layer fan
; M106 P10 S{first_x_layer_fan_speed[next_extruder]*255.0/100.0 };set first x_layer fan
;{elsif (layer_num + 1 < additional_fan_full_speed_layer[next_extruder] && additional_fan_full_speed_layer[next_extruder] > close_additional_fan_first_x_layers[next_extruder])}
; M106 P2 S{(first_x_layer_fan_speed[next_extruder] + (additional_cooling_fan_speed[next_extruder] - first_x_layer_fan_speed[next_extruder]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_extruder]) / (additional_fan_full_speed_layer[next_extruder] - close_additional_fan_first_x_layers[next_extruder])) * 255.0/100.0}
; M106 P10 S{(first_x_layer_fan_speed[next_extruder] + (additional_cooling_fan_speed[next_extruder] - first_x_layer_fan_speed[next_extruder]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_extruder]) / (additional_fan_full_speed_layer[next_extruder] - close_additional_fan_first_x_layers[next_extruder])) * 255.0/100.0}
{else}
{if (min_vitrification_temperature <= 50)}
{if (nozzle_diameter == 0.2)}
; M142 P1 R30 S35 U{max_additional_fan/100.0} V1.0 O40; set PLA/TPU ND0.2 chamber autocooling
{else}
; M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.4 chamber autocooling
{endif}
{else}
{if (nozzle_diameter == 0.2)}
; M142 P1 R35 S45 U{max_additional_fan/100.0} V0.5 O50; set PETG ND0.2 chamber autocooling
{else}
; M142 P1 R35 S50 U{max_additional_fan/100.0} V0.5 O55; set PETG ND0.4 chamber autocooling
{endif}
{endif}
{endif}
{endif}
;not set fan changing filament



