Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Z-Probe (Klicky) frequently not triggered

    Scheduled Pinned Locked Moved Solved
    Beta Firmware
    4
    7
    237
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • effnishundefined
      effnish
      last edited by

      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 reboots M119 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.

      tcamguilundefined gloomyandyundefined 2 Replies Last reply Reply Quote 0
      • tcamguilundefined
        tcamguil @effnish
        last edited by

        @effnish

        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.

        [3.6.0-rc.2] Z-probe hits bed and U not moving running Mesh

        effnishundefined 1 Reply Last reply Reply Quote 0
        • gloomyandyundefined
          gloomyandy @effnish
          last edited by

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

          1 Reply Last reply Reply Quote 0
          • effnishundefined
            effnish @tcamguil
            last edited by

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

            .

            dc42undefined 1 Reply Last reply Reply Quote 0
            • dc42undefined
              dc42 administrators @effnish
              last edited by

              @effnish please try the uprated 3.6 tool board firmware at https://www.dropbox.com/scl/fo/vyin5beexljdndp3c00ln/AE6qWXcANSDo40ffsEaRZI4?rlkey=5kc28a1jbr7hu4l90w5shovh1&dl=0 (with 3.6.0-rc.2 or later on the main board).

              Duet WiFi hardware designer and firmware engineer
              Please do not ask me for Duet support via PM or email, use the forum
              http://www.escher3d.com, https://miscsolutions.wordpress.com

              effnishundefined 1 Reply Last reply Reply Quote 0
              • effnishundefined
                effnish @dc42
                last edited by

                @dc42 The new firmware looks to have fixed the issue. I tested three homing, bed leveling and bed mesh cycles, all completed without error.

                Thanks!

                dc42undefined 1 Reply Last reply Reply Quote 0
                • dc42undefined
                  dc42 administrators @effnish
                  last edited by

                  @effnish thanks for confirming. This change is included in 3.6.0-rc.3 released yesterday.

                  Duet WiFi hardware designer and firmware engineer
                  Please do not ask me for Duet support via PM or email, use the forum
                  http://www.escher3d.com, https://miscsolutions.wordpress.com

                  1 Reply Last reply Reply Quote 0
                  • dc42undefined dc42 marked this topic as a question
                  • dc42undefined dc42 has marked this topic as solved
                  • First post
                    Last post
                  Unless otherwise noted, all forum content is licensed under CC-BY-SA