---
tag: m0109
title: Wait for Hotend Temperature
brief: Wait for the hot end to reach target temperature
author: thinkyhead

group: thermal

codes: [ M109 ]
related: [ M104 ]

notes:
- With `PRINTJOB_TIMER_AUTOSTART` this command will start the print job if heating, and stop the print job timer if the temperature is set at or below half of `EXTRUDE_MINTEMP`.
- This command (as well as [`M190`](/docs/gcode/M190.html)) can block new commands from the host, preventing remote shutdown. However, if `EMERGENCY_PARSER` is enabled, a host can send [`M108`](/docs/gcode/M108.html) to break out of the wait loop.
- To set the hot end temperature and proceed without waiting, use [`M104`](/docs/gcode/M104.html).

parameters:

- tag: I
  since: 2.0.6
  optional: true
  description: Material preset index. Overrides `S`.
  values:
  - tag: index
    type: int

- tag: S
  optional: true
  description: 'Target temperature (wait only when heating).<br/>With `AUTOTEMP` this also sets the min auto-temperature.'
  values:
  - tag: temp
    type: float

- tag: R
  optional: true
  description: Target temperature (wait for cooling or heating).
  values:
  - tag: temp
    type: float

- tag: F
  optional: true
  requires: AUTOTEMP
  description: Autotemp factor. If omitted, uses `AUTOTEMP_FACTOR_P`.<br/>With `AUTOTEMP_PROPORTIONAL` enabled `F0` disables autotemp.
  values:
  - tag: factor
    type: float

- tag: B
  optional: true
  requires: AUTOTEMP
  description: Maximum auto-temperature
  values:
  - tag: temp
    type: float

- tag: T
  optional: true
  description: Hotend index. If omitted, the currently active hotend will be used.
  values:
  - tag: index
    type: int

examples:

- pre: Set target temperature and wait (if heating up)
  code: M109 S180

- pre: Set target temperature, wait even if cooling
  code: M109 R120

- pre: Set target temperature for E1 and wait (if heating up)
  code: M109 T1 S205

- pre: '`AUTOTEMP`: Set autotemp range, wait for temp'
  code: M109 F S180 B190

- pre: '`AUTOTEMP`: Disable autotemp, wait for temp'
  code: M109

---

This command optionally sets a new target hot end temperature and waits for the target temperature to be reached before proceeding. If the temperature is set with `S` then `M109` waits *only when heating*. If the temperature is set with `R` then `M109` will also wait for the temperature to go down.
