PETG on PLA support interface — measured root cause + working fix (X2D)
Same problem as others here: PETG object on a PLA support interface, the PETG lifts off the interface. Slicer fan settings seemed to do nothing — AUX ramped to ~90-100% no matter what. I spent a day measuring instead of guessing (MQTT sniffing on the printer, counting the actual G-code). Here is what is actually going on, and what fixed it.
Why your AUX slider does nothing
The filament profile’s aux fan value only survives until the first M142. The X2D machine profile re-arms chamber autocooling on every filament change:
M142 P1 R40 S45 U{max_additional_fan/100.0} V0.5 O50
With 72 tool changes in my file, that line appears 66 times in the sliced G-code. After each one the printer regulates the AUX itself — your M106 P2 from a layer-change custom G-code gets overridden at the next tool change. I verified live over MQTT that manual values do hold between tool changes, and get re-armed at each one.
Two profile values feed that line:
U = your “Auxiliary fan → ramp up to” value, taken as the maximum across all filaments. Mine was 100% → U1 → autocooling may go to full.
- Which R/S branch you get depends on
min_vitrification_temperature — the lowest softening temp of any filament in the print. PLA (45) ≤ 50 → the whole print runs the aggressive PLA cooling branch (R30 S40). 4 g of PLA interface forces 180 g of PETG into PLA cooling.
Fix (all in profiles, no machine G-code edits needed)
- Copy your interface PLA profile, set Softening temperature 45 → 51. The print then gets the PETG branch (
R40 S45 V0.5 for third-party PETG) — autocooling starts at 40 °C chamber instead of 30.
- Set “ramp up to” on BOTH filaments to your ceiling (I use 50-70%). This becomes
U and caps the autocooling.
- PETG profile: Fan speed for overhangs 90 → 20. The bridge layer over the interface counts as ~100% overhang, so it was getting the full overhang fan. (Note: it floors at your normal “Fan speed min”, so set that too if you want below 40%.)
- Bridge flow 1.0 → 1.15. I measured the extrusion cross-section per feature in the G-code: the bridge layer over the interface was getting less material per mm (0.0726 mm²) than an inner wall (0.0782). PETG cannot bond to PLA chemically — the only grip is mechanical squish into the interface lines, and the leanest extrusion on the whole layer was exactly there. 1.15 brings it to 0.0835.
- Optional, per-change fan control that actually survives: append to the filament change G-code (after the M142 block):
{if (filament_type[current_filament_id] == "PLA") && (filament_type[next_filament_id] == "PETG")}
M106 P2 S128
M106 P10 S128
{endif}
{if (filament_type[next_filament_id] == "PLA")}
M106 P2 S{additional_cooling_fan_speed[next_filament_id]*255.0/100.0}
M106 P10 S{additional_cooling_fan_speed[next_filament_id]*255.0/100.0}
{endif}
This throttles the AUX exactly when PETG starts printing onto the PLA interface and restores it when PLA prints again. Placed after the M142 it does not get overridden until the next change — where it runs again.
For reference: M106 P2 = left AUX, M106 P10 = right AUX, M106 P3 = chamber/exhaust — confirmed live against the airduct state the printer reports over MQTT.
Result: first print where the PETG stays put on the interface and the walls above it come out clean. Previously failed at the same layer every time with stock cooling.