Skip to main content

EDDY Usage

Info
  • Ensure your printer does not have electrical leakage before use.
  • If you have previously configured eddy, Probe, or BL-Touch, please delete those configurations.
  • When installing Eddy, the coil must be above the nozzle, at a distance of 2mm-3mm from the nozzle.
  • Do not turn on the heated bed during testing.
Notes
  • Multi-Z-axis machines require one manual leveling to be performed properly.
Version Requirements

Klipper has recently optimized the Eddy probe function, it is recommended to update to the latest version for use:

  • Regular Host: Please update Klipper to the latest version.
  • FLY Fast System: Please upgrade the system version to V1.3.8 or higher.

Wiring Diagram

  • Install with the logo facing the heated bed.
    Loading...

Reference Configuration

  • The XY offset values need to be calculated based on the probe module and the nozzle itself, then modified in the offset values below.
  • The descend_z value must ensure the physical height difference between the probe coil and the nozzle tip is within the recommended range of 2~3mm.
[stepper_z]
endstop_pin: probe:z_virtual_endstop
# position_endstop: -0.5

[probe_eddy_current fly_eddy_probe]
sensor_type: ldc1612
i2c_address: 43
i2c_mcu: SHT36
i2c_bus: i2c1e
# I2C bus identifier, defined according to the MCU
x_offset: 0
# X-direction probe to nozzle offset (mm), adjust based on actual installation measurement
y_offset: 21.42
# Y-direction offset (mm), here set to 21.42, adjust based on actual installation measurement
descend_z: 2.5
# Probe descent stop distance (mm), i.e., safe distance between the nozzle and the heated bed, adjust based on actual settings
i2c_speed: 4000000
# I2C communication speed (Hz), here set to 4MHz
frequency: 40000000
# External crystal frequency (Hz), SHT36V3 uses 40MHZ

[temperature_probe fly_eddy_probe]
sensor_type: Generic 3950
sensor_pin:SHT36:gpio28
  • Click the button below to download the coil model:
Loading...

Calculate XY Offset Values

After downloading the model, measure and calculate the XY offset values based on your printer's actual structure, then modify x_offset and y_offset in the configuration.

Loading...

EDDY Calibration

Precautions

  • Ensure that no other probe configurations such as Probe or BL-Touch are enabled simultaneously.
  • Multi Z-axis machines require a manual bed leveling first.
  • Before calibration, check that the bed surface is free of debris and keep the nozzle clean.
Safety Tips

Wait for the nozzle to cool to a safe temperature before cleaning it; if cleaning must be performed while hot, use only specialized tools. Never touch the nozzle, hot end, or bed with your hands directly.

Add Temporary Configuration

Important

The configuration below is for temporary calibration only and must be deleted or commented out after use.

  1. After adding, click Save & Restart to save and reboot.
  2. It must be added to the top of the printer.cfg file. Do not add it to the end of the file.
Motion Risk

The temporary macro below will move the machine without fully confirming the actual Z-axis position. Before execution, keep hands and tools clear, ensure nothing is obstructing the nozzle, and be ready to use the emergency stop at any time.

[force_move]
enable_force_move: true

[gcode_macro _LDC_CALIBRATE_DRIVE_CURRENT]
gcode:
BED_MESH_CLEAR
SET_KINEMATIC_POSITION x=100 y=100 z=10
G28 X Y
M104 S0
M140 S0
M106 S0
G0 X{printer.toolhead.axis_maximum.x / 2} Y{printer.toolhead.axis_maximum.y / 2} F6000
G0 Z30 F600
G4 P1000
LDC_CALIBRATE_DRIVE_CURRENT CHIP=fly_eddy_probe
G4 P1000
SAVE_CONFIG

[gcode_macro PROBE_EDDY_CURRENT_CALIBRATE_AUTO]
gcode:
BED_MESH_CLEAR
G28 X Y
M104 S0
M140 S0
M106 S0
G90
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 }
{% endif %}
PROBE_EDDY_CURRENT_CALIBRATE {rawparams}

Drive Current Calibration

Enter the following command in the web console:

