What M140 / M190 means
Starting bed heat early can reduce total preparation time because the printer can perform other safe setup work while the larger thermal mass warms. M140 starts that process asynchronously. M190 is normally placed at the point where printing should not proceed until the bed is ready.
As with hotend commands, firmware controls the exact S/R waiting behavior, allowable heater index and target range. The generated file should not be treated as a substitute for thermal-runaway protection, a correctly configured sensor or the machine manufacturer's operating limits.
Syntax and parameters
M140 S<temperature>M190 S<temperature>M190 R<temperature>SBed target; common Marlin behavior waits for heating but not cooling when used with M190.
RM190 target that can wait while heating or cooling where supported.
IHeater index on firmware and builds that support multiple heated beds.
Practical examples
Start bed heating
M140 S60
M104 S200Starts bed and nozzle heating without blocking the next setup commands.
Wait for the bed
M190 S60
G28Waits for the configured bed condition, then homes the printer.
Firmware context
| System | Status | What changes |
|---|---|---|
| Marlin | Common | Standard heated-bed target and wait commands. |
| Klipper | Common | Supports slicer-compatible forms; native heater commands can be used in macros. |
| RepRapFirmware | Check dialect | Supports bed temperature control with firmware-specific heater mapping and wait behavior. |
| CNC controllers | Not applicable | Heated-bed M-codes are part of 3D-printer dialects, not generic CNC G-code. |
What this viewer can show
The viewer recognizes bed-temperature commands, but it does not show temperature targets or add heating time to the print-time estimate.
Common mistakes
- Waiting before starting other heaters may increase preparation time unnecessarily.
- A commanded temperature does not prove the machine can reach or safely hold it.
- Multi-bed indices and cooling waits differ by firmware and configuration.
Primary sources
This page is an original explanation, reviewed against the firmware documentation below. Always confirm commands against the firmware and configuration on the machine that will execute them.