Ошибки конфигурации
На этой странице собраны вопросы, связанные с конфликтами в разделах конфигурации, опечатками в параметрах, include-файлами и SAVE_CONFIG. После изменения конфигурации сначала просмотрите первую ошибку конфигурации в klippy.log, а затем устраняйте проблемы по порядку.
homing override method always homes X and Y before homing Z
Сообщение об ошибке: Конфликт между безопасным Z-хомированием и конфигурацией переопределения хомирования.
Причина ошибки: Одновременно настроены [safe_z_home] и [homing_override], из-за чего Klipper не может определить, какую логику хомирования использовать.
Метод решения:
- Найдите в файле конфигурации
[safe_z_home]и[homing_override]. - Оставьте только один из них, исходя из фактической логики хомирования станка.
- Сохраните и перезапустите 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.
Метод решения:
- Внимательно проверьте раздел конфигурации и имя опции, указанные в ошибке, подтвердите написание.
- Обратитесь к справочной документации по конфигурации Klipper, чтобы确认, к какому разделу должна относиться эта опция.
- Если недавно обновляли Klipper, просмотрите журнал изменений конфигурации, чтобы确认, не изменилась ли опция.
- Удалите недопустимые опции или переместите их в правильный раздел конфигурации.
Справочная конфигурация: Инструкция по изменению конфигурации。
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-файлах сохранены разделы конфигурации от другого станка или другой платы.
Метод решения:
- Исходя из имени раздела в ошибке, найдите соответствующий фрагмент в
printer.cfgи всех include-файлах. - Подтвердите, что написание соответствует справочной документации Klipper, не используйте китайские скобки или полноширинные символы в именах разделов конфигурации.
- Если эта конфигурация из стороннего плагина или пользовательского макропакета, подтвердите, что соответствующий плагин установлен и совместим с текущей версией Klipper.
- Если не уверены в назначении этого раздела, сначала закомментируйте его и перезапустите для теста, затем восстанавливайте по одному пункту.
Справочная конфигурация: Инструкция по изменению конфигурации。
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 не может прочитать файл конфигурации.
Метод решения:
- Убедитесь, что
printer.cfgсуществует в каталоге конфигурации Klipper, обычно это~/printer_data/config/printer.cfg。 - Проверьте все строки
[include xxx.cfg], подтвердите, что указанные файлы действительно существуют. - Если отсутствуют
fluidd.cfgилиmainsail.cfg, обратитесь к документации по установке соответствующего веб-интерфейса и добавьте конфигурацию. - Убедитесь, что права доступа к файлу конфигурации корректны:
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:
Пример сообщения Mainsail:
Распространенные причины:
- В
printer.cfgне включен[include fluidd.cfg]или[include mainsail.cfg]。 - В каталоге конфигурации отсутствуют
fluidd.cfg/mainsail.cfg, или имя include-файла указано неверно. - При ручной настройке пропущены
[virtual_sdcard],[pause_resume],[display_status]。 - Не определен макрос
CANCEL_PRINT, или файл макроса не включен.
Метод решения:
-
Необходимо в первую очередь использовать стандартный файл конфигурации для фронтенда. Не рекомендуется обычным пользователям обходить предупреждение, просто добавляя вручную несколько разделов. Стандартные
fluidd.cfg/mainsail.cfgодновременно предоставляют виртуальную SD-карту, паузу/возобновление, статус отображения и макрос отмены печати — всю базовую конфигурацию, необходимую фронтенду. -
Убедитесь, что в верхней части
printer.cfgвключен include, соответствующий используемому фронтенду:[include fluidd.cfg]или:
[include mainsail.cfg] -
Если используется предустановленная система FLY или официальная эталонная конфигурация, убедитесь, что файл
fluidd.cfg/mainsail.cfgсуществует в каталоге~/printer_data/config/. -
Если соответствующий файл не существует, заново добавьте стандартный файл конфигурации фронтенда или обратитесь к документации по начальной настройке Fluidd。
-
После включения стандартного файла конфигурации фронтенда, если требуется изменить позиции паузы, возобновления, отмены печати и параметры ретракта, добавьте
_CLIENT_VARIABLEсогласно Раздел о пользовательских позициях паузы и отмены печати. Не копируйте и не переписывайте стандартные макросыCANCEL_PRINT/PAUSE/RESUMEнапрямую. -
Только для обслуживания пользовательских систем с явным пониманием зависимостей макросов фронтенда рекомендуется вручную дополнить базовые разделы. Этот способ не рекомендуется для обычных пользователей; как минимум необходимо включить:
[virtual_sdcard]path: ~/printer_data/gcodeson_error_gcode: CANCEL_PRINT[pause_resume][display_status]Также обязательно должен быть доступен рабочий
[gcode_macro CANCEL_PRINT], иначе фронтенд по-прежнему будет сообщатьCANCEL_PRINT macro not found in configuration. -
После сохранения конфигурации выполните
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. - При копировании конфигурации остались китайские знаки препинания, полноширинные символы или невидимые символы.
Метод решения:
- Основываясь на разделе конфигурации и имени параметра из сообщения об ошибке, вернитесь к соответствующему файлу
.cfgи проверьте каждый пункт. - Для чисел, координат и списков подтвердите, что формат соответствует примеру, например
mesh_min: 20, 20. - Для ошибок
must be above/belowилиminimum/maximumсначала верните официальный пример или рекомендуемое значение из руководства к плате. - После сохранения выполните
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), из-за чего пин сопоставляется с неправильным устройством, на котором такого пина нет. - Опечатка в имени пина или прямое копирование пина из руководства к одной плате в конфигурацию другой платы.
- Один и тот же физический пин занят несколькими функциями, например, вентилятор, нагреватель и концевик используют один пин.
- Модификатор пина
!, подтяжка^, стягивание~указаны в неправильном месте.
Метод решения:
- Проверьте, что имя
[mcu xxx]полностью совпадает с префиксом пина, включая регистр. - Сверьте
canbus_uuidилиserialиз раздела[mcu xxx]с фактическим устройством (можно проверить черезls /dev/serial/by-id/илиpython3 -c "import can; ..."). - Сверяясь со схемой пинов платы, убедитесь, что каждый
pin:,step_pin:,dir_pin:,heater_pin:принадлежит текущей плате. - Найдите во всех include-файлах упоминание пина из ошибки и удалите или замените конфликтующее использование.
- Модификаторы пина должны быть перед именем пина, например,
^PB7,!PC13,mcu2:^PB7.
Справочная конфигурация: Инструкция по изменению конфигурации, Справочная конфигурация вентилятора.
gcode command XXX already registered
Сообщение об ошибке: Error: gcode command XXX already registered.
Причина ошибки: Два разных макроса или системных модуля регистрируют одно и то же имя G-code команды, например, два макроса определяют [gcode_macro NEXT].
Частые сценарии:
- Конфликт пользовательского макроса с системным модулем Klipper или сторонней конфигурацией.
- Несколько определений
[gcode_macro M600].
Метод решения:
- Найдите повторяющиеся определения в
printer.cfgи всех файлах из[include]. - Удалите или переименуйте конфликтующий
[gcode_macro]. - Проверьте распространенные макросы:
[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-файл, или имя макроса не совпадает с именем, указанным в слайсере.
Метод решения:
- Найдите в
printer.cfgи всех include-файлах имя команды из ошибки и убедитесь, что существует соответствующий[gcode_macro XXX]. - Приведите имена команд старта, завершения, смены материала, вентилятора и исключения объектов в слайсере в соответствие с макросами Klipper.
- Если это команды Marlin, лучше удалить ненужные; если нужна совместимость, добавьте явный макрос Klipper.
- При ошибках, связанных с исключением объектов, проверьте, выводит ли слайсер метки объектов, включена ли обработка объектов в Moonraker и есть ли
[exclude_object]в Klipper. - При ошибке команды вентилятора проверьте, следует ли использовать
[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 не настроена на их корректный прием.
Приоритетные проверки:
- В
printer.cfgили в подключаемых конфигурационных файлах убедитесь, что есть:
[exclude_object]
- После изменения выполните
RESTARTи заново загрузите G-code файл для теста. Ранее загруженные старые файлы могли не обрабатываться последней конфигурацией, рекомендуется переслайсить или загрузить заново. - Проверьте, включена ли обработка объектов в конфигурации Moonraker, обычно в
moonraker.conf:
[file_manager]
enable_object_processing: True
- Проверьте, включен ли в слайсере вывод меток объектов / исключения объектов. Названия в разных слайсерах отличаются, но обычно в G-code можно найти
EXCLUDE_OBJECT_DEFINE,EXCLUDE_OBJECT_START,EXCLUDE_OBJECT_ENDили имя объекта. - Если нужно временно завершить печать без функции исключения объектов, отключите соответствующий вывод в слайсере и переслайсите; не удаляйте частично команды объектов из файла, иначе список объектов на фронтенде может отображаться некорректно.
Направление диагностики:
- Ошибка только в
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.
Методы решения:
- Просмотрите полный Traceback под
Error evaluatingвklippy.log, чтобы определить, какая переменная или команда вызывает ошибку. - Сверьтесь со стартовым G-code слайсера, убедитесь, что имена передаваемых параметров полностью совпадают с
params.xxxв макросе, включая регистр символов. - Задайте значения по умолчанию для необязательных параметров, например,
params.BED|default(60)|float, чтобы избежать ошибок при пустом параметре. - Найдите объекты
printer.xxx, используемые в макросе, и убедитесь, что соответствующие модули существуют в конфигурации. - Если макрос взят из стороннего конфигурационного пакета, убедитесь, что все зависимые 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.
Методы решения:
-
Проверьте права доступа к файлу конфигурации:
ls -la ~/printer_data/config/printer.cfgЕсли владелец не текущий пользователь, выполните:
sudo chown $USER:$USER ~/printer_data/config/printer.cfg -
Если после
SAVE_CONFIGпринтер не запускается, откройтеprinter.cfgи посмотрите внизу зону автоматического сохранения#*#. -
Если появилось
modifications after header, сначала сделайте резервную копиюprinter.cfg, затем найдите маркер автоматического сохранения:grep -nE 'SAVE_CONFIG|DO NOT EDIT|^#\*#' ~/printer_data/config/printer.cfg -
Переместите все конфигурации, требующие ручного обслуживания, выше заголовка
SAVE_CONFIG. После заголовка могут оставаться только строки#*#, сгенерированные Klipper; не удаляйте всю зону автоматического сохранения напрямую, иначе могут быть потеряны сохранённые значения калибровки, такие как PID, Z offset, сетка кровати. -
Если зона автоматического сохранения повреждена или появилось несколько заголовков, сначала восстановите её из последней известной рабочей резервной копии
printer-*.cfgв той же директории, затем повторите необходимую калибровку. Не склеивайте несколько зон автоматического сохранения вместе. -
Если тот же параметр существует и в include-файле, удалите дубликат из зоны автоматического сохранения или управляйте им централизованно в include-файле.
-
Если MCU находится в состоянии shutdown, сначала устраните самую раннюю реальную ошибку и выполните
FIRMWARE_RESTART, затем повторно выполнитеSAVE_CONFIG. -
Если права доступа нормальные, но запись по-прежнему невозможна, проверьте место на диске:
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.
Методы решения:
- Проверьте стартовый G-code слайсера и пользовательские макросы, удалите или закомментируйте вызов
SDCARD_RESET_FILE. - Если действительно необходимо сбросить состояние файла на SD-карте, выполните это вручную после завершения печати, а не во время процесса печати.
- Если используется макрос
PRINT_START, убедитесь, что в нём нет вызова этой команды.