EasyProbe

More
29 Dec 2025 20:41 #340676 by Routercnc
EasyProbe was created by Routercnc
Hello,I installed EasyProbe following exactly video instructions.The probe itself is working correctly:
  • The probe signal works
  • G38 probing works without errors
  • The EasyProbe LED changes state correctly
However, I am facing an issue related to M130.When the option “Auto reload G-code / Clear plot” is enabled:
  • Clicking X0 Y0 Z0 R0 causes the error “Unknown M code used: M130”
  • Clicking Abort operation also triggers the same error
If I disable “Auto reload G-code / Clear plot”, the error does NOT happen when clicking X0 Y0 Z0 R0, but it still happens when aborting an operation.I am using:
  • LinuxCNC 2.9.4 (Debian 12 Bookworm, PREEMPT-RT)
  • EasyProbe installed exactly as shown in video
Could this be related to how LinuxCNC 2.9 handles remapped M-codes during auto-reload or abort events? Best regards,
Josias

Please Log in or Create an account to join the conversation.

More
29 Dec 2025 21:35 #340681 by MaHa
Replied by MaHa on topic EasyProbe
On my system I get this error, when i forgot to set M-code executable

Please Log in or Create an account to join the conversation.

More
29 Dec 2025 21:48 #340683 by Routercnc
Replied by Routercnc on topic EasyProbe
I run M130 in the terminal every time and the error persists.

Please Log in or Create an account to join the conversation.

More
05 Jan 2026 15:07 - 05 Jan 2026 15:14 #341011 by Routercnc
Replied by Routercnc on topic EasyProbe
Hi,
I installed EasyProbe exactly following video and instructions.However, I can’t use the midpoint and distance probing functions because I keep getting an error related to M130.LinuxCNC shows “Unknown M code used: M130” when I press the X0 / Y0 / Z0 / R0 buttons or when an abort occurs.I already set the M130 file as executable
chmod +x M130
, but the error still happens.Could you please clarify:
– where exactly the M130 file must be located macros, nc_files, or another folder?
– and whether M130 must be a
.ngc
file or a shell script?I’m using LinuxCNC 2.9.4.
Last edit: 05 Jan 2026 15:14 by Routercnc.

Please Log in or Create an account to join the conversation.

More
06 Jan 2026 11:39 #341059 by Routercnc
Replied by Routercnc on topic EasyProbe
“I couldn’t find a solution to this issue, and I haven’t received any feedback so far, so I’ve decided to move on from LinuxCNC.”

Please Log in or Create an account to join the conversation.

More
06 Jan 2026 13:06 #341064 by hmnijp
Replied by hmnijp on topic EasyProbe
All the answers to your questions are in the manual:
linuxcnc.org/docs/2.9/html/config/ini-co...sub:ini:sec:rs274ngc

SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Specifies a colon (:) separated list of up to 10 directories to be searched when single-file subroutines are specified in G-code. These directories are searched after searching [DISPLAY]PROGRAM_PREFIX (if it is specified) and before searching [WIZARD]WIZARD_ROOT (if specified). The paths are searched in the order that they are listed. The first matching subroutine file found in the search is used. Directories are specified relative to the current directory for the INI file or as absolute paths. The list must contain no intervening whitespace.

USER_M_PATH = myfuncs:/tmp/mcodes:experimentalmcodes - Specifies a list of colon (:) separated directories for user defined functions. Directories are specified relative to the current directory for the INI file or as absolute paths. The list must contain no intervening whitespace.

A search is made for each possible user defined function, typically (M100-M199). The search order is:

1) [DISPLAY]PROGRAM_PREFIX (if specified)

2) If [DISPLAY]PROGRAM_PREFIX is not specified, search the default location: nc_files

3) Then search each directory in the list [RS274NGC]USER_M_PATH.

The first executable M1xx found in the search is used for each M1xx.

Please Log in or Create an account to join the conversation.

More
06 Jan 2026 15:23 #341070 by Routercnc
Replied by Routercnc on topic EasyProbe
Regarding the error “Unknown M code used: M130”:

I followed the official LinuxCNC documentation/tutorial for configuring user M-codes.
The INI file was configured according to the manual, including the correct use of [RS274NGC] USER_M_PATH, and the M130 file is executable.

Despite this, LinuxCNC still reports:

file .INI
[EMC]
MACHINE = eng-eth
DEBUG = 0
VERSION = 1.1

[DISPLAY]
DISPLAY = axis
EDITOR = geany
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_OVERRIDE = 0.5
MAX_SPINDLE_OVERRIDE = 1

DEFAULT_LINEAR_VELOCITY = 10.0
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 42.0

DEFAULT_ANGULAR_VELOCITY = 15.00
MIN_ANGULAR_VELOCITY = 0
VELOCIDADE_ANGULAR_MÁXIMA = 100.0

PREFIXO_DO_PROGRAMA = /home/cnc/Área de trabalho/
GRÁFICO_DE_INTRODUÇÃO = linuxcnc.gif
TEMPO_DE_INTRODUÇÃO = 5
INCREMENTOS = .1mm .05mm
PYVCP = Probe_panel.xml

[KINS]
JUNTAS = 3
CINEMÁTICA = trivkins coordenadas=XYZ


[FILTRO]
EXTENSÃO_DO_PROGRAMA = .txt,.png,.gif,.jpg Imagem de Profundidade em Tons de Cinza
EXTENSÃO_DO_PROGRAMA = .py Script Python
png = imagem-para-gcode
gif = imagem-para-gcode
jpg = imagem-para-gcode
py = python

[TAREFA]
TAREFA = milltask
TEMPO_DE_CICLO = 0.010

[RS274NGC]
#REMAP=M6 grupo_modal=6 ngc=sonda # (ATIVAR SONDA)
ARQUIVO_DE_PARÂMETROS = linuxcnc.var
FEATURES = 12
SUBROUTINE_PATH = macros
ON_ABORT_COMMAND = O <on_abort> call
FEATURES = 12
RETAIN_G43 = 0
INI_VARS = 1
HAL_PIN_VARS = 1


[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 0
SERVO_PERIOD = 600000



[HAL]
HALFILE = eng-eth.hal
HALUI = halui
TWOPASS = on
HALFILE = Probe_preload.hal
POSTGUI_HALFILE = Probe_postgui.hal

[HALUI]
MDI_COMMAND = G54
MDI_COMMAND = G55
MDI_COMMAND = G56
MDI_COMMAND = G57
MDI_COMMAND = G58
MDI_COMMAND = G59
MDI_COMMAND = G59.1
MDI_COMMAND = G59.2
MDI_COMMAND = G59.3

MDI_COMMAND = O <probe_toolchange> CALL [1]
MDI_COMMAND = O <probe_toolchange> CALL [2]
MDI_COMMAND = O <probe_toolchange> CALL [3]

MDI_COMMAND = O <probe_x_plus> CALL
MDI_COMMAND = O <probe_x_minus> CALL
MDI_COMMAND = O <probe_y_plus> CALL
MDI_COMMAND = O <probe_y_minus> CALL
MDI_COMMAND = O <probe_z_minus> CALL
MDI_COMMAND = O <probe_pocket> CALL
MDI_COMMAND = O <probe_operations> CALL [1]
MDI_COMMAND = O <probe_operations> CALL [2]
MDI_COMMAND = O <probe_operations> CALL [3]

MDI_COMMAND = O <probe_manual_set> CALL [0]
MDI_COMMAND = O <probe_manual_set> CALL [1]
MDI_COMMAND = O <probe_manual_set> CALL [2]
MDI_COMMAND = O <probe_manual_set> CALL [3]
MDI_COMMAND = O <probe_escape> CALL

MDI_COMMAND = O <probe_calibration> CALL

[TRAJ]
COORDINATES = XYZ
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_LINEAR_VELOCITY = 42.0
VELOCIDADE_LINEAR_MÁXIMA = 42,0

[EMCIO]
EMCIO = io
TEMPO_DE_CICLO = 0,100
TABELA_DE_FERRAMENTAS = tool.tbl

#*** EIXO_X *******************************
[EIXO_X]
LIMITE_MÍNIMO = -5000
LIMITE_MÁXIMO = 5000

VELOCIDADE_MÁXIMA = 42,0
ACELERAÇÃO_MÁXIMA = 350,0


[JUNTA_0]
TIPO = LINEAR
HOME = 0

VELOCIDADE_MÁXIMA = 42
ACELERAÇÃO_MÁXIMA = 350,0
ACELERAÇÃO_MÁXIMA_MÁXIMA = 5000

LIMITE_MÍNIMO = -5000
LIMITE_MÁXIMO = 5000
ESCALA = 400
ERRO_FERROR = 1,0
ERRO_FERROR_MÍNIMO = 0,25
DESLOCAMENTO_HOME = 0,0

VELOCIDADE_DE_BUSCA_HOME = 0
VELOCIDADE_DE_TRAVA_HOME = 0
HOME_SEQUENCE = 1

DEADBAND = 0.002
P = 220
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
PGAIN = 220
PID_MAXOUTPUT = 250

#*** EIXO Y *******************************
[AXIS_Y]
MIN_LIMIT = -5000
MAX_LIMIT = 5000

MAX_VELOCITY = 42.0
MAX_ACCELERATION = 350.0


[JOINT_1]
TYPE = LINEAR
HOME = 0.0

MAX_VELOCITY = 42
MAX_ACCELERATION = 350.0
MAX_MAXACCEL = 5000

MIN_LIMIT = -5000
MAX_LIMIT = 5000
SCALE = 400
FERROR = 1.0
MIN_FERROR = 0.25
HOME_OFFSET = 0.0


HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_SEQUENCE = 2


DEADBAND = 0.002
P = 220
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
PGAIN = 220
PID_MAXOUTPUT = 250


#*** EIXO Z *******************************
[AXIS_Z]
MIN_LIMIT = -5000
MAX_LIMIT = 5000

MAX_VELOCITY = 15
MAX_ACCELERATION = 150.0

[JOINT_2]
TYPE = LINEAR
HOME = 0.0


MAX_VELOCITY = 15
ACELERAÇÃO_MÁXIMA = 150,0
ACELERAÇÃO_MÁXIMA_MÁXIMA = 5000

LIMITE_MÍNIMO = -5000
LIMITE_MÁXIMO = 5000 ESCALA
=
820,512
ERRO_FERROR = 1,0 ERRO_FERROR_MÍNIMO
= 0,25
DESLOCAMENTO_HOME
= 0,0 VELOCIDADE_DE_BUSCA_HOME = 0 VELOCIDADE_DE_TRAVAMENTO_HOME = 0 SEQUÊNCIA_HOME
= 0
BANDA MORTA = 0,002
P = 220
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0
BIAS = 0
PGAIN = 220
PID_SAÍDA_MÁXIMA = 250
[SONDA]
# Defina até três números de ferramentas de sondas diferentes em sua tabela de ferramentas. Defina os números não utilizados como zero.
TOOL_NUMBER_1 = 99
TOOL_NUMBER_2 = 0
TOOL_NUMBER_3 = 0
# Curso máximo de segurança da sua sonda nas direções X/Y. O valor é fornecido pelo fabricante. Em caso de dúvida, defina para ~3 mm.
MAX_XY_DISTANCE = 3
# Distância que a sonda percorrerá após uma sondagem rápida. Valores recomendados entre 0,5 e 2 mm.
XY_CLEARANCE = 0,5
# Curso máximo de segurança da sua sonda na direção Z. O valor é fornecido pelo fabricante. Em caso de dúvida, defina para ~2 mm.
MAX_Z_DISTANCE = 2
# Distância que a sonda percorrerá após uma sondagem rápida. Valores recomendados entre 0,5 e 2 mm.
Z_CLEARANCE = 0,5
# Velocidade da sondagem rápida. Valores recomendados entre 50 e 500 mm por minuto.
# Observação: Todos os valores de velocidade definidos serão verificados. Os valores considerados são: ACELERAÇÃO_MÁXIMA (x, y e z), TEMPO_DE_DEBOUNCE e DISTÂNCIA_MÁXIMA_XY/Z.
VEL_RÁPIDA = 200
# Velocidade lenta da sonda. Este valor é importante para a precisão geral. Valores recomendados entre 10 e 50 mm por minuto.
VEL_LENTA = 20
# Velocidade rápida de avanço entre os movimentos da sonda de bolso sem sondagem real.
VEL_RÁPIDA = 2000
# Acionamentos adicionais da sonda levarão a uma melhor calibração. Valores entre 0 e 3 são recomendados.
ADICIONAR_ACIONAMENTOS_DA_SONDA = 2
# Atraso de tempo em ms para o debounce do interruptor da sonda. Tente manter o valor o mais baixo possível. Valores recomendados entre 2 e 20 ms.
TEMPO_DE_DEBOUNCE = 10
# Configure o interruptor da sua ferramenta de sonda. 0 = NA (normalmente aberto), 1 = NF (normalmente fechado)
# Observação: O LED de sinal da sonda deve mudar de verde para vermelho quando você tocar a ponta da sonda.
INTERRUPTOR_DA_SONDA = 0

Please Log in or Create an account to join the conversation.

More
06 Jan 2026 20:35 - 06 Jan 2026 20:38 #341088 by Routercnc
Replied by Routercnc on topic EasyProbe
The issue is resolved. The only missing part was adding USER_M_PATH = /home/cnc/linuxcnc/nc_files to the [RS274NGC] section of the .ini file. After adding this line and restarting LinuxCNC, the M130 user M-code was recognized correctly.

 Thanks to hmnijp for the help and guidance.
Last edit: 06 Jan 2026 20:38 by Routercnc.

Please Log in or Create an account to join the conversation.

Time to create page: 0.094 seconds
Powered by Kunena Forum