BTT Eddy Duo on the Elegoo Neptune 4 Plus - companion package for the raspberry.tips article
=============================================================================================

Contents
--------
firmware/
  klipper-eddy-duo-usb-v0.13.0-97-amplitudefix.uf2
      Firmware for the Eddy Duo in USB mode. MD5: e94c817deb75f658d23234486046ced9
      Built from Klipper commit bb281834b (v0.13.0-97, 2025-03-21) - the Klipper revision
      Elegoo's stock firmware is based on - plus a backport of mainline commit c6c761497
      (2025-11-27, "ldc1612: ignore amplitude errors during homing"). Without that fix the
      sensor aborts homing/levelling with "Eddy current sensor error" once the bed is warm.
      Target: RP2040, USBSERIAL, no bootloader offset, flash chip "GENERIC_03H with CLKDIV 4".
      Flashing: hold the BOOT button, plug the Eddy into a PC via USB, copy the .uf2 onto the
      RPI-RP2 drive that appears. The drive disappears and the Eddy re-enumerates as
      "Klipper rp2040" (USB VID 1D50 / PID 614E).
  0001-ldc1612-ignore-amplitude-error-bit-during-homing.patch
      The backport as a git patch (2 lines in src/sensor_ldc1612.c).
  klipper-eddy-duo-usb.config
      The exact make menuconfig result (.config) used for the build.
  BUILD-FIRMWARE.md
      How the firmware was built and how to rebuild it if Elegoo ships a newer Klipper.

config-90deg-height-adjustable/   for Printables model 1365010 (bracket + slider), coil offsets x -41.58 / y 26.48
config-0deg-fixed-adapter/        for Printables model 928061, 0-degree variant, coil offsets x -36.16 / y 31.66
  eddy.cfg                        the new Klipper sections; add "[include eddy.cfg]" to printer.cfg
                                  -> enter the serial id of YOUR Eddy (ls /dev/serial/by-id/)
  printer.cfg                     complete, ready-to-use printer.cfg for the Neptune 4 Plus USB-C version with
                                  Elegoo firmware 1.4.1.4 (stock config V1.6) - only for exactly that version;
                                  mesh profiles removed, so level once after installing
  printer.cfg-changes.diff        the same edits as a unified diff, for anyone on a different config version

start-gcode-neptune4plus-eddy.gcode   ElegooSlicer machine start G-code that runs EDDY_START_MESH
                                      (adaptive rapid scan of the print area) before every print

Elegoo display configuration
----------------------------
The display software reads the 11x11 levelling window from
/home/mks/Desktop/myfile/znp/znp_tjc_klipper/elegoo_conf.ini, section [level_mode]:
  mesh_max_x=287            (90-degree bracket)   or 292 (0-degree adapter)
  move_x_aft_level=206.58   move_y_aft_level=138.52   (90-degree)
  move_x_aft_level=201.16   move_y_aft_level=133.34   (0-degree)
The display service only reads the file at start-up: power-cycle the printer afterwards.

Safety note
-----------
eddy.cfg disables the G-code command Z_OFFSET_APPLY_PROBE on purpose. Elegoo's patched Klipper
writes "z_offset = 0.000" into the probe section when that command runs (Fluidd's "save Z offset"
button calls it). For the Eddy that means trigger height 0 mm - the nozzle would be driven into the
bed on the next homing. To move the zero point, re-run the paper test (EDDY_CALIBRATE_AUTO).

Everything here is provided as-is; back up your printer.cfg first. Tested on one Neptune 4 Plus
(USB-C toolhead, board ZNP_N4E_K1_V2.3, Elegoo Klipper files dated 2025-05-24).