_LDC_CALIBRATE_DRIVE_CURRENT

After execution, the printer will move to the center position and raise the print head away from the bed. The system will then automatically perform the drive current calibration. Once completed, save the configuration and restart Klipper.

Height Calibration

Tips
  • Multi Z-axis machines require a manual bed leveling first before performing height calibration.
  • After completing height calibration on multi Z-axis machines, it is recommended to perform another bed leveling and recalibrate the height.
  • Before calibration, check that the bed surface is free of debris and keep the nozzle clean.

Enter the following command in the web console:

PROBE_EDDY_CURRENT_CALIBRATE_AUTO CHIP=fly_eddy_probe

After execution, the printer will move to the center position and a calibration dialog will appear. The Z height displayed by Klipper at this point is not important. Simply follow the on-screen prompts to gradually lower the nozzle until it makes light contact with the paper.

Once done, click ACCEPT in the dialog. The system will begin calibrating the EDDY height. After calibration is complete, click SAVE_CONFIG & Restart in the top right corner of the web interface to save the configuration and restart Klipper.

Frequently Asked Questions

Q: What if the temperature rises too slowly?

A: Check if the environment is enclosed and if there is significant airflow. If the heating is too slow, you can end the calibration early.

Q: What if the data fluctuates significantly?

A: Ensure the paper test force is consistent, and check that the sensor is installed securely.

Q: What if the calibration is ineffective?

A: Confirm that SAVE_CONFIG has been executed and Klipper has been restarted.

Optimization Usage

Rapid Bed Probing

The macro below will first raise the nozzle to 10mm for rapid leveling, then use the EDDY probe's descend height for fine leveling.

[gcode_macro Z_TILT_ADJUST]
rename_existing: _Z_TILT_ADJUST
gcode:
{% set PROBE_Z_OFFSET = printer.configfile.settings['probe_eddy_current fly_eddy_probe'].descend_z|float %}
SAVE_GCODE_STATE NAME=STATE_Z_TILT
BED_MESH_CLEAR

{% if not printer.z_tilt.applied %}
_Z_TILT_ADJUST horizontal_move_z=10 retry_tolerance=1
{% endif %}

_Z_TILT_ADJUST horizontal_move_z={PROBE_Z_OFFSET} retry_tolerance=0.075 retries=20 METHOD=rapid_scan ADAPTIVE=1
G0 Z10 F6000
G90
M117 Z_tilt Completed
RESTORE_GCODE_STATE NAME=STATE_Z_TILT
M400

Heatbed

The macro below will use rapid scan mode for bed mesh calibration and temporarily turn off the heatbed during scanning to reduce the impact of heatbed heating and high-power loads on the EDDY probe. The original heatbed target temperature will be restored after scanning.

[gcode_macro BED_MESH_CALIBRATE]
rename_existing: _BED_MESH_CALIBRATE
gcode:
{% set PROBE_Z_OFFSET = printer.configfile.settings['probe_eddy_current fly_eddy_probe'].descend_z|float %}
{% set TARGET_TEMP = printer.heater_bed.target %}
M140 S0
_BED_MESH_CALIBRATE horizontal_move_z={PROBE_Z_OFFSET} METHOD=rapid_scan {rawparams}
M140 S{TARGET_TEMP}

EDDY Z-Offset Usage

Important Notice

The EDDY Z-offset function previously had compatibility issues, which have been fixed in the Klipper update on December 31, 2025.

  • Standard host: Update Klipper to the latest stable version.
  • FLY host: Upgrade the system version to V1.3.5 or higher.

After completing the update, please remove any old settings related to Z-offset from the configuration file, otherwise this function may not work properly.

Z-Offset Explanation

Before calibrating the Z-offset, it is recommended to first print a large-area single-layer model to observe the first layer condition.

Mainsail Z-offset calibration location:

Loading...

Fluidd Z-offset calibration location:

Loading...

After calibration, click Save. The save result will only be displayed in the console; no Klipper restart is required after saving.

Notes

Z-offset calibration usually needs to be repeated several times to achieve a more stable first layer effect.

Loading...