Перевод конфига на mainline#

Вендорский printer.cfg как есть на upstream Klipper не заводится — несколько секций завязаны на поведение, которое есть только в вендорской прошивке. Переведи их с вендорского конфига; остальное переносится как есть.

Eddy на software I2C#

Вендор гонял LDC1612 по аппаратному i2c2, но только потому, что его F103-прошивка тащит обходы errata аппаратного I2C у STM32F1, которых на mainline нет; на mainline аппаратный i2c2 кидает START_NACK → shutdown. Используй bitbang:

# replace  i2c_bus: i2c2  with:
i2c_software_scl_pin: extruder_mcu:PB10
i2c_software_sda_pin: extruder_mcu:PB11

Software I2C тянет одиночные чтения, tap-хоминг и bulk-поток rapid_scan — независимо подтверждено asnajder/zero-config.

Eddy [probe_eddy_current] на master#

Используй descend_z (переименование старого z_offset; старое имя остаётся как deprecated-алиас) и max_sensor_hz. reg_drive_current и таблицу частота→высота пишет калибровка (SAVE_CONFIG), руками их не задают. Выброси вендор-онли vir_contact_speed и выставь descend_z в высоту захода калибровки (~0.5 мм) — не переноси в него старое значение z_offset от вендора; реальный офсет сопло-датчик впитывается в таблицу калибровки.

Если запинишь тег v0.13.0 вместо master, эти ключи tap-эры отвергаются и требуется z_offset — ещё одна причина сидеть на master.

Хоминг Z — homing_override, а не safe_z_home#

Механического Z-эндстопа нет. Используй [homing_override]:

  • set_position_z: 0
  • защитный z-hop
  • хоминг X/Y по их механическим эндстопам
  • G28 Z на probe:z_virtual_endstop

На master ты вдобавок получаешь tap (PROBE METHOD=tap) для Z по касанию соплом.

Выброси вендор-онли модули#

  • [z_offset_calibration] и макросы, вызывающие RUN_PROBE_VIR_CONTACT / Z_OFFSET_CALIBRATION, заменяются upstream eddy/tap — перепиши или удали их.
  • Вендорские shell-макросы OTA / вывода IP — мусор, выброси их. Сторонний gcode_shell_command.py добавляй только если оставляешь макрос, которому реально нужна shell-команда.

Наведи MCU на их новые UUID#

Обнови [mcu] canbus_uuid / [mcu extruder_mcu] canbus_uuid на новые реальные UUID из миграции MCU (mainline читает реальный аппаратный UID, так что оба MCU поднялись на свежих UUID).

Пара фактов, о которые спотыкаются#

  • Начало координат (0,0) — передний ЛЕВЫЙ угол. У Creality K1c — частого донора конфига — он передний правый, так что переиспользованный K1-конфиг даст зеркальные координаты и меш не в ту сторону. Правь направления осей, а не воюй с мешем.
  • Отдельного термистора температуры головы нет. Для грубого показания с головы читай сам кристалл F103: [temperature_sensor Toolhead_Temp] с sensor_type: temperature_mcu и sensor_mcu: extruder_mcu.
  • Буззер не распаян, хотя его схема на плате есть; активный буззер на F103 не умеет менять высоту тона (да и M300 в Klipper нет). Если поставишь: [output_pin beeper] pin: EXP1_1.

Затем запусти Klipper#

Убедись, что оба MCU грузятся на одной версии master — счётчики команд совпадают, нет расхождений is not compatible / Unknown command — и state: ready (спрашивай у Moonraker /printer/info, а не грепом по логу). Затем переходи к калибровке.

Восстановление конфига из бэкапа#

Если ты пересобираешь, а не переводишь с нуля, восстанавливай printer.cfg вместе с его блоком SAVE_CONFIG — таблица частот eddy, tap_threshold и bed mesh живут там и заново их не набьёшь — плюс saved_variables.cfg. Поправь абсолютные пути, если сменился пользователь ОС (filename у [save_variables] — классический случай). Если klippy жалуется на неизвестную секцию или опцию, значит нужный плагин отсутствует или конфиг тащит опцию, которую новый плагин выкинул — ставь или подрезай соответственно, не удаляй секции целиком вслепую.