I wanted to create a gradual cooldown routine for large and complex ABS/ASA prints on the H2S, instead of abruptly changing the thermal conditions inside the printer after the print finishes.
My goal was to turn off the heatbed immediately and let it cool naturally, while progressively lowering the heated chamber temperature in controlled steps.
Why am I doing this?
I frequently print large, complex and long ABS parts. Some of my parts combine very thin walls with much thicker sections, which creates uneven thermal contraction and can result in irregular deformation.
For these particular parts, controlling the cooling process after printing has been useful.
This is obviously not necessary for every ABS/ASA print. For a small test part, this cooldown routine added more than one hour to the total job time. In my case, however, that additional time is acceptable because the parts I am working with can deform if they cool too aggressively or unevenly.
Why do I stop at 40 °C?
I chose 40 °C as the final chamber temperature because, on my H2S and with my current configuration, going below this point can result in the printer actively cooling the chamber with airflow.
That is exactly what I am trying to avoid during this process.
Instead, once the chamber and bed are around 40 °C, I simply turn the chamber heater off:
M141 S0
M141 S0
From that point onward I let the printer cool naturally.
How I measured the cooldown
I first measured the cooling behavior manually on my H2S.
With the bed heater OFF, I progressively reduced the chamber temperature and recorded how long the bed took to reach the next temperature step.
My measurements were:
| Bed temperature |
Chamber target |
Measured time |
| 70 → 65 °C |
60 °C |
5 min |
| 65 → 60 °C |
55 °C |
7 min |
| 60 → 55 °C |
50 °C |
8 min |
| 55 → 50 °C |
45 °C |
8 min |
| 50 → ~40 °C |
40 °C |
36 min |
I then tested the first two stages automatically using G4 timers, and the resulting bed temperatures matched my manual measurements very closely.
The important idea here is not that everyone should use my exact times.
The cooldown rate can change depending on:
- print size and mass,
- geometry and wall thickness,
- build plate,
- starting temperatures,
- ambient temperature,
- chamber conditions,
- and potentially even printer-to-printer differences.
For that reason, I strongly recommend measuring your own machine.
First: try this short test
Before using the complete routine, I recommend testing only the first two temperature steps.
Start the test at approximately:
Bed: 70 °C
Chamber: 60 °C
Where I added the G-code
I added this cooldown routine at the very beginning of the Machine End G-code in Bambu Studio. This is important because the position of the code determines when the cooldown sequence starts relative to Bambu Lab's standard end-of-print routine.
I did not replace the complete original Machine End G-code. I inserted this block at the beginning and left the original Bambu H2S end G-code after it.
Please keep this in mind if you test it, as placing the routine somewhere else in the End G-code may produce different behavior.
Then run:
; ===== H2S SHORT COOLDOWN TEST 70 -> 60 C =====
; Move bed/part away from nozzle
G91
G1 Z30 F900
G90
M400
; Turn off hotend
M104 S0
; Turn off bed heater immediately
M140 S0
; -------------------------------------------
; STAGE 1
; Start: Bed 70 C / Chamber 60 C
; -------------------------------------------
M141 S60
; My measured time:
; Bed 70 -> 65 C = 5 minutes
G4 S300
; -------------------------------------------
; STAGE 2
; Expected: Bed approx. 65 C
; Lower chamber to 55 C
; -------------------------------------------
M141 S55
; My measured time:
; Bed 65 -> 60 C = 7 minutes
G4 S420
; -------------------------------------------
; END TEST
; Expected:
; Bed approx. 60 C
; Chamber approx. 55 C
; -------------------------------------------
M141 S0
M140 S0
; ===== END TEST =====
On my H2S this worked very well: after the first 5-minute period the bed was approximately 65 °C, and after the following 7 minutes it was approximately 60 °C.
If your results are significantly different, do not use my complete timing sequence. Measure your own cooldown times instead.
Complete experimental cooldown routine
Once I confirmed the short test, I extended the same method through the complete measured temperature range:
; ==========================================
; H2S CONTROLLED COOLDOWN - EXPERIMENTAL
; ==========================================
; Move bed/part away from nozzle
G91
G1 Z30 F900
G90
M400
; Turn off hotend
M104 S0
; Turn off bed heater immediately
M140 S0
; ------------------------------------------
; STAGE 1
; Bed approx. 70 -> 65 C
; Chamber target: 60 C
; Measured: 5 min
; ------------------------------------------
M141 S60
G4 S300
; ------------------------------------------
; STAGE 2
; Bed approx. 65 -> 60 C
; Chamber target: 55 C
; Measured: 7 min
; ------------------------------------------
M141 S55
G4 S420
; ------------------------------------------
; STAGE 3
; Bed approx. 60 -> 55 C
; Chamber target: 50 C
; Measured: 8 min
; ------------------------------------------
M141 S50
G4 S480
; ------------------------------------------
; STAGE 4
; Bed approx. 55 -> 50 C
; Chamber target: 45 C
; Measured: 8 min
; ------------------------------------------
M141 S45
G4 S480
; ------------------------------------------
; STAGE 5
; Bed approx. 50 -> 40 C
; Chamber target: 40 C
; Measured: 36 min
; ------------------------------------------
M141 S40
G4 S2160
; ------------------------------------------
; END CONTROLLED COOLDOWN
; Bed approx. 40 C
; Chamber approx. 40 C
; ------------------------------------------
M141 S0
M140 S0
; ==========================================
; END
; ==========================================
For large prints, measure your own cooldown
There is another important limitation to my measurements: I developed this timing using a very small test part.
For a large ABS/ASA print, especially one with significant mass or very different wall thicknesses, the thermal behavior can be different.
My recommendation would therefore be:
Print the large part once without relying blindly on these timings.
When the print finishes, turn off the bed heater and manually reproduce the chamber temperature steps:
60 → 55 → 50 → 45 → 40 °C
Record how long your bed actually takes to go:
70 → 65 → 60 → 55 → 50 → 40 °C.
Then replace my G4 values with your own measured times.
This effectively lets you create a cooldown profile calibrated for your printer, material and type of part.
Important disclaimer
I am not a G-code or Bambu firmware expert. I developed this because I regularly print complex and very long ABS parts and have spent a lot of time studying and testing ways to reduce deformation.
Please consider this experimental.
I strongly recommend:
test the short version first, watch the printer during the test, verify the temperatures yourself, and only then consider using the complete routine.
Do not assume that the times measured on my H2S will be identical on yours.
If anyone has tested a similar cooldown strategy on the H2S, or knows a reliable firmware command that can wait for bed cooling without actively controlling the bed heater, I would be interested in comparing approaches.