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

**URL:** <https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033>\
**Category:** General Discussion\
**Created:** [May 27, 2026, 3:06pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033 "2026-05-27T15:06:18Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 3:06pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/1 "2026-05-27T15:06:18Z")

</div>

### 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](https://klipper.discourse.group/uploads/short-url/2BojMOjhjLQl3yjWXsrV3mDLiRF.zip) (256.5 KB)

---

<div class="post-metadata">

**Author:** ![nefelim4ag](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/nefelim4ag/32/2387_2.png) [@nefelim4ag](https://klipper.discourse.group/u/nefelim4ag)\
**Post date:** [May 27, 2026, 3:31pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/2 "2026-05-27T15:31:25Z")

</div>

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](https://www.klipper3d.org/G-Codes.html#z_offset_apply_probe) to fine tune it.

Also, I suggest you to read the: [Eddy Current Inductive probe - Klipper documentation](https://www.klipper3d.org/Eddy_Probe.html)

Hope that helps,  
-Timofey

---

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 3:40pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/3 "2026-05-27T15:40:35Z")

</div>

you mean delete macro

G28  
SET\_Z\_FROM\_PROBE

PROBE\_EDDY\_CURRENT\_CALIBRATE\_AUTO

These Macros?

Would then any of the eddy work?

---

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 3:54pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/4 "2026-05-27T15:54:35Z")

</div>

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

```auto

# 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

---

<div class="post-metadata">

**Author:** ![hcet14](https://avatars.discourse-cdn.com/v4/letter/h/ecd19e/32.png) [@hcet14](https://klipper.discourse.group/u/hcet14)\
**Post date:** [May 27, 2026, 4:38pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/5 "2026-05-27T16:38:00Z")

</div>

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](https://klipper.discourse.group/t/klipper-architecture-ecosystem/6313) .~~ (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](https://klipper.discourse.group/t/save-config-section-bltouch-option-z-offset-conflicts-with-included-value/6640) . I think this is still valid (please read the edit log here.

I would give it a try.

---

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 4:48pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/6 "2026-05-27T16:48:54Z")

</div>

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:

```auto
[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

---

<div class="post-metadata">

**Author:** ![hcet14](https://avatars.discourse-cdn.com/v4/letter/h/ecd19e/32.png) [@hcet14](https://klipper.discourse.group/u/hcet14)\
**Post date:** [May 27, 2026, 4:51pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/7 "2026-05-27T16:51:35Z")

</div>

Cool, please report.

---

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 5:05pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/8 "2026-05-27T17:05:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hcet14](https://avatars.discourse-cdn.com/v4/letter/h/ecd19e/32.png) [@hcet14](https://klipper.discourse.group/u/hcet14)\
**Post date:** [May 27, 2026, 5:14pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/9 "2026-05-27T17:14:55Z")

</div>

> [@Laen](#):
>
> i dont think thats a bug more it should be like that.

Probably, I guess I’ll edit my post.

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

---

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 5:32pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/10 "2026-05-27T17:32:06Z")

</div>

to early happy

edit:

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

Are they disabled anything works

---

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 8:29pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/11 "2026-05-27T20:29:21Z")

</div>

ok i think i got it now.

i use that config with the beta z offset function.

i add

```auto
#*# [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

```auto
#*# [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](https://klipper.discourse.group/uploads/short-url/rnNTaVaIA5bCPRaKXUEfmvBaae7.log) (952.1 KB)

---

<div class="post-metadata">

**Author:** ![hcet14](https://avatars.discourse-cdn.com/v4/letter/h/ecd19e/32.png) [@hcet14](https://klipper.discourse.group/u/hcet14)\
**Post date:** [May 27, 2026, 8:46pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/12 "2026-05-27T20:46:34Z")

</div>

Are you saying [SAVE\_CONFIG section 'bltouch' option 'z\_offset' conflicts with included value](https://klipper.discourse.group/t/save-config-section-bltouch-option-z-offset-conflicts-with-included-value/6640) is still valid? If yes, I’ll edit my first post in this thread.

---

<div class="post-metadata">

**Author:** ![Laen](https://avatars.discourse-cdn.com/v4/letter/l/bb73d2/32.png) [@Laen](https://klipper.discourse.group/u/Laen)\
**Post date:** [May 27, 2026, 9:10pm UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/13 "2026-05-27T21:10:01Z")

</div>

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

 ![capture_001_27052026_230654](https://global.discourse-cdn.com/free1/uploads/klipper/original/3X/1/e/1e88be4c01e77d8f0b44899b63dcdd41b26b5bd2.jpeg)

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

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/klipper/original/1X/64419bf2aac6639e6ef5cef200dcd456b0a01ac3.png) [@system](https://klipper.discourse.group/u/system)\
**Post date:** [June 27, 2026, 7:10am UTC](https://klipper.discourse.group/t/klipper-and-eddy-duo-forget-noozle-z-offset-after-power-off-the-printer/26033/14 "2026-06-27T07:10:27Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
