Using Eddy
- Ensure your printer has no electrical leakage before use.
- If you have previously configured
eddy,Probe, orBL-Touch, please delete them. - When installing the Eddy, the coil must be above the nozzle and at a distance of
2mm-3mmfrom the nozzle. - Do not turn on the heated bed during testing.
- Multi-Z-axis machines need to be manually leveled once beforehand.
Klipper official has recently optimized the Eddy probe functionality, it is recommended to update to the latest version for use:
- Regular host computer: Please update Klipper to the latest version.
- FLY Fast System: Please upgrade the system version to V1.3.8 or higher.
Wiring Diagram
Before installing or replacing the EDDY sensor, or plugging/unplugging the FPC cable, completely shut down the printer and disconnect the power supply. Do not plug or unplug cables, arrange interface wiring, or touch terminals while the power is on.
-
When using the Max version with onboard LDC1612, install the coil with the trademark facing the heated bed:
Loading...
Supported Toolboard Versions and I2C Addresses
According to the SB2040 series product classification, V3, Plus V3, Pro V3, and Pro Plus V3 do not have onboard LDC1612 and require an external FLY-EDDY; Max V3 and Pro Max V3 use the onboard LDC1612.
| Toolboard Version | LDC1612 Support Method | i2c_address | Configuration to Select |
|---|---|---|---|
| SB2040 V3 / SB2040 Plus V3 / SB2040 Pro V3 / SB2040 Pro Plus V3 | Connect external FLY-EDDY | 42 | "V3 Series: External FLY-EDDY" |
| SB2040 Max V3 / SB2040 Pro Max V3 | Use onboard LDC1612 | 43 | "Max Series: Onboard LDC1612" |
When using the external FLY-EDDY with V3, Plus V3, Pro V3, and Pro Plus V3, configure i2c_address: 42; when using the onboard LDC1612 with Max V3 and Pro Max V3, configure i2c_address: 43. If the address does not match the actual module, Klipper will be unable to communicate with the LDC1612.
External Module Description: FLY-EDDY Documentation
Reference Configuration
- The offset value for
XYneeds to be calculated based on the probe module and the nozzle itself, then modified to the offset value below. - The value of
descend_zmust ensure that the physical height difference between the probe coil and the nozzle tip is within the recommended range of2~3mm.
- V3 Series: External FLY-EDDY (address 42)
- Max series: Onboard LDC1612 (address 43)
This configuration applies to the SB2040 V3, SB2040 Plus V3, SB2040 Pro V3, and SB2040 Pro Plus V3, connecting the EDDY interface on the toolboard via the FLY-EDDY-F FPC cable.
FLY-EDDY Wiring and Installation: FLY-EDDY Product Documentation
[stepper_z]
endstop_pin: probe:z_virtual_endstop
# position_endstop: -0.5
[probe_eddy_current fly_eddy_probe]
sensor_type: ldc1612
i2c_address: 42
# 外置 FLY-EDDY 模块必须使用 42
i2c_mcu: SB2040
i2c_bus: i2c1b
# I2C总线标识,根据MCU定义
x_offset: 0
# X方向探针与喷嘴偏移量(mm),需根据实际安装测量
y_offset: 21.42
# Y方向偏移量(mm),此处为21.42,需根据实际安装测量
descend_z: 2.5
# 探针下降停止距离(mm),即喷嘴与热床之间的安全距离,需根据实际设置
i2c_speed: 4000000
# I2C通信速率(Hz),此处为4MHz
frequency: 40000000
# 外部晶振频率(Hz),FLY-EDDY使用40MHz
[temperature_probe fly_eddy_probe]
sensor_type: Generic 3950
sensor_pin:SB2040:gpio28
# FLY-EDDY-F 的 TEMP 线连接到工具板 gpio28
This configuration applies only to the SB2040 Max V3 and SB2040 Pro Max V3 with onboard LDC1612.
[stepper_z]
endstop_pin: probe:z_virtual_endstop
# position_endstop: -0.5
[probe_eddy_current fly_eddy_probe]
sensor_type: ldc1612
i2c_address: 43
# Max 系列板载 LDC1612 必须使用 43
i2c_mcu: SB2040
i2c_bus: i2c1b
# I2C总线标识,根据MCU定义
x_offset: 0
# X方向探针与喷嘴偏移量(mm),需根据实际安装测量
y_offset: 21.42
# Y方向偏移量(mm),此处为21.42,需根据实际安装测量
descend_z: 2.5
# 探针下降停止距离(mm),即喷嘴与热床之间的安全距离,需根据实际设置
i2c_speed: 4000000
# I2C通信速率(Hz),此处为4MHz
frequency: 40000000
# 外部晶振频率(Hz),SB2040 Max 系列使用40MHz
[temperature_probe fly_eddy_probe]
sensor_type: Generic 3950
sensor_pin:SB2040:gpio28
Coil Model Download Link
- Click the button below to download the coil model:
Calculating XY Offset Values
After downloading the model, measure and calculate the XY offset values based on the actual structure of your printer, then modify the x_offset and y_offset values in the configuration.
EDDY Calibration
Precautions
- Ensure that no other probe configurations such as
ProbeorBL-Touchare enabled simultaneously. - Multi-Z-axis machines need to be manually leveled once first.
- Before calibration, check that there are no debris on the hot bed surface and keep the nozzle clean.
Wait until the nozzle has cooled to a safe temperature before cleaning it. If cleaning must be done while the machine is still hot, only use specialized tools—never touch the nozzle, hot end, or hot bed directly with your hands.
Adding Temporary Configuration
The configuration below is only for temporary calibration and must be deleted or commented out after use.
- After adding it, click
Save & Restartto save and restart the system. - It must be added at the top of the
printer.cfgfile—do not add it at the end.
The temporary macros below will move the machine before the true position of the Z-axis is fully confirmed. Move your hands and tools away, ensure nothing is blocking under the nozzle before execution, 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}
Driving Current Calibration
Enter the following in the web console:
_LDC_CALIBRATE_DRIVE_CURRENT
After execution, the printer will move to the center position and lift the nozzle away from the hot bed. The system will then automatically calibrate the driving current. Once calibration is complete, save the configuration and restart Klipper.
Calibration Height
- Multi-Z-axis machines need to be manually leveled once before performing height calibration.
- After height calibration, it is recommended to level the machine again and recalibrate the height.
- Before calibration, check that there are no debris on the hot bed surface and keep the nozzle clean.
Enter the following 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 box will appear. At this point, the Z height displayed by Klipper is not important—simply follow the on-screen prompts to lower the nozzle gradually until slight friction occurs between the nozzle and the paper.
After completion, click ACCEPT in the dialog box. The system will start calibrating the EDDY height. Once calibration is done, click SAVE_CONFIG & Restart in the upper right corner of the web page to save the configuration and restart Klipper.
Common Questions
Q: What if the temperature rises too slowly?
A: Check if the environment is enclosed and if there are any significant air currents. If heating is too slow, you can end the calibration early.
Q: What if the data fluctuates greatly?
A: Ensure consistent force when testing with paper and check that the sensors are securely installed.
Q: What if calibration doesn’t work after completion?
A: Make sure SAVE_CONFIG was executed and Klipper was 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.
- Z_TILT_ADJUST
- QUAD_GANTRY_LEVEL
[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
[gcode_macro QUAD_GANTRY_LEVEL]
rename_existing: _QUAD_GANTRY_LEVEL
gcode:
{% set PROBE_Z_OFFSET = printer.configfile.settings['probe_eddy_current fly_eddy_probe'].descend_z|float %}
SAVE_GCODE_STATE NAME=STATE_QGL
BED_MESH_CLEAR
{% if not printer.quad_gantry_level.applied %}
_QUAD_GANTRY_LEVEL horizontal_move_z=10 retry_tolerance=1
{% endif %}
_QUAD_GANTRY_LEVEL horizontal_move_z={PROBE_Z_OFFSET} retry_tolerance=0.075 retries=20 METHOD=rapid_scan ADAPTIVE=1
G0 Z10 F6000
G90
M117 QGL Completed
RESTORE_GCODE_STATE NAME=STATE_QGL
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
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:
Fluidd Z-offset calibration location:
After calibration, click Save. The save result will only be displayed in the console; no Klipper restart is required after saving.
Z-offset calibration usually needs to be repeated several times to achieve a more stable first layer effect.