Probe tripped during non-probe move deadlock
- AkkiSan
- Offline
- New Member
-
Less
More
- Posts: 11
- Thank you received: 1
26 Jul 2025 03:30 #332353
by AkkiSan
Probe tripped during non-probe move deadlock was created by AkkiSan
Hi all,
I am running 2.8.4 and only recently noticed that none of my
(indeed very old) touch probe scripts/o-codes do run nowadays.
With this "new" (v2.8) probe behaviour, which seems to be activated
all the time - how am I supposed to move the probe, including bouncy
ones, off the material after it triggered?
As long as the probe is activated, all (G00/G01) commands fail and
immediateely abort the program.
That also was recently added to the repo tracker (not by me though
github.com/LinuxCNC/linuxcnc/issues/292
This behaviour makes it basically impossible to probe more
than one time, e.g. a grid etc.
Is there any workaround or am I missing something (new)?
AS
I am running 2.8.4 and only recently noticed that none of my
(indeed very old) touch probe scripts/o-codes do run nowadays.
With this "new" (v2.8) probe behaviour, which seems to be activated
all the time - how am I supposed to move the probe, including bouncy
ones, off the material after it triggered?
As long as the probe is activated, all (G00/G01) commands fail and
immediateely abort the program.
That also was recently added to the repo tracker (not by me though

github.com/LinuxCNC/linuxcnc/issues/292
This behaviour makes it basically impossible to probe more
than one time, e.g. a grid etc.
Is there any workaround or am I missing something (new)?
AS
Please Log in or Create an account to join the conversation.
- AkkiSan
- Offline
- New Member
-
Less
More
- Posts: 11
- Thank you received: 1
26 Jul 2025 23:01 #332382
by AkkiSan
Replied by AkkiSan on topic Probe tripped during non-probe move deadlock
Okay; found a workaround.
Just in case someone is having the same issue:
I solved this with an additional AND gate and this
motion-digital-out-nn thingy, controlled via M64 and M65.
Example for a probe on a parport, here also with an additional
debug LED on parport pin 1 (strobe):
In the G-Code, just encapsulate the retraction move(s) with
M65 P0 and M64 P0:
Cheers
AS
Just in case someone is having the same issue:
I solved this with an additional AND gate and this
motion-digital-out-nn thingy, controlled via M64 and M65.
Example for a probe on a parport, here also with an additional
debug LED on parport pin 1 (strobe):
net probepin parport.0.pin-11-in-not => and2.3.in0
net probeenable motion.digital-out-00 => and2.3.in1
net probefiltered and2.3.out => motion.probe-input parport.0.pin-01-out
In the G-Code, just encapsulate the retraction move(s) with
M65 P0 and M64 P0:
...
G38.2 Z#8
M65 P0 (turn off touch probe for retraction)
G0 Z#7
M64 P0 (turn on touch probe again)
...
Cheers
AS
Please Log in or Create an account to join the conversation.
- andypugh
-
- Offline
- Moderator
-
Less
More
- Posts: 23415
- Thank you received: 4976
26 Jul 2025 23:19 #332384
by andypugh
Replied by andypugh on topic Probe tripped during non-probe move deadlock
It is possible to set up the HAL so that the probe signal is only seen during a probe move.
It's not a particularly elegant fix, as you need to use motion.motion-type
linuxcnc.org/docs/stable/html/man/man9/m...9.html#MOTION%20PINS
and only send through the probe signal when motion.motion-type = 5.
Unfortunately I haven't found a single component that can compare a signed integer (like motion-type) and outut a logical.
So it might be better to use a custom HAL component:
linuxcnc.org/docs/stable/html/hal/comp.html
It's not a particularly elegant fix, as you need to use motion.motion-type
linuxcnc.org/docs/stable/html/man/man9/m...9.html#MOTION%20PINS
and only send through the probe signal when motion.motion-type = 5.
Unfortunately I haven't found a single component that can compare a signed integer (like motion-type) and outut a logical.
So it might be better to use a custom HAL component:
linuxcnc.org/docs/stable/html/hal/comp.html
component probe-filter "Only pass-through probe when probing"
pin in signed motion-type;
pin in bit probe-in
pin out bit probe-out
;;
if (motion_type) == 5 {
probe_out = probe_in;
} else {
probe_out = 0;
}
The following user(s) said Thank You: CNCGOOS
Please Log in or Create an account to join the conversation.
- andypugh
-
- Offline
- Moderator
-
Less
More
- Posts: 23415
- Thank you received: 4976
26 Jul 2025 23:25 #332385
by andypugh
Replied by andypugh on topic Probe tripped during non-probe move deadlock
Incidentally, there are two INI settings related to this, but I don't think that they help here:
linuxcnc.org/docs/stable/html/config/ini...tml#sub:ini:sec:traj
NO_PROBE_JOG_ERROR = 0 - Allow to bypass probe tripped check when you jog manually.
NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress.
You could try making a fast probe-away move (G38.5) to clear the probe from the work. (fast so that it overshoots out of the probe dither region)
linuxcnc.org/docs/stable/html/config/ini...tml#sub:ini:sec:traj
NO_PROBE_JOG_ERROR = 0 - Allow to bypass probe tripped check when you jog manually.
NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress.
You could try making a fast probe-away move (G38.5) to clear the probe from the work. (fast so that it overshoots out of the probe dither region)
Please Log in or Create an account to join the conversation.
- AkkiSan
- Offline
- New Member
-
Less
More
- Posts: 11
- Thank you received: 1
27 Jul 2025 02:05 #332392
by AkkiSan
Replied by AkkiSan on topic Probe tripped during non-probe move deadlock
Thank you very much Andy.
I will give this a try too, although I first need to understand this, hehe.
After some testing, my proposal does not work reliably.
After a couple of probing commands, the error comes back.
I first thought about a race condition, so I also tried the synced
M62/M63 and isolated everything with G04 dwell commands,
up to 1s, like this one here:
After some debugging, it's clear, that the G38 command itself
triggers this error. Most likely dIrectly after the probe made contact.
The short time between the (sucessful) end of G38 and my custom
"probe off" command seems to be the zone, where this happens.
If this is true, probably not even Andy's solution would work here.
To be clear, yes, there is a _lot_ of bouncing involved here.
I am directly probing with a 0.1mm cutter and the touch probe
is connected to the galvanically isolated material.
But this all was working in the past; I almost used this daily,
with previous versions.
Is there a latching element available in HAL?
A flipflop? That might help here, if it's fast enough.
Otherwise, the last resort would be a HW latch - if the bouncing
is the cause of this. If it's just the static "probe HIGH" signal;
well - no go.
I will give this a try too, although I first need to understand this, hehe.
After some testing, my proposal does not work reliably.
After a couple of probing commands, the error comes back.
I first thought about a race condition, so I also tried the synced
M62/M63 and isolated everything with G04 dwell commands,
up to 1s, like this one here:
...
M64 P0 (turn on touch probe)
G04 P1
G38.2 Z#8
(also tried wating here)
M65 P0 (turn off touch probe)
G04 P1
G0 Z#7
...
After some debugging, it's clear, that the G38 command itself
triggers this error. Most likely dIrectly after the probe made contact.
The short time between the (sucessful) end of G38 and my custom
"probe off" command seems to be the zone, where this happens.
If this is true, probably not even Andy's solution would work here.
To be clear, yes, there is a _lot_ of bouncing involved here.
I am directly probing with a 0.1mm cutter and the touch probe
is connected to the galvanically isolated material.
But this all was working in the past; I almost used this daily,
with previous versions.
Is there a latching element available in HAL?
A flipflop? That might help here, if it's fast enough.
Otherwise, the last resort would be a HW latch - if the bouncing
is the cause of this. If it's just the static "probe HIGH" signal;
well - no go.
Please Log in or Create an account to join the conversation.
- AkkiSan
- Offline
- New Member
-
Less
More
- Posts: 11
- Thank you received: 1
27 Jul 2025 15:00 #332412
by AkkiSan
Replied by AkkiSan on topic Probe tripped during non-probe move deadlock
My apologies for spamming this forum with stupid questions,
but I was short on time, hehe.
Finally, success. I outsmarted the probe with the Great HAL:
Then use M64/M64 P0 to keep the flipflop in reset during the retraction:
Out probing,
AS
but I was short on time, hehe.
Finally, success. I outsmarted the probe with the Great HAL:
setp flipflop.0.set FALSE
setp flipflop.0.data TRUE
net probepin parport.0.pin-11-in-not => flipflop.0.clk
net probereset motion.digital-out-00 => flipflop.0.reset
net probefiltered flipflop.0.out => motion.probe-input parport.0.pin-01-out
Then use M64/M64 P0 to keep the flipflop in reset during the retraction:
...
G38.2 Z#8
M64 P0 (reset probe flipflop HIGH)
G0 Z#7
M65 P0 (reset probe flipflop LOW)
...
Out probing,
AS
Please Log in or Create an account to join the conversation.
- andypugh
-
- Offline
- Moderator
-
Less
More
- Posts: 23415
- Thank you received: 4976
27 Jul 2025 16:15 #332420
by andypugh
Replied by andypugh on topic Probe tripped during non-probe move deadlock
You could look at the HAL "debounce" too, to require ms of stable signal before tripping. But that does, in principle, lead to a position error (possibly small, at low probe speeds)
Please Log in or Create an account to join the conversation.
- DauntlessA
- Offline
- Junior Member
-
Less
More
- Posts: 22
- Thank you received: 5
28 Jul 2025 23:32 - 28 Jul 2025 23:35 #332501
by DauntlessA
Replied by DauntlessA on topic Probe tripped during non-probe move deadlock
As far as I'm aware, motion.probe-input only causes the "probe tripped during non probe move" message if the pin goes high during a non-probe move, not if it's already high.
(I know you figured that out, just wanted to state directly that in theory there's no issue with a non-probe move which starts with the probe triggered)
The real issue is, as Andy says, is that the raw probe input is going to bounce and cause the "probe tripped during non probe move" message, and halt the subsequent move/jog.
But, actually, most of the time this behaviour occurs during probing, it's during the deceleration phase of the probe move itself (as you mentioned). This was opened as an issue last year:
github.com/LinuxCNC/linuxcnc/issues/2926
While you can work round this in hal in various ways (many already discussed), ideally I think this should be patched.
When I had this issue I also thought the same as the title of this post, that the probe must be triggering during the pulloff move (on account of the message wording) when actually it was occuring during the probe move itself. This is confusing and the "probe tripped during non probe move" message is somewhere between misleading and incorrect in this context.
The way I see it is that the deceleration phase is definitely part of the probe move, since you can't have a probe move without deceleration. Therefore, it doesn't make sense to claim that a trigger during a probe move deceleration phase should be treated the same way as a trigger during a jog or commanded non-probe move. The fact that this behaviour only seems to be worked around definitely supports this view.
But I get how this might be complicated to patch if it is the case that the motion type can't stay as "probing" and so is set a different motion type, which causes this issue.
I'm assuming that the fix isn't as simple as keeping the motion type as "probing" after the first trigger, because then subsequent bounces would also be registered as triggers to update the probed position variable? And that definitely isn't ideal, if you commanded one probe move, you shouldn't get several updates to the probe result when only the first one is the canonical result.
So ideally you'd just want to set a flag in the motion type used during deceleration to ignore further probe inputs until the end of that move? Or create a new motion type for "probe decelerating" which has this applied by default?
Either way, this doesn't solve the issue of bouncing during the subsequent pulloff moves. But since the pulloff move is typically at a much higher feed, it's far less likely to be affected by this issue.
And yeah, debounce does work for this, and the increased latency isn't actually a huge issue (as long as it is repeatable) if you calibrate the probe on a known artefact at the probing speed(s) you're planning to use. Probe Basic has this built into the probing routines.
But re. your flipflop logic, you're essentially using the same logic I'm using, which is the "dsmono" component from this comment here, which also makes the the probe "sticky":
forum.linuxcnc.org/24-hal-components/423...rrors?start=0#269004
(In fact I'd recommend reading that thread from the top, lots of good info)
I think the advantages of dsmono (or implementing the same thing using EDGE) over your component are that you don't need to add M64/M65 to your probing routines, and the pulloff move is protected once the "sticky" period expires.
(I know you figured that out, just wanted to state directly that in theory there's no issue with a non-probe move which starts with the probe triggered)
The real issue is, as Andy says, is that the raw probe input is going to bounce and cause the "probe tripped during non probe move" message, and halt the subsequent move/jog.
But, actually, most of the time this behaviour occurs during probing, it's during the deceleration phase of the probe move itself (as you mentioned). This was opened as an issue last year:
github.com/LinuxCNC/linuxcnc/issues/2926
While you can work round this in hal in various ways (many already discussed), ideally I think this should be patched.
When I had this issue I also thought the same as the title of this post, that the probe must be triggering during the pulloff move (on account of the message wording) when actually it was occuring during the probe move itself. This is confusing and the "probe tripped during non probe move" message is somewhere between misleading and incorrect in this context.
The way I see it is that the deceleration phase is definitely part of the probe move, since you can't have a probe move without deceleration. Therefore, it doesn't make sense to claim that a trigger during a probe move deceleration phase should be treated the same way as a trigger during a jog or commanded non-probe move. The fact that this behaviour only seems to be worked around definitely supports this view.
But I get how this might be complicated to patch if it is the case that the motion type can't stay as "probing" and so is set a different motion type, which causes this issue.
I'm assuming that the fix isn't as simple as keeping the motion type as "probing" after the first trigger, because then subsequent bounces would also be registered as triggers to update the probed position variable? And that definitely isn't ideal, if you commanded one probe move, you shouldn't get several updates to the probe result when only the first one is the canonical result.
So ideally you'd just want to set a flag in the motion type used during deceleration to ignore further probe inputs until the end of that move? Or create a new motion type for "probe decelerating" which has this applied by default?
Either way, this doesn't solve the issue of bouncing during the subsequent pulloff moves. But since the pulloff move is typically at a much higher feed, it's far less likely to be affected by this issue.
And yeah, debounce does work for this, and the increased latency isn't actually a huge issue (as long as it is repeatable) if you calibrate the probe on a known artefact at the probing speed(s) you're planning to use. Probe Basic has this built into the probing routines.
But re. your flipflop logic, you're essentially using the same logic I'm using, which is the "dsmono" component from this comment here, which also makes the the probe "sticky":
forum.linuxcnc.org/24-hal-components/423...rrors?start=0#269004
(In fact I'd recommend reading that thread from the top, lots of good info)
I think the advantages of dsmono (or implementing the same thing using EDGE) over your component are that you don't need to add M64/M65 to your probing routines, and the pulloff move is protected once the "sticky" period expires.
Last edit: 28 Jul 2025 23:35 by DauntlessA.
Please Log in or Create an account to join the conversation.
- andypugh
-
- Offline
- Moderator
-
Less
More
- Posts: 23415
- Thank you received: 4976
30 Jul 2025 14:20 #332559
by andypugh
Replied by andypugh on topic Probe tripped during non-probe move deadlock
Thanks for your analysis. If you feel so inclined, feel free to add this to the issue tracker: github.com/LinuxCNC/linuxcnc/issues
It would be even better if you could work out a fix
It would be even better if you could work out a fix

Please Log in or Create an account to join the conversation.
- CNCGOOS
- Offline
- Junior Member
-
Less
More
- Posts: 28
- Thank you received: 1
30 Jul 2025 15:12 #332561
by CNCGOOS
Replied by CNCGOOS on topic Probe tripped during non-probe move deadlock
This is indeed a much neater method, great! I also solved it quickly and durty with an AND gate. But creating your own component is much nicer in the Hal code.
If I have an evening off, I'll play around with creating a comp.
If I have an evening off, I'll play around with creating a comp.
Please Log in or Create an account to join the conversation.
Time to create page: 0.083 seconds