These real-time feed-hold controls are not available in V1. See Stopping Smoothie for V1 stop and suspend options.
2a21c010. PR #8 merged on 2026-08-17, and the upstream wiki moved feed hold out of its WIP list on 2026-10-05. An installed firmware build may predate it.
Feed hold pauses queued motion without waiting for the planner queue to empty. Send the real-time character ! to start the hold. Send ~ to resume motion.
| Character | Name | Result |
|---|---|---|
! |
Feed hold | Smoothie reduces the step-ticker rate until motion stops, then reports the Hold state |
~ |
Cycle start | Smoothie raises the rate again and continues the interrupted motion |
These are single real-time characters. Do not add a newline and do not place them inside a G-code file.
The hold starts as soon as the console receives !; it does not wait for buffered moves to finish. Smoothie decelerates by reducing the step-ticker frequency, so the tool still travels some distance before stopping. ~ accelerates the same motion back to its normal rate.
During the held state:
? status query reports Hold.// action:feedhold to its consoles so a connected host can pause its own sender. Host support for this message varies.! while the machine is idle.$J -c jog with $J STOP.ed or le, can consume these characters before the real-time handler sees them. Exit the editor first.~ resumes a feed hold only. It does not clear a halt, recover an emergency stop, or replace M601 after a suspend operation.Feed hold preserves the active motion and allows it to resume. Use suspend and resume for a planned SD-card or streamed-job interruption that may include heater handling and jogging. Use a hardware emergency-stop circuit or Smoothie’s kill controls when safety requires power removal or a non-resumable halt.
See Stopping Smoothie for a side-by-side comparison.
Consoles.cpp receives ! and ~.StepTicker.cpp implements deceleration, hold, and acceleration.Laser.cpp disables laser output during the hold.