Z-Probe (Klicky) frequently not triggered
-
I'm running a Voron Trident with a Klicky probe. It's the original probe with just the end-stop switch and magnets, not the PCB version. The probe frequently fails to trigger on the 3.6.0 code branch. I've tested beta1 through rc2+4 and all exhibit the same behavior.
All z-probe actions seem to fail sporadically and it's very rare for
G32
to complete successfully on the 3.6.0 branch, but I've not had a failure on the 3.5.4 firmware release. On a number of occasions I've hit the e-stop when the probe fails to trigger and when the board rebootsM119
shows the probe in the triggered state.The probe is connected to an 1LC tool board on CAN address 20.
1LC diagnostics following error
M122 B20 Diagnostics for board 20: Duet TOOL1LC rev 1.1 or later firmware version 3.6.0-rc.2+4 (2025-04-17 08:43:08) Bootloader ID: SAMC21 bootloader version 2.3 (2021-01-26b1) All averaging filters OK Never used RAM 7352, free system stack 108 words Tasks: Move(3,nWait 7,0.0%,136) TMC(2,nWait 6,3.7%,52) HEAT(2,nWait 6,0.2%,116) CanAsync(5,nWait 4,0.0%,52) CanRecv(3,nWait 1,0.0%,70) CanClock(5,nWait 1,0.0%,58) ACCEL(3,nWait 6,0.0%,18) MAIN(1,running,91.3%,318) IDLE(0,ready,0.0%,26) AIN(2,delaying,4.8%,112), total 100.0% Owned mutexes: Last reset 00:12:44 ago, cause: software Last software reset at 2025-04-05 22:21, reason: StackOverflow, available RAM 3916, slot 0 Software reset code 0x0100 ICSR 0x0041a00e SP 0x20007f24 Task ACCE Freestk 4413 bad marker Stack: 200039b0 200039e4 0001c583 200032cc 200032cc 200033e8 200032c0 00000000 0001cd0b 200032cc 0001bd11 200033e8 fffffffd 7e74fff3 00000000 20007f8c 00000000 20007f8c 0001caa3 00000000 20001898 20001818 0001c1d7 20001818 20001898 00000032 454c4449 Moves scheduled 0, hiccups 0 (0.00/0.00ms), segs 0, step errors 0 (types 0x0), maxLate 0 maxPrep 0, ebfmin 0.00 max 0.00 Sync err accum 246, peak jitter -4/3, peak Rx delay 214, resyncs 0/0, no timer interrupt scheduled, next step interrupt due in 3721563626 ticks, disabled VIN voltage: min 24.2, current 24.2, max 24.2 MCU temperature: min 32.9C, current 34.1C, max 34.1C Driver 0: pos 0, 681.0 steps/mm, standstill, SG min 0, read errors 0, write errors 0, ifcnt 124, reads 3823, writes 0, timeouts 0, DMA errors 0, CC errors 0 Last sensors broadcast 0x00000002 found 1 45 ticks ago, 0 ordering errs, loop time 0 CAN messages queued 2905, send timeouts 0, received 1266, lost 0, ignored 0, errs 0, boc 0, free buffers 18, min 18, error reg 0 dup 0, oos 0/0/0/0, rxMotionDelay 0 Accelerometer: LIS3DH, status: 00 I2C bus errors 0, naks 0, contentions 0, other errors 0
Duet Mini 5+ diagnostics following error:
M122 Probe detach failed === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.6.0-rc.2+4 (2025-04-17 08:23:50) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: 4BJ9Y-A296U-D65J0-40KM2-LZ03Z-ZL76T Used output buffers: 1 of 40 (38 max) === RTOS === Static ram: 94764 Dynamic ram: 101528 of which 0 recycled Never used RAM 44096, free system stack 134 words Tasks: NETWORK(1,ready,16.0%,195) HEAT(3,nWait 6,0.0%,331) Move(4,nWait 6,0.0%,266) TMC(4,nWait 6,0.9%,65) CanReceiv(6,nWait 1,0.3%,768) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,346) MAIN(1,running,81.7%,661) IDLE(0,ready,0.1%,29) USBD(3,blocked,0.0%,147) AIN(4,delaying,0.8%,255), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:12:18 ago, cause: software Last software reset at 2025-04-22 20:54, reason: User, Gcodes spinning, available RAM 45344, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 MCU temperature: min 26.2, current 27.8, max 28.5 Supply voltage: min 24.0, current 24.0, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/4, heap memory allocated/used/recyclable 2048/1028/980, gc cycles 0 Events: 1 queued, 1 completed Date/time: 2025-04-22 21:06:41 Slowest loop: 69.15ms; fastest: 0.17ms === Storage === Free file entries: 20 SD card 0 detected, requested/actual speed: 25.0/24.0MBytes/sec SD card longest read time 6.6ms, write time 8.5ms, max retries 0 === Move === Segments created 45, maxWait 105158ms, bed comp in use: none, height map offset 0.000, hiccups added 0/0 (0.00/0.00ms), max steps late 0, ebfmin 0.00, ebfmax 0.00 Pos req/act/dcf: 46931.00/46931/0.82 -33709.00/-33709/0.83 7581.00/7581/0.00 No step interrupt scheduled Driver 0: standstill, SG min 0, r/w errs 0/0, ifcnt 222, reads/writes 33605/6, timeouts 0, DMA errs 0, CC errs 0 Driver 1: standstill, SG min 0, r/w errs 0/0, ifcnt 222, reads/writes 33605/6, timeouts 0, DMA errs 0, CC errs 0 Driver 2: standstill, SG min 0, r/w errs 0/0, ifcnt 182, reads/writes 33603/8, timeouts 0, DMA errs 0, CC errs 0 Driver 3: standstill, SG min 0, r/w errs 0/0, ifcnt 182, reads/writes 33604/7, timeouts 0, DMA errs 0, CC errs 0 Driver 4: standstill, SG min 0, r/w errs 0/0, ifcnt 183, reads/writes 33603/8, timeouts 0, DMA errs 0, CC errs 0 Driver 5: not present Driver 6: not present === DDARing 0 === Scheduled moves 246, completed 246, LaErrors 0, Underruns [0, 0, 0] Segments left 0, axes/extruders owned 0x00000007, drives owned 0x00000007 Code queue is empty === DDARing 1 === Scheduled moves 0, completed 0, LaErrors 0, Underruns [0, 0, 0] Segments left 0, axes/extruders owned 0x00000000, drives owned 0x00000000 Code queue is empty === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 === GCodes === Movement locks held by HTTP, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is idle in state(s) 0 Queue2 is idle in state(s) 0 === CAN === Messages queued 5822, received 14277, lost 0, ignored 0, errs 0, boc 0 Longest wait 6ms for reply type 6024, peak Tx sync delay 355, free buffers 26 (min 25), ts 3031/3031/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 44.60ms; fastest: 0.07ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 === WiFi === Interface state: active Module is connected to access point Failed messages: pending 0, notrdy 0, noresp 0 Firmware version 2.2.0 Module reset reason: Power up, Vcc 3.36, flash size 2097152, free heap 40332 MAC address f4:cf:a2:6f:bd:e0 IP address 10.3.1.110 Signal strength -46dBm, channel 11, mode 802.11n, reconnections 0 Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
config.g
; General preferences echo "Start of config.g" G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Voron" ; set printer name M669 K1 ; select CoreXY mode M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet G4 S2 ; Wait for the CAN bus to stabilize ; Drives M569 P0 S1 D3 V1000 ; physical drive 0 goes forwards M569 P1 S1 D3 V1000 ; physical drive 1 goes forwards M569 P2 S0 ; physical drive 2 goes backwards M569 P3 S0 ; physical drive 3 goes backwards M569 P4 S0 ; physical drive 4 goes backwards M569 P20.0 S0 ; Extruder stepper on toolboard goes backwards M584 X0 Y1 Z2:3:4 E20.0 ; set drive mapping M671 X-45:125:290 Y-5:315:-5 S2.5 ; leadscrews at left (connected to Z) and right M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z800.00 E681.00 ; set steps per mm 0.9deg A/B, galileo extruder ; Extruder acceleration is limited to acc = jerk / pressure_advance when PA is enabled ; Ensure jerk is high enough to reach our accel numbers, but not so high that the extruder skips steps M566 X300 Y300 Z25 E500 P1 ; set maximum instantaneous speed changes (mm/min) M203 X18000 Y18000 Z300 E12000 ; set maximum speeds (mm/min) M201 X4000 Y4000 Z250 E12000 ; set accelerations (mm/s^2) M201.1 X1000 Y1000 Z50 ; limit acceleration for special moves (probes) M204 P4000 T4000 ; Set printing acceleration and travel accelerations M906 X1000 Y1000 Z800 E330 I30; T120 ; set motor currents (mA) and motor idle factor in per cent M84 S120 ; Set idle timeout ; Axis Limits M208 X0:248 Y0:253 Z0:230 ; Endstops M574 X2 S1 P"io2.in" ; configure active-high endstop for high end M574 Y2 S1 P"io3.in" ; configure active-high endstop for high end M574 Z0 ; no z endstop ; Z-Probe M558 K0 P8 C"20.io1.in" T18000 F120:90 H5:2 A5 ;S0.01 B0 R0.2 ; Define the klicky Z probe as switch type G31 K0 P500 X0 Y25 Z7.476 ; Klicky probe Z offset M557 X25:224 Y25:214 P5 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Bed Heater" ; configure sensor 0 as thermistor on pin temp0 (heater mat) M308 S2 P"temp1" Y"thermistor" T100000 B3950 A"Bed Plate" ; configure sensor 2 as thermistor on pin temp1 (MIC-6 plate) M950 H0 C"out0" T2 Q60 ; create bed heater output on bedheat and map it to sensor 2 (MIC-6 plate) M140 P0 H0 ; map heated bed to heater 0 for DWC M143 H0 P1 T0 A2 S120 C0 ; Regulate (A2) bed heater (H0) to have pad sensor (T0) below 118°C. Use Heater monitor 1 for it M143 H0 P2 T0 A1 S125 C0 ; Shut off (A1) bed heater (H0) if pad sensor (T0) exceeds 125°C. Use Heater monitor 2 for it M143 H0 S110 ; Set bed heater max temperature, use implict monitor 0 which is implicitly configured for heater fault M307 H0 B1 A250 C1800 S0.50 ; Enable bang-bang mode and set PWM limit to avoid warping M308 S1 P"20.temp0" Y"thermistor" T100000 B4725 C7.06e-8 A"Hotend" ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"20.out0" T1 ; create nozzle heater output 1 on temp1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"20.out1" Q150 ; create fan 0 on pin fan0 and set its frequency M106 P0 C"part" S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"20.out2" Q250 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1.0 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 Q55 C"out5" ; Create electronics fan 1 M106 P2 S0.60 ; Turn electronics fan 2 on M950 F3 Q55 C"out6" ; Create electronics fan 2 M106 P3 S0.60 ; Turn electronics fan 1 on ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M918 P2 E2 ; enable ST7567-based 12864 display M950 E0 C"io3.out" T2 U1 ; create a RGB Neopixel LED strip with 3 LEDs on the Duet 3 Mini 5+ 12864_EXP1 header M150 E0 R64 U196 B211 P96 S3 ; Set the LED colors and brightness M592 D0 A-0.004451 B0.00191 ; non-linear extrusion M955 P20.0 I05 ; Configure accelerometer with rotation +Z => +X and +X => -Y M501 ; Load stored config in config-override.g echo "Loaded config.g"
bed.g
M290 R0 S0 ; clear baby stepping M561 ; reset all bed adjustments ;M400 ; flush move queue if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed echo "not all axes homed, homing axes first" G28 M98 P"/macros/print_scripts/speed_probing.g" M98 P"/macros/print_scripts/z_current_low.g" M558 K0 H8 G90 G1 Z12 M401 G30 K0 P0 X10 Y25 Z-99999 G30 K0 P1 X240 Y25 Z-99999 G30 K0 P2 X125 Y220 Z-99999 S3 echo "Current rough pass deviation: " ^ move.calibration.initial.deviation M558 K0 H4 G30 K0 P0 X10 Y25 Z-99999 G30 K0 P1 X240 Y25 Z-99999 G30 K0 P2 X125 Y220 Z-99999 S3 echo "Current medium pass deviation: " ^ move.calibration.initial.deviation M558 K0 H2 while move.calibration.initial.deviation > 0.003 if iterations >= 5 echo "Error: Max attemps failed. Deviation: " ^ move.calibration.initial.deviation break echo "Deviation over threshold. Executing pass" , iterations+3, "deviation", move.calibration.initial.deviation G30 K0 P0 X10 Y25 Z-99999 G30 K0 P1 X240 Y25 Z-99999 G30 K0 P2 X125 Y220 Z-99999 S3 echo "Current deviation: " ^ move.calibration.initial.deviation continue echo "Final deviation: " ^ move.calibration.initial.deviation G28 Z M98 P"/macros/print_scripts/speed_printing.g" M98 P"/macros/print_scripts/z_current_high.g"
deployprobe.g
if sensors.probes[0].value[0] == 1000 M564 H1 G90 if move.axes[2].homed && move.axes[2].userPosition < 15 G1 Z15 F120 ; Move into the dock G1 X38 Y225 F4800 G1 Y251 F2400 ; M400 S1 G4 P500 ; move out from dock G1 Y225 F2400 G1 Y200 F4800 M400 S1 if sensors.probes[0].value[0] == 1000 abort "Probe attach failed" G1 X125 Y125
retractprobe.g
if sensors.probes[0].value[0] == 0 M564 H1 G90 ; approach the dock and move in G1 Y225 F4800 G1 X38 G1 Y252 F2400 ; disengage from dock G1 X85 F4800 M400 S1 if sensors.probes[0].value[0] == 0 abort "Probe detach failed" G1 X125 Y125
Thanks for the help and let me know if you need any additional information or have anything you would like me to test.
-
Have you tried downgrading the Toolboard1LC firmware to the version 3.6.0-rc.1 (2025-02-28 15:03:36).
I was having a similar issue, except the Klicky did not trigger, and found that it solved my issue. -
@effnish Have you tried reverting to 3.5.4 and retesting? If not I think it would be worth doing that. This would confirm that the problem is not some sort of hardware problem.
-
@gloomyandy reverting back to 3.5.4 resolves the issue.
@tcamguil thanks for the recommendation on rc1. I installed it when it released and encountered the probe initialization error so I never revisited it for the trigger issue. I hadn't considered running mixed versions and overlooked the solution when I read your post a few days ago. I tested 3.6.0-rc2+4 on the Mini 5+ and 3.6.0-rc1 on the 1LC and that seems to be a winning combination. I made it through 6 consecutive
G32
sequences at ~15 probes per leveling without a fault.I think my issue and one of @tcamguil's are the same. I only get the reported trigger failure if I let it hammer the nozzle into the bed for a second or two (at very reduced stepper currents). I usually hit the e-stop and the probe is always in the triggered state following the reboot.
.