Перейти к основному содержанию

Ошибки конфигурации

На этой странице собраны вопросы, связанные с конфликтами в разделах конфигурации, опечатками в параметрах, include-файлами и SAVE_CONFIG. После изменения конфигурации сначала просмотрите первую ошибку конфигурации в klippy.log, а затем устраняйте проблемы по порядку.

homing override method always homes X and Y before homing Z

Сообщение об ошибке: Конфликт между безопасным Z-хомированием и конфигурацией переопределения хомирования.

Loading...

Причина ошибки: Одновременно настроены [safe_z_home] и [homing_override], из-за чего Klipper не может определить, какую логику хомирования использовать.

Метод решения:

  1. Найдите в файле конфигурации [safe_z_home] и [homing_override].
  2. Оставьте только один из них, исходя из фактической логики хомирования станка.
  3. Сохраните и перезапустите Klipper.

Справочная конфигурация: Руководство по хомированию и калибровке направлений, Справочная конфигурация переопределения хомирования.

Option 'xxx' is not valid in section 'yyy'

Сообщение об ошибке: Option 'xxx' is not valid in section 'yyy' — в указанном разделе конфигурации присутствует нераспознанное имя опции.

Распространенные причины:

  • Опечатка в имени опции, например sensor_pin написано как sensor_ping.
  • Опции из другого раздела конфигурации случайно вставлены в текущий раздел, например, опции из [probe] записаны в [stepper_z].
  • После обновления версии Klipper опции, поддерживавшиеся в старой версии, были удалены или переименованы.
  • Использовано содержимое комментариев, не являющееся фактическим параметром, например default_parameter_z.

Метод решения:

  1. Внимательно проверьте раздел конфигурации и имя опции, указанные в ошибке, подтвердите написание.
  2. Обратитесь к справочной документации по конфигурации Klipper, чтобы确认, к какому разделу должна относиться эта опция.
  3. Если недавно обновляли Klipper, просмотрите журнал изменений конфигурации, чтобы确认, не изменилась ли опция.
  4. Удалите недопустимые опции или переместите их в правильный раздел конфигурации.

Справочная конфигурация: Инструкция по изменению конфигурации

Section 'xxx' is not a valid config section

Сообщение об ошибке: Section 'xxx' is not a valid config section, Unknown config object или определенный раздел конфигурации не может быть распознан Klipper.

Распространенные причины:

  • Опечатка в имени раздела конфигурации, например [bed_mesh] написано как [bedmesh].
  • Текущая версия Klipper не поддерживает этот раздел конфигурации, или после обновления/понижения версии формат конфигурации несовместим.
  • Скопирована конфигурация стороннего плагина, но соответствующий плагин, модуль расширения или ветка Klipper не установлены.
  • В include-файлах сохранены разделы конфигурации от другого станка или другой платы.

Метод решения:

  1. Исходя из имени раздела в ошибке, найдите соответствующий фрагмент в printer.cfg и всех include-файлах.
  2. Подтвердите, что написание соответствует справочной документации Klipper, не используйте китайские скобки или полноширинные символы в именах разделов конфигурации.
  3. Если эта конфигурация из стороннего плагина или пользовательского макропакета, подтвердите, что соответствующий плагин установлен и совместим с текущей версией Klipper.
  4. Если не уверены в назначении этого раздела, сначала закомментируйте его и перезапустите для теста, затем восстанавливайте по одному пункту.

Справочная конфигурация: Инструкция по изменению конфигурации

Unable to open config file / Include file does not exist

Сообщение об ошибке: Unable to open config file /home/xxx/printer_data/config/printer.cfg или Include file 'xxx.cfg' does not exist.

Распространенные причины:

  • Путь к файлу printer.cfg указан неверно или файл был случайно удален.
  • Подфайл конфигурации, на который ссылается [include], не существует или имя файла не совпадает.
  • Инструменты установки, такие как KIAUH, автоматически генерируют ссылку [include], но соответствующий cfg-файл не установлен.
  • Проблемы с правами доступа, из-за которых Klipper не может прочитать файл конфигурации.

Метод решения:

  1. Убедитесь, что printer.cfg существует в каталоге конфигурации Klipper, обычно это ~/printer_data/config/printer.cfg
  2. Проверьте все строки [include xxx.cfg], подтвердите, что указанные файлы действительно существуют.
  3. Если отсутствуют fluidd.cfg или mainsail.cfg, обратитесь к документации по установке соответствующего веб-интерфейса и добавьте конфигурацию.
  4. Убедитесь, что права доступа к файлу конфигурации корректны: ls -la ~/printer_data/config/.

Отсутствует базовая конфигурация Fluidd / Mainsail

Сообщение об ошибке: Fluidd или Mainsail сообщает об отсутствии базовой конфигурации. Распространенные ключевые слова:

[virtual_sdcard] not found in printer configuration.
[pause_resume] not found in printer configuration.
[display_status] is required if you do not have a [display] defined.
CANCEL_PRINT macro not found in configuration.

Пример сообщения Fluidd:

Loading...

Пример сообщения Mainsail:

Loading...

Распространенные причины:

  • В printer.cfg не включен [include fluidd.cfg] или [include mainsail.cfg]
  • В каталоге конфигурации отсутствуют fluidd.cfg / mainsail.cfg, или имя include-файла указано неверно.
  • При ручной настройке пропущены [virtual_sdcard], [pause_resume], [display_status]
  • Не определен макрос CANCEL_PRINT, или файл макроса не включен.

Метод решения:

  1. Необходимо в первую очередь использовать стандартный файл конфигурации для фронтенда. Не рекомендуется обычным пользователям обходить предупреждение, просто добавляя вручную несколько разделов. Стандартные fluidd.cfg / mainsail.cfg одновременно предоставляют виртуальную SD-карту, паузу/возобновление, статус отображения и макрос отмены печати — всю базовую конфигурацию, необходимую фронтенду.

  2. Убедитесь, что в верхней части printer.cfg включен include, соответствующий используемому фронтенду:

    [include fluidd.cfg]

    или:

    [include mainsail.cfg]
  3. Если используется предустановленная система FLY или официальная эталонная конфигурация, убедитесь, что файл fluidd.cfg / mainsail.cfg существует в каталоге ~/printer_data/config/.

  4. Если соответствующий файл не существует, заново добавьте стандартный файл конфигурации фронтенда или обратитесь к документации по начальной настройке Fluidd

  5. После включения стандартного файла конфигурации фронтенда, если требуется изменить позиции паузы, возобновления, отмены печати и параметры ретракта, добавьте _CLIENT_VARIABLE согласно Раздел о пользовательских позициях паузы и отмены печати. Не копируйте и не переписывайте стандартные макросы CANCEL_PRINT / PAUSE / RESUME напрямую.

  6. Только для обслуживания пользовательских систем с явным пониманием зависимостей макросов фронтенда рекомендуется вручную дополнить базовые разделы. Этот способ не рекомендуется для обычных пользователей; как минимум необходимо включить:

    [virtual_sdcard]
    path: ~/printer_data/gcodes
    on_error_gcode: CANCEL_PRINT

    [pause_resume]

    [display_status]

    Также обязательно должен быть доступен рабочий [gcode_macro CANCEL_PRINT], иначе фронтенд по-прежнему будет сообщать CANCEL_PRINT macro not found in configuration.

  7. После сохранения конфигурации выполните RESTART. Если сообщение об отсутствии остается, продолжайте проверять, действительно ли все include-файлы читаются Klipper.

Метод использования макросов фронтенда: Пользовательские позиции паузы и отмены печати Справочная информация по макросам: Введение в макросы

Unable to parse option / option must be specified

Сообщение об ошибке: Unable to parse option 'xxx' in section 'yyy', Option 'xxx' in section 'yyy' must be specified, или must have minimum/maximum, must be above/below. Частые причины

  • Отсутствует обязательный параметр, например в [extruder] нет step_pin, dir_pin, heater_pin или sensor_type.
  • Неверный формат параметра, например, требуется число, а указан текст, или нужен список координат, а пропущена запятая.
  • Значение параметра выходит за допустимый диапазон Klipper, например, необоснованно заданы run_current, max_temp, position_max.
  • При копировании конфигурации остались китайские знаки препинания, полноширинные символы или невидимые символы.

Метод решения:

  1. Основываясь на разделе конфигурации и имени параметра из сообщения об ошибке, вернитесь к соответствующему файлу .cfg и проверьте каждый пункт.
  2. Для чисел, координат и списков подтвердите, что формат соответствует примеру, например mesh_min: 20, 20.
  3. Для ошибок must be above/below или minimum/maximum сначала верните официальный пример или рекомендуемое значение из руководства к плате.
  4. После сохранения выполните RESTART. Если ошибка не устранена, просмотрите первую ошибку конфигурации в klippy.log.

Справочная конфигурация: Инструкция по изменению конфигурации.

Unknown pin chip name / Pin is not a valid pin name / pin used multiple times

Сообщение об ошибке: Unknown pin chip name 'xxx', Pin 'PB12' is not a valid pin name on mcu 'mcu', Invalid pin description 'xxx', pin xxx used multiple times in config.

Частые причины:

  • В многочиповой конфигурации неправильно указан префикс пина, например, нужно было написать toolboard:PB0, а указано имя несуществующего MCU.
  • Неверно задан ID MCU (canbus_uuid или serial), из-за чего пин сопоставляется с неправильным устройством, на котором такого пина нет.
  • Опечатка в имени пина или прямое копирование пина из руководства к одной плате в конфигурацию другой платы.
  • Один и тот же физический пин занят несколькими функциями, например, вентилятор, нагреватель и концевик используют один пин.
  • Модификатор пина !, подтяжка ^, стягивание ~ указаны в неправильном месте.

Метод решения:

  1. Проверьте, что имя [mcu xxx] полностью совпадает с префиксом пина, включая регистр.
  2. Сверьте canbus_uuid или serial из раздела [mcu xxx] с фактическим устройством (можно проверить через ls /dev/serial/by-id/ или python3 -c "import can; ...").
  3. Сверяясь со схемой пинов платы, убедитесь, что каждый pin:, step_pin:, dir_pin:, heater_pin: принадлежит текущей плате.
  4. Найдите во всех include-файлах упоминание пина из ошибки и удалите или замените конфликтующее использование.
  5. Модификаторы пина должны быть перед именем пина, например, ^PB7, !PC13, mcu2:^PB7.

Справочная конфигурация: Инструкция по изменению конфигурации, Справочная конфигурация вентилятора.

gcode command XXX already registered

Сообщение об ошибке: Error: gcode command XXX already registered.

Причина ошибки: Два разных макроса или системных модуля регистрируют одно и то же имя G-code команды, например, два макроса определяют [gcode_macro NEXT].

Частые сценарии:

  • Конфликт пользовательского макроса с системным модулем Klipper или сторонней конфигурацией.
  • Несколько определений [gcode_macro M600].

Метод решения:

  1. Найдите повторяющиеся определения в printer.cfg и всех файлах из [include].
  2. Удалите или переименуйте конфликтующий [gcode_macro].
  3. Проверьте распространенные макросы: [homing_override], [gcode_macro PAUSE], [gcode_macro RESUME], [gcode_macro CANCEL_PRINT].

Справочная конфигурация: Введение в макросы.

Unknown command:"XXX"

Сообщение об ошибке: В консоли или klippy.log появляется Unknown command:"PRINT_START", Unknown command:"START_PRINT", Unknown command:"M600", Unknown command:"EXCLUDE_OBJECT_DEFINE", Unknown command:"EXCLUDE_OBJECT_START", Unknown command:"EXCLUDE_OBJECT_END", Unknown command:"M106", Unknown command:"M201", Unknown command:"M203", Unknown command:"M205" и т.д.

Частые причины:

  • В стартовом или финальном G-code слайсера вызывается макрос, которого нет в Klipper, например, слайсер отправляет PRINT_START, а в конфигурации определен только [gcode_macro START_PRINT].
  • Используются команды, перенесенные из Marlin, которые Klipper по умолчанию не поддерживает или для которых нужен макрос для совместимости.
  • Включена функция исключения объектов, но конфигурация слайсера, Moonraker или Klipper неполная, из-за чего команды EXCLUDE_OBJECT_DEFINE, EXCLUDE_OBJECT_START, EXCLUDE_OBJECT_END не распознаются.
  • Для вентилятора используется [fan_generic] или [output_pin], но слайсер все еще отправляет стандартные M106 / M107.
  • При использовании стороннего пакета макросов отсутствует include-файл, или имя макроса не совпадает с именем, указанным в слайсере.

Метод решения:

  1. Найдите в printer.cfg и всех include-файлах имя команды из ошибки и убедитесь, что существует соответствующий [gcode_macro XXX].
  2. Приведите имена команд старта, завершения, смены материала, вентилятора и исключения объектов в слайсере в соответствие с макросами Klipper.
  3. Если это команды Marlin, лучше удалить ненужные; если нужна совместимость, добавьте явный макрос Klipper.
  4. При ошибках, связанных с исключением объектов, проверьте, выводит ли слайсер метки объектов, включена ли обработка объектов в Moonraker и есть ли [exclude_object] в Klipper.
  5. При ошибке команды вентилятора проверьте, следует ли использовать [fan] или добавить соответствующий управляющий макрос для [fan_generic] / [output_pin].

EXCLUDE_OBJECT_DEFINE / START / END

Значение ошибки: EXCLUDE_OBJECT_DEFINE используется для определения объекта печати, EXCLUDE_OBJECT_START / EXCLUDE_OBJECT_END — для маркировки, к какому объекту относится текущий G-code, чтобы фронтенд мог отображать и исключать конкретные объекты при многообъектной печати. Если в klippy.log постоянно появляются Unknown command:"EXCLUDE_OBJECT_DEFINE", Unknown command:"EXCLUDE_OBJECT_START" или Unknown command:"EXCLUDE_OBJECT_END", это означает, что G-code уже содержит команды исключения объектов, но текущая конфигурация Klipper не настроена на их корректный прием.

Приоритетные проверки:

  1. В printer.cfg или в подключаемых конфигурационных файлах убедитесь, что есть:
[exclude_object]
  1. После изменения выполните RESTART и заново загрузите G-code файл для теста. Ранее загруженные старые файлы могли не обрабатываться последней конфигурацией, рекомендуется переслайсить или загрузить заново.
  2. Проверьте, включена ли обработка объектов в конфигурации Moonraker, обычно в moonraker.conf:
[file_manager]
enable_object_processing: True
  1. Проверьте, включен ли в слайсере вывод меток объектов / исключения объектов. Названия в разных слайсерах отличаются, но обычно в G-code можно найти EXCLUDE_OBJECT_DEFINE, EXCLUDE_OBJECT_START, EXCLUDE_OBJECT_END или имя объекта.
  2. Если нужно временно завершить печать без функции исключения объектов, отключите соответствующий вывод в слайсере и переслайсите; не удаляйте частично команды объектов из файла, иначе список объектов на фронтенде может отображаться некорректно.

Направление диагностики:

  • Ошибка только в EXCLUDE_OBJECT_START / EXCLUDE_OBJECT_END: в первую очередь добавьте [exclude_object], затем перезапустите Klipper.
  • На фронтенде нет списка объектов, но Klipper больше не сообщает Unknown command: проверьте обработку объектов в Moonraker и то, загружен ли G-code заново.
  • В файле вообще нет команд, связанных с объектами: значит, слайсер не выводит метки объектов, и это нужно включить на стороне слайсера.

Справочная конфигурация: Введение в макросы, Инструкция по изменению конфигурации.

Error evaluating 'gcode_macro XXX:gcode'

Сообщение об ошибке: Error evaluating 'gcode_macro PRINT_START:gcode', jinja2.exceptions.UndefinedError, 'dict object' has no attribute 'BED', 'dict object' has no attribute 'HOTEND', 'dict object' has no attribute 'extrude', 'dict object' has no attribute 'heater_bed', gcode.CommandError. Распространённые причины:

  • Слайсер не передаёт макросу необходимые параметры, например, макрос считывает params.HOTEND, но слайсер не передаёт HOTEND=.
  • Несоответствие имён параметров, например, макросу нужны BED / HOTEND, а слайсер фактически передаёт BED_TEMP / EXTRUDER_TEMP.
  • Макрос ссылается на несуществующий объект, например, в конфигурации нет [heater_bed], но макрос считывает printer.heater_bed.
  • В макросе используется синтаксис Jinja2, но неправильно написаны скобки, кавычки, фильтры или значения по умолчанию.
  • Команда, выполняемая внутри макроса, сначала выдаёт ошибку, а внешний уровень отображает только Error evaluating.

Методы решения:

  1. Просмотрите полный Traceback под Error evaluating в klippy.log, чтобы определить, какая переменная или команда вызывает ошибку.
  2. Сверьтесь со стартовым G-code слайсера, убедитесь, что имена передаваемых параметров полностью совпадают с params.xxx в макросе, включая регистр символов.
  3. Задайте значения по умолчанию для необязательных параметров, например, params.BED|default(60)|float, чтобы избежать ошибок при пустом параметре.
  4. Найдите объекты printer.xxx, используемые в макросе, и убедитесь, что соответствующие модули существуют в конфигурации.
  5. Если макрос взят из стороннего конфигурационного пакета, убедитесь, что все зависимые include-файлы и базовые макросы загружены.

Справочная конфигурация: Введение в макросы.

Сбой SAVE_CONFIG или конфликт конфигурации

Сообщение об ошибке: После выполнения SAVE_CONFIG появляется Unable to write config, Option conflict, Cannot save config, или после перезагрузки появляется Can't read autosave from config file - modifications after header.

Распространённые причины:

  • Недостаточно прав на запись в файл printer.cfg, процесс Klipper не может в него записать, часто случается после редактирования файла конфигурации с помощью sudo.
  • Параметры в зоне автоматического сохранения (блок, отмеченный #*#) конфликтуют с теми же параметрами вручную добавленного файла [include].
  • MCU находится в состоянии shutdown, SAVE_CONFIG не может корректно отправить новую конфигурацию.
  • В конце файла printer.cfg есть синтаксическая ошибка или файл обрезан, что приводит к сбою записи зоны автоматического сохранения.
  • После маркера #*# <---------------------- SAVE_CONFIG ----------------------> вручную добавлены обычные конфигурации, комментарии или другие строки, не начинающиеся с #*#, из-за чего Klipper отказывается читать зону автоматического сохранения.
  • Заголовок зоны автоматического сохранения или строки #*# повреждены при ручном редактировании, объединении конфигураций или синхронизации файлов.
  • Несколько include-файлов повторно определяют параметры, которые не должны автоматически сохраняться через SAVE_CONFIG, например, PID, Z offset.

Методы решения:

  1. Проверьте права доступа к файлу конфигурации:

    ls -la ~/printer_data/config/printer.cfg

    Если владелец не текущий пользователь, выполните: sudo chown $USER:$USER ~/printer_data/config/printer.cfg

  2. Если после SAVE_CONFIG принтер не запускается, откройте printer.cfg и посмотрите внизу зону автоматического сохранения #*#.

  3. Если появилось modifications after header, сначала сделайте резервную копию printer.cfg, затем найдите маркер автоматического сохранения:

    grep -nE 'SAVE_CONFIG|DO NOT EDIT|^#\*#' ~/printer_data/config/printer.cfg
  4. Переместите все конфигурации, требующие ручного обслуживания, выше заголовка SAVE_CONFIG. После заголовка могут оставаться только строки #*#, сгенерированные Klipper; не удаляйте всю зону автоматического сохранения напрямую, иначе могут быть потеряны сохранённые значения калибровки, такие как PID, Z offset, сетка кровати.

  5. Если зона автоматического сохранения повреждена или появилось несколько заголовков, сначала восстановите её из последней известной рабочей резервной копии printer-*.cfg в той же директории, затем повторите необходимую калибровку. Не склеивайте несколько зон автоматического сохранения вместе.

  6. Если тот же параметр существует и в include-файле, удалите дубликат из зоны автоматического сохранения или управляйте им централизованно в include-файле.

  7. Если MCU находится в состоянии shutdown, сначала устраните самую раннюю реальную ошибку и выполните FIRMWARE_RESTART, затем повторно выполните SAVE_CONFIG.

  8. Если права доступа нормальные, но запись по-прежнему невозможна, проверьте место на диске: df -h ~/printer_data/.

Справочная конфигурация: Инструкция по изменению конфигурации.

SDCARD_RESET_FILE cannot be run from the sdcard

Сообщение об ошибке: SDCARD_RESET_FILE cannot be run from the sdcard.

Распространённые причины:

  • Во время печати с SD-карты была выполнена команда SDCARD_RESET_FILE, которую не разрешено вызывать во время печати с SD-карты.
  • Стартовый G-code слайсера или макрос случайно содержит SDCARD_RESET_FILE.

Методы решения:

  1. Проверьте стартовый G-code слайсера и пользовательские макросы, удалите или закомментируйте вызов SDCARD_RESET_FILE.
  2. Если действительно необходимо сбросить состояние файла на SD-карте, выполните это вручную после завершения печати, а не во время процесса печати.
  3. Если используется макрос PRINT_START, убедитесь, что в нём нет вызова этой команды.
Loading...