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 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

CheckWhere to lookWhat it means if guilty
Commanded vs actual RPMSpindle display on the controlAt-speed never reached: load, belt, drive limit, or an S the range cannot do
Pending orientationStatus/messages around a tool changeM19-style orient incomplete: sensor or sequence issue
Gear range stateRange indicator / messagesRange change unfinished or unconfirmed
Drive statusDrive display or control diagnosticsWarning state running but not “ready”
Program block itselfThe line it stopped onS 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 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 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 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 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.

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

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.