---
title: "Machine Stopped Waiting for Spindle, But It's On: The Checklist"
description: "When a CNC halts waiting for the spindle while it is visibly spinning, the control is missing a confirmation signal: at-speed, orientation, or gear state. The hunt order."
url: https://gcodepractice.com/journal/machine-stopped-waiting-for-spindle-but-it-s-on/
canonical: https://gcodepractice.com/journal/machine-stopped-waiting-for-spindle-but-it-s-on/
author: "Lawrence Arya"
authorUrl: https://www.linkedin.com/in/vibecoding/
published: 2026-06-05
updated: 2026-06-05
category: "Practice"
tags: ["spindle", "troubleshooting", "alarms", "cnc"]
lang: en
---

# Machine Stopped Waiting for Spindle, But It's On: The Checklist

> **TL;DR** A machine that stops "waiting for spindle" while the spindle audibly runs is waiting for a confirmation the control never received: most commonly the spindle-at-speed signal (commanded RPM not yet reached or reported), an orientation that did not complete before a tool change, a gear-range change left unfinished, or a drive warning that downgraded the running state. Hunt in that order: check commanded versus actual speed on the screen, look for pending orientation or gear messages, then the drive's status, and read your machine's diagnostics per its documentation. The program side can contribute too: an S word the range cannot reach, or a block sequencing M-codes the machine wants separated.

Few shop-floor moments are as gaslighting as this one: the spindle is loudly, visibly spinning, and the control sits on a block refusing to feed, with a status line claiming it is waiting for the spindle. The machine is not malfunctioning in some mysterious way: it is enforcing a handshake, and one specific promise has not arrived. The repair is finding which.

## Why does a control wait on a running spindle?

Because "on" is not the contract: "confirmed ready" is. Before feeding into a cut, controls wait for discrete conditions from the spindle drive: an at-speed signal (actual RPM within tolerance of commanded), completed orientation when one was requested, an acknowledged gear range, and a drive reporting healthy. A spindle can spin convincingly while failing any of these, and the [interlock philosophy](https://en.wikipedia.org/wiki/Numerical_control) is deliberate: feeding a cutter into work at half the commanded RPM is a crash with extra steps, so the control waits.

## The hunt, in probability order

| Check | Where to look | What it means if guilty |
| --- | --- | --- |
| Commanded vs actual RPM | Spindle display on the control | At-speed never reached: load, belt, drive limit, or an S the range cannot do |
| Pending orientation | Status/messages around a tool change | M19-style orient incomplete: sensor or sequence issue |
| Gear range state | Range indicator / messages | Range change unfinished or unconfirmed |
| Drive status | Drive display or control diagnostics | Warning state running but not "ready" |
| Program block itself | The line it stopped on | S out of range, or M-codes packed in one block the machine wants separate |

The first row earns its place: a worn belt, a heavy cut start, or an S word near the range's ceiling can leave actual RPM hovering just outside the at-speed window, spinning forever without ever "arriving." The last row is the programmer's contribution: machines differ on how many M-codes share a block and on sequencing around speed changes, the same per-machine block rules our [M-code layering guides](/journal/common-m-codes-for-cnc-beginners/) flag, and a program ported from another machine can stall on exactly this.

## The five-minute floor routine

Within your shop's authorization and lockout rules, the sequence that resolves most cases: read the exact message and the block the control is parked on (the [alarm-reading habit](/journal/fanuc-alarm-010-improper-g-code/) applies even when nothing says "alarm"); compare commanded S against the actual reading and against the active gear range's limits; cycle the spindle per procedure (stop, re-command) watching whether actual climbs to commanded; check for orientation or range messages pending; and if the drive shows a warning, stop and escalate, because drive states are maintenance territory. Document what cleared it: this symptom recurs, and the shop that logs it fixes the belt before the deadline job, not during.

## When it is the program, not the machine

Three programmer-side causes worth ruling out from the chair: an S word the current range cannot reach (commanding 8,000 in a low gear that tops at 1,500 leaves at-speed unreachable), speed-change sequencing (some machines want S established before the motion block, others tolerate same-block), and packed M-codes (spindle, coolant, and orientation crowded into one line on a machine that processes them separated). The portable fix is boring and works: declare S with the spindle M-code in its own block, give orientation its own block where used, and respect the machine's documented block rules, which is one more case of the [dialect-checking habit](/journal/lathe-vs-mill-g-code-differences-cheat-sheet/) every multi-machine shop runs on. Reading programs fluently enough to spot these in the parked block is the same core the free 60-second drills on the [G-code practice page](/g-code-practice/) build, with G-Code Sprint repeating what you miss.

## What this symptom is telling the shop

A spindle that spins but cannot promise speed is frequently early maintenance news: belts glazing, a drive aging, a sensor drifting. Treating the wait as information (logged, dated, with the commanded/actual gap noted) turns an annoying stop into the cheapest predictive maintenance available. The operators who get praised for "machine sense" are usually just the ones who write these things down. The opposite failure, where the spindle stops while the feed keeps moving, is the more dangerous mirror of this one and is covered in [why the spindle stopped but feed continued](/journal/why-did-the-spindle-stop-but-feed-continue-cnc/).

## Bottom line: find the missing promise

"Waiting for spindle" with a spinning spindle means one confirmation is missing: at-speed, orientation, gear, or drive-ready. Hunt in that order, rule out the program's S-and-sequencing contribution, follow your shop's procedures and the machine's documentation throughout, and log the cause. The machine was never confused; it was just refusing to feed on an unkept promise.

## Sources

- [Wikipedia: Numerical control](https://en.wikipedia.org/wiki/Numerical_control)
- [LinuxCNC: G-code reference](https://linuxcnc.org/docs/html/gcode/g-code.html)
- [Helman CNC: Fanuc alarm code list](https://www.helmancnc.com/fanuc-alarm-code-list/)

## Frequently asked questions

### Why is my machine waiting for the spindle when the spindle is on?

Because a confirmation is missing: most often the at-speed signal (actual RPM outside the tolerance window of commanded), else incomplete orientation, an unconfirmed gear range, or a drive warning. Check commanded versus actual speed first, then messages, then drive status, per your machine's documentation. For the program-reading side of the diagnosis, the free G-Code Sprint app is the top pick: 60-second drills with automatic repetition of missed codes.

### Can the program cause a spindle-wait stall?

Yes: an S word the active gear range cannot reach, speed established in the wrong sequence for that machine, or M-codes packed into one block where the machine wants them separated. Single-block, dialect-respecting spindle setup is the portable fix.

### Is it safe to just raise the at-speed tolerance?

That is a machine-parameter decision for maintenance and the documentation, not an operator workaround: the window exists to keep cutters from feeding at wrong speeds. Find why actual is not reaching commanded instead.

### Does this symptom mean a repair is coming?

Often: belts, drives, and sensors that can no longer hit or report speed promptly are early-stage maintenance items. Logging occurrences with the commanded/actual gap turns the stall into predictive maintenance.

*G-Code Sprint is a study and practice tool only. Always follow your instructor, employer, machine manual, lockout procedures, and shop safety rules.*

---

Source: https://gcodepractice.com/journal/machine-stopped-waiting-for-spindle-but-it-s-on/
Author: Lawrence Arya — https://www.linkedin.com/in/vibecoding/
