Ошибка Unknown command: G3 в Klipper появляется потому, что прошивка по умолчанию не поддерживает дуговые команды G2 и G3 — в отличие от Marlin, где они часто включены. Когда слайсер вставляет в G-код дуговое движение по часовой стрелке (G3 — против часовой), Klipper останавливает печать и выводит это сообщение в консоли интерфейса Fluidd, Mainsail или OctoPrint.
Проблема решается двумя путями: либо включить штатный модуль gcode_arcs в конфигурации принтера, либо отключить генерацию дуг в настройках слайсера. Оба варианта безопасны, обратимы и не требуют перепрошивки микроконтроллера — достаточно отредактировать файл printer.cfg или профиль печати.
Почему Klipper не понимает команду G3
Команды G2 (дуга по часовой стрелке) и G3 (дуга против часовой стрелки) описывают движение по окружности с заданным радиусом или координатами центра. В классических прошивках вроде Marlin их поддержка включается опцией ARC_SUPPORT при компиляции. В Klipper архитектура другая: вся логика G-кода работает на хосте (Raspberry Pi или аналог), а поддержка дуг реализована отдельным необязательным модулем.
Если секция [gcode_arcs] отсутствует в конфигурации, интерпретатор просто не знает такой команды и выдаёт ошибку. Это не сбой и не повреждение файла — принтер корректно сообщает, что встретил неизвестную инструкцию. Тот же механизм срабатывает для любой неподдерживаемой команды, поэтому текст ошибки всегда содержит имя конкретной команды после двоеточия.
⚠️ Внимание: после ошибки Unknown command Klipper обычно переходит в состояние остановки печати. Не отправляйте тот же G-код повторно, не устранив причину, — печать прервётся в той же точке.
Как убедиться, что дело именно в дугах
Прежде чем менять конфигурацию, проверьте, что в файле действительно есть команды G2/G3. Откройте G-код в текстовом редакторе и выполните поиск по строке G3. Если виновник — слайсер, дуговые команды будут встречаться многократно, чаще всего на криволинейных периметрах и отверстиях.
Также посмотрите лог Klipper. Строка с ошибкой обычно дублируется в файле klippy.log, доступном через интерфейс Fluidd или Mainsail в разделе с логами. Там видно, на какой команде остановилась печать и какие параметры ей передавались.
- 🔍 Найдите в G-коде строки, начинающиеся с
G2илиG3 - 📄 Проверьте
klippy.logна наличие записи «Unknown command» - 🖥️ Убедитесь, что в слайсере включена опция дугов (например, Arc Welder или аналог)
- 🧩 Откройте
printer.cfgи проверьте наличие секции[gcode_arcs]
Способ 1: включить модуль gcode_arcs
Самый правильный вариант — научить Klipper понимать дуги. Для этого в файл printer.cfg добавляется секция модуля. Откройте конфигурацию через веб-интерфейс и вставьте следующий блок:
[gcode_arcs]
resolution: 1.0
Параметр resolution задаёт максимальную длину сегмента в миллиметрах, на которые разбивается дуга: Klipper аппроксимирует окружность короткими прямыми отрезками. Значение 1.0 мм — разумный старт; меньшие значения дают более гладкую дугу, но увеличивают количество сегментов. После сохранения файла нажмите кнопку перезапуска (RESTART или FIRMWARE_RESTART не требуется — достаточно обычного рестарта хоста Klipper).
Чтобы проверить результат, отправьте в консоли тестовую команду, например небольшую дугу на безопасной высоте:
G3 X20 Y20 I10 J0 F1500
Если ошибка не появилась и каретка выполнила движение по дуге, модуль работает. Дальше можно печатать прежние файлы без перенастройки слайсера.
☑️ Включение поддержки дуг в Klipper
Способ 2: отключить дуги в слайсере
Альтернатива — не генерировать G2/G3 вовсе. В PrusaSlicer и его форках вроде OrcaSlicer за это отвечает опция дуг в настройках принтера или печати; в OctoPrint дуги часто добавляет популярный плагин Arc Welder. Отключите соответствующую опцию, пересохраните G-код — и файл будет содержать только обычные линейные перемещения G1.
У этого подхода есть плюс и минус. Плюс — совместимость с любой прошивкой без правки конфигурации. Минус — файлы становятся заметно крупнее, потому что каждая дуга заменяется множеством коротких отрезков, а на моделях с большим количеством окружностей размер G-кода может вырасти в разы.
| Подход | Что меняется | Плюсы | Минусы |
|---|---|---|---|
| Модуль gcode_arcs | printer.cfg | Компактные файлы, гладкие дуги | Нужно редактировать конфигурацию |
| Отключение дуг в слайсере | Профиль печати | Не трогаем прошивку | Большие файлы G-кода |
| Удаление Arc Welder | OctoPrint | Простая отмена | Теряется сжатие дуг |
| Макрос-заглушка G3 | printer.cfg | Быстрый обход ошибки | Дуги не выполняются корректно |
Макрос-заглушка и её ограничения
Встречается совет создать пустой макрос [gcode_macro G3], чтобы подавить ошибку. Технически это сработает — Klipper перестанет ругаться. Но макрос-заглушка не выполняет движение: принтер просто пропустит дугу, и на модели останется пропуск экструзии, дефект стенки или смещённая геометрия. Использовать такой приём для реальной печати нельзя — только как временную диагностику.
Если хотите реализовать дуги через макрос полноценно, придётся вручную программировать разбиение на сегменты на языке шаблонов Jinja2, что заметно сложнее и медленнее штатного модуля. Практического смысла в этом нет: [gcode_arcs] делает то же самое одной строкой.
⚠️ Внимание: не копируйте чужие макросы G2/G3 из форумов без проверки логики. Ошибка в формуле разбиения дуги приведёт к движению каретки за пределы стола или к удару сопла о модель.
Другие команды, вызывающие похожую ошибку
Та же ошибка Unknown command возникает и с другими инструкциями, которые Klipper не поддерживает или обрабатывает иначе. Типичные примеры — специфичные для Marlin команды вроде M600 (смена филамента) без соответствующего макроса, а также G29 в привычном марлиновском смысле: в Klipper выравнивание стола выполняется через BED_MESH_CALIBRATE.
Общий принцип диагностики одинаков: смотрите имя команды в тексте ошибки, проверяйте, есть ли для неё штатный модуль или макрос, и при необходимости адаптируйте стартовый G-код слайсера под Klipper. Большинство готовых профилей для популярных принтеров уже учитывают эти различия.
Почему слайсеры вообще генерируют G2/G3
Дуговые команды позволяют описать окружность одной строкой вместо десятков линейных сегментов. Это уменьшает размер G-кода и снижает нагрузку на последовательный порт в старых прошивках. В Klipper, где G-код обрабатывается на полноценном компьютере, выигрыш менее критичен, поэтому поддержка дуг сделана опциональной.
Что делать, если ошибка осталась
Если после добавления [gcode_arcs] и перезапуска ошибка сохраняется, проверьте три момента. Первое — нет ли опечатки в имени секции: конфигурация чувствительна к регистру и скобкам. Второе — действительно ли Klipper перезапустился: при синтаксической ошибке в файле он может не подняться, и тогда в интерфейсе появится отдельное сообщение о проблеме конфигурации.
Третье — убедитесь, что вы редактируете тот файл, который реально загружается. На некоторых установках с несколькими конфигурациями или при использовании [include] правка может попасть не в тот файл. Проверьте начало klippy.log: там перечислены все подключённые конфигурационные файлы.
- ✅ Проверьте синтаксис секции
[gcode_arcs]— без лишних пробелов и опечаток - 🔄 Убедитесь, что Klipper успешно перезапустился после сохранения
- 📂 Сверьте путь редактируемого файла с загруженными конфигурациями в логе
- 🧪 Протестируйте команду G3 вручную из консоли до запуска печати
Частые вопросы
Почему в Marlin команда G3 работала, а в Klipper нет?
В Marlin поддержка дуг включается на этапе компиляции прошивки и часто активна по умолчанию в готовых сборках. В Klipper дуги реализованы опциональным модулем [gcode_arcs], который нужно явно добавить в конфигурацию.
Чем отличаются команды G2 и G3?
Обе описывают движение по дуге: G2 — по часовой стрелке, G3 — против часовой. Модуль gcode_arcs включает поддержку обеих команд одновременно.
Нужно ли перепрошивать плату принтера для включения G3?
Нет. Модуль gcode_arcs работает на стороне хоста (Raspberry Pi или другого компьютера с Klipper). Достаточно отредактировать printer.cfg и перезапустить сервис Klipper — прошивка микроконтроллера не меняется.
Какое значение resolution выбрать для gcode_arcs?
Значение 1.0 мм — разумная отправная точка для большинства моделей. Уменьшение параметра делает дугу глаже, но увеличивает число сегментов; увеличение ускоряет обработку ценой заметных граней на малых радиусах.
Можно ли просто игнорировать ошибку и печатать дальше?
Нет. При неизвестной команде Klipper останавливает выполнение файла, и печать фактически прерывается. Даже если бы команда пропускалась, пропущенная дуга означала бы дефект геометрии детали.