Klipper and Eddy Duo forget Noozle Z Offset after Power off the Printer

Basic Information:

Printer Model: Custom
MCU / Printerboard: MKS Robin Nano V3
Host / SBC Raspberry Pi 4
klippy.log

I have the Problem with my Printer and the Sensor Eddy Duo.
Mainboard is a Robin Nano V3 controlled over Raspberry Pi 4 4GB.

The Bigtreetech Eddy Duo is connect over USB direct on the Pi.

I can set an save the Nozzle Offset over the Command "PROBE_EDDY_CURRENT_CALIBRATE_AUTO CHIP=btt_eddy" and save with "save_config" that.
Then all works without Problem even with full restart klipper until i cut the Power to the Printer.

When i Power on then the Printer and want to Print the Nozzle crash in the bett like no offset is configurate.

Then i musk make the calibrateoffset command and it works again until power off.

im out of solutions of what it can be and yes the eddy is not moving

klippy.zip (256.5 KB)

Shortly speaking, get rid of all obsolete btt macros.
That is it.

Also, I suggest updating further to: v0.13.0-687-ga0d276963
As there are no more homing quirks.

Otherwise, you should be able to simply do PROBE_EDDY_CURRENT_CALIBRATE and then use babystepping + G-Codes - Klipper documentation to fine tune it.

Also, I suggest you to read the: Eddy Current Inductive probe - Klipper documentation

Hope that helps,
-Timofey

you mean delete macro

G28
SET_Z_FROM_PROBE

PROBE_EDDY_CURRENT_CALIBRATE_AUTO

These Macros?

Would then any of the eddy work?

mmh i update and must look if it is now better. doesnt see the update until i searched.

edit update daoesnt changed it

now i killing that all macros



# Uncomment this if you are using Eddy as the probe AND the homing endstop AND would like to use the beta z-offset control
#[delayed_gcode RESTORE_PROBE_OFFSET]
#initial_duration: 1.
#gcode:
#  {% set svv = printer.save_variables.variables %}
#  {% if not printer["gcode_macro SET_GCODE_OFFSET"].restored %}
#    SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=runtime_offset VALUE={ svv.nvm_offset|default(0) }
#    SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=restored VALUE=True
#  {% endif %}



# Uncomment this if you are using Eddy as the probe AND the homing endstop
# Take note of the lines that should only be used if you have a KNOMI installed.
[gcode_macro G28]
rename_existing: G28.1
gcode:
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=True # Uncomment this if using a KNOMI and then remove the G28 macro from the KNOMI.cfg
  G28.1 {rawparams}
  {% if not rawparams or (rawparams and 'Z' in rawparams) %}
    PROBE
    SET_Z_FROM_PROBE
  {% endif %}
  #SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=False # Uncomment this if using a KNOMI and then remove the G28 macro from the KNOMI.cfg



# Uncomment this if you are using Eddy as the probe AND the homing endstop
[gcode_macro SET_Z_FROM_PROBE]
gcode:
    {% set cf = printer.configfile.settings %}
    SET_GCODE_OFFSET_ORIG Z={printer.probe.last_z_result - cf['probe_eddy_current btt_eddy'].descend_z + printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset}
    G90
    G1 Z{cf.safe_z_home.z_hop}


# Uncomment this if you are using Eddy as the probe AND the homing endstop AND would like to use the beta z-offset control
#[gcode_macro Z_OFFSET_APPLY_PROBE]
#rename_existing: Z_OFFSET_APPLY_PROBE_ORIG
#gcode:
#  SAVE_VARIABLE VARIABLE=nvm_offset VALUE={ printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset }



# Uncomment the lines in this macro if you are using Eddy as the probe AND the homing endstop AND would like to use the beta z-offset control
[gcode_macro SET_GCODE_OFFSET]
rename_existing: SET_GCODE_OFFSET_ORIG
variable_restored: False  # Mark whether the var has been restored from NVM
variable_runtime_offset: 0
gcode:
#  {% if params.Z_ADJUST %}
#    SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=runtime_offset VALUE={ printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset + params.Z_ADJUST|float }
#  {% endif %}
#  {% if params.Z %}
#    {% set paramList = rawparams.split() %}
#    {% for i in range(paramList|length) %}
#      {% if paramList[i]=="Z=0" %}
#        {% set temp=paramList.pop(i) %}
#        {% set temp="Z_ADJUST=" + (-printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset)|string %}
#        {% if paramList.append(temp) %}{% endif %}
#      {% endif %}
#    {% endfor %}
#    {% set rawparams=paramList|join(' ') %}
#    SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=runtime_offset VALUE=0
#  {% endif %}
  SET_GCODE_OFFSET_ORIG { rawparams }



# This macro automates a lot of the frequency mapping process and simplifies the steps significantly.
[gcode_macro PROBE_EDDY_CURRENT_CALIBRATE_AUTO]
gcode:
  BED_MESH_CLEAR
  G28 X Y
  G90 # Abs positioning
  G1 X{ printer.toolhead.axis_maximum.x/2 } Y{ printer.toolhead.axis_maximum.y/2 } F6000
  {% if 'z' not in printer.toolhead.homed_axes %}
    SET_KINEMATIC_POSITION Z={ printer.toolhead.axis_maximum.z-1 } # Allows the user to work it down until it touches.
  {% endif %}
  PROBE_EDDY_CURRENT_CALIBRATE {rawparams}



#This macro is optional but useful if you want to run a rapid scan before each print. Simply uncomment it and add BED_MESH_SCAN to your print start code.
#[gcode_macro BED_MESH_CALIBRATE]
#rename_existing: BTT_BED_MESH_CALIBRATE
#gcode:
#  SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True #Only uncomment this line if using a KNOMI and then remove the BED_MESH_CALIBRATE macro from KNOMI.cfg
#  BTT_BED_MESH_CALIBRATE METHOD=rapid_scan
#  SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False #Only uncomment this line if using a KNOMI and then remove the BED_MESH_CALIBRATE macro from KNOMI.cfg

but that can not be the solution

I don’t have an Eddy Duo and maybe I can’t help you, but Sineos wrote an article in his “Knowledge Base” which looks like a known bug or lack in the “Klipper Architecture / Ecosystem” Klipper Architecture / Ecosystem . (read the thread carefully to understand). He edited the article last time on Jan 25, 2025. So maybe that is still not fixed and looks very similar to your problem SAVE_CONFIG section 'bltouch' option 'z_offset' conflicts with included value . I think this is still valid (please read the edit log here.

I would give it a try.

i thinkl i found the error. you set up the nozzle that the paper slit under it. then you adjust to that the eddy to its 2,5mm high and srew it to lock in position.

Then the eddy knows the high to z=0.

@hcet

eddy use no offset value in the printer.cfg

its high i set with a value of 2.5 and then after calibrate it with "PROBE_EDDY_CURRENT_CALIBRATE_AUTO CHIP=btt_eddy"

then you make the paper thing an it writes that in the config:

[probe_eddy_current btt_eddy]
#*# reg_drive_current = 15
#*# calibrate =
#*# 	0.050000:3269489.238,0.090000:3268691.576,0.130000:3267139.650,
#*# 	0.170000:3266093.270,0.210000:3264980.840,0.250000:3263930.373,
#*# 	0.290000:3262909.906,0.330000:3261907.565,0.370000:3261070.709,
#*# 	0.410000:3260163.329,0.450000:3259330.782,0.490000:3258480.971,
#*# 	0.530000:3257467.939,0.570000:3256487.082,0.610000:3255504.899,
#*# 	0.650000:3254558.965,0.690000:3253678.887,0.730000:3252849.957,
#*# 	0.770000:3252040.163,0.810000:3251163.009,0.850000:3250304.101,
#*# 	0.890000:3249486.179,0.930000:3248717.742,0.970000:3247938.028,
#*# 	1.010000:3247162.369,1.050000:3246400.535,1.090000:3245676.195,
#*# 	1.130000:3244958.192,1.170000:3244249.957,1.210000:3243560.976,
#*# 	1.250000:3242870.618,1.290000:3242173.255,1.330000:3241504.779,
#*# 	1.370000:3240895.528,1.410000:3240320.919,1.450000:3239692.175,
#*# 	1.490000:3239086.532,1.530000:3238478.270,1.570000:3237896.658,
#*# 	1.610000:3237234.463,1.650000:3236612.811,1.690000:3236074.886,
#*# 	1.730000:3235525.296,1.770000:3234971.744,1.810000:3234446.514,
#*# 	1.850000:3233975.514,1.890000:3233531.246,1.930000:3233091.784,
#*# 	1.970000:3232635.190,2.010000:3232168.014,2.050000:3231708.330,
#*# 	2.090000:3231261.574,2.130000:3230824.271,2.170000:3230405.368,
#*# 	2.210000:3229970.560,2.250000:3229504.915,2.290000:3229049.313,
#*# 	2.330000:3228627.160,2.370000:3228231.000,2.410000:3227821.943,
#*# 	2.450000:3227443.161,2.490000:3227044.614,2.530000:3226678.211,
#*# 	2.570000:3226293.880,2.610000:3225951.031,2.650000:3225595.513,
#*# 	2.690000:3225252.461,2.730000:3224907.681,2.770000:3224583.198,
#*# 	2.810000:3224251.089,2.850000:3223928.527,2.890000:3223607.187,
#*# 	2.930000:3223297.347,2.970000:3222949.547,3.010000:3222620.682,
#*# 	3.050000:3222301.736,3.090000:3222010.124,3.130000:3221710.883,
#*# 	3.170000:3221427.284,3.210000:3221133.111,3.250000:3220849.335,
#*# 	3.290000:3220589.677,3.330000:3220333.716,3.370000:3220070.779,
#*# 	3.410000:3219814.056,3.450000:3219533.195,3.490000:3219272.049,
#*# 	3.530000:3219015.455,3.570000:3218757.887,3.610000:3218506.676,
#*# 	3.650000:3218273.167,3.690000:3218023.630,3.730000:3217792.210,
#*# 	3.770000:3217566.702,3.810000:3217351.965,3.850000:3217145.160,
#*# 	3.890000:3216935.384,3.930000:3216713.704,3.970000:3216505.600,
#*# 	4.010000:3216295.671,4.050000:3216089.270

even when z offset is in the printer.cfg it ignores it.

but i think i have the problem found

Cool, please report.

i dont think thats a bug more it should be like that.

i run several test now with ower off several minutes and it seams to be working

Probably, I guess I’ll edit my post.

Please describe your fix and set the thread to solved when finally solved. Thank you.

to early happy

edit:

seems the Macros in the Config file from BTT makes problems.

Are they disabled anything works

ok i think i got it now.

i use that config with the beta z offset function.

i add

#*# [probe]
#*# z_offset = -0.143

to the printer.cfg.

then i made G28 for homing.

Next is

G0 Z0

then i use Babysteps to get the noozle difference with the paper like -0.166

then i edit the printer cfg

to

#*# [probe]
#*# z_offset = -0.166

and save the complete.

Then the printer use that z_offset that i enter.

but save_config doesnt change the value. i dont why it doesnt save the change but thats my way around.

With BTT Microprobe there was no save problem with the offset

Perhaps someone find the Problem in the log why its not saving:

klippy(3).log (952.1 KB)

Are you saying SAVE_CONFIG section 'bltouch' option 'z_offset' conflicts with included value is still valid? If yes, I’ll edit my first post in this thread.

yeah it used it but it seams i found a way without

#*# [probe] #*# z_offset = -0.166

the printer cfg.

Perhaps i was to stupid

that button is needed and Variables.cfg must be active.

Then it save the Offset there as

nvm_offset = 2.139999999999998

Im so stupid because that button is not on the touchscreen