Klipper на Ender 3 с SKR Mini E3 v3.0: безопасный план установки

Короткий ответ

На Ender 3 с заменённой родной платой Creality на BTT SKR Mini E3 v3.0 (BTT - англ. BigTreeTech, китайский производитель плат для 3D-принтеров) Klipper ставится за один спокойный вечер. Порядок такой: собираете на управляющем компьютере прошивку firmware.bin под чип STM32G0B1, заливаете её на плату через microSD, подключаете плату по USB к Raspberry Pi (англ. одноплатный мини-ПК на Linux) или дешёвому мини-ПК на x86, заливаете базовый printer.cfg из официального репозитория Klipper и проходите три калибровки - Z-offset (высота сопла над столом в нулевой точке), input shaping (гашение вибраций рамы) и pressure advance (компенсация давления расплава в сопле).

Одна важная оговорка сразу: SKR Mini E3 v3.0 поддерживается примером конфигурации Klipper, но файл с префиксом generic описывает плату, а не весь принтер. Ender 3 разных поколений отличаются датчиками, направлением моторов, экраном, механизмом оси Z и дополнительными устройствами. Поэтому чужой printer.cfg целиком копировать нельзя - ниже показано, что проверять на каждом шаге.

В статье - рабочий порядок действий, актуальные команды и типичные грабли (плата не определяется по USB, прошивка не заливается, Pi теряет связь с принтером посреди печати).

Что нужно готово до старта

Klipper на стоковой плате Creality 4.2.7 ставить можно, но это путь страданий: чип STM32F103 слабее, USB-загрузчика нет, прошивать нужно через SD-карту с переименованием файла. SKR Mini E3 v3.0 на чипе STM32G0B1 убирает эти проблемы.

Минимальный комплект:

Дозаказывать ADXL345 через неделю после установки Klipper - типичная ловушка: настройку резонансов придётся переделывать с нуля. Берите сразу.

Шаг 1. Готовим Raspberry Pi или мини-ПК

Идея простая: ставим Linux, сверху накатываем Klipper и браузерный веб-интерфейс Mainsail. На Pi это делается одним готовым образом MainsailOS, на x86 - руками за полчаса.

Если у Вас Raspberry Pi

Скачиваете официальный образ MainsailOS (актуальная сборка - на Debian 12 bookworm), пишете на microSD через утилиту Raspberry Pi Imager. В Imager обязательно укажите Wi-Fi-сеть, пароль и включите SSH - иначе Pi окажется «слепой коробкой». Пользователь по умолчанию - pi, пароль задаёте в Imager.

Вставляете карту, включаете питание. Через 2-3 минуты Pi появляется в локальной сети по адресу mainsail.local. Открываете в браузере - должен показаться интерфейс Mainsail с надписью «Klipper not connected». Это нормально.

Если у Вас мини-ПК на x86

Ставите Debian 12 минимальной установкой, создаёте пользователя pi. Через SSH:


sudo apt update && sudo apt install -y git python3-pip
git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh

KIAUH (Klipper Installation And Update Helper - помощник установки Klipper) даёт текстовое меню. Выбираете Install -> Klipper -> Mainsail -> Moonraker. После установки открываете адрес мини-ПК в браузере и видите ту же Mainsail.

Шаг 2. Собираем firmware.bin под SKR Mini E3 v3.0

Klipper состоит из двух частей: «мозг» на Pi/мини-ПК и «исполнитель» на плате принтера. Прошивку для платы собираете прямо на управляющем компьютере - это занимает минуту.

Через SSH:


cd ~/klipper
make menuconfig

В синем меню выставляете параметры для SKR Mini E3 v3.0 (сверено с примером конфигурации платы в репозитории Klipper):

Нажимаете Q, соглашаетесь сохранить, потом:


make clean
make

Через 30-60 секунд в папке ~/klipper/out/ появится файл klipper.bin. Это и есть прошивка для платы.

Заливка firmware на плату

Выключаете принтер. Вытаскиваете microSD из платы SKR (на v3.0 она с обратной стороны платы, не путать с картой Pi). Копируете на неё klipper.bin и переименовываете в firmware.bin - без этого загрузчик BTT файл не увидит. Вставляете карту обратно, включаете принтер.

Загрузчик находит firmware.bin, заливает его на чип STM32G0B1 и переименовывает файл в FIRMWARE.CUR - это маркер «уже применено». Процесс занимает несколько секунд, отдельной индикации обычно нет. Выключите принтер, вытащите карту и проверьте: если файл переименован в FIRMWARE.CUR - прошивка зашла.

Связь Pi с платой

Подключаете USB-кабель от Pi к плате SKR, включаете принтер. Через SSH:


ls /dev/serial/by-id/

Должна появиться запись вида usb-Klipper_stm32g0b1xx_XXXXXXXX-if00. Если пусто - плата либо не прошилась, либо кабель битый. Смотрите dmesg | tail -20: видите error -71 или USB disconnect - это плохой кабель или помеха. Меняете на короткий кабель с ферритом.

Шаг 3. printer.cfg - конфиг под свой Ender 3

Klipper не работает без printer.cfg - это описание Вашего принтера: длины осей, шаги моторов, пины концевиков, тип термистора. Для связки «Ender 3 + SKR Mini E3 v3.0» готовый пример лежит в репозитории Klipper под именем generic-bigtreetech-skr-mini-e3-v3.0.cfg.

В Mainsail слева панель «Machine» -> файл printer.cfg. Если его нет - создаёте новый и вставляете содержимое примера. Дальше меняете свои блоки.

Указываете адрес платы из шага выше:


[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_XXXXXXXX-if00

Кинематику и пределы:


[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100

Для стокового Ender 3 без апгрейдов ставьте max_accel заметно скромнее (например, 1500). Гнать 3000 на родных колёсах смысла нет - рама раскачается, грани поплывут.

И блок осей - длины X/Y/Z в миллиметрах. Для Ender 3/Pro/V2 это 235/235/250.

Здесь главное правило безопасности. Не переносите чужой printer.cfg целиком, не сверив железо. Ошибка в контакте нагревателя или в типе датчика температуры может отключить защиту или привести к неконтролируемому нагреву. Перед первым нагревом:

  1. Сверьте параметры сборки прошивки с комментариями в официальном файле платы.
  2. Заполните контакты датчиков, нагревателей и двигателей по схеме своей аппаратной сборки.
  3. До первого нагрева проверьте показания датчиков при комнатной температуре - они должны показывать примерно температуру в комнате, а не 0 или 300.
  4. Проверьте направление каждой оси коротким движением вдали от края.
  5. Только после этого пробуйте нагрев, держа руку у выключателя питания.

Когда всё сверено - жмёте «Save & Restart». Klipper перечитывает конфиг и подключается к плате. В правом верхнем углу Mainsail зелёная иконка «Klipper Ready» - базовая прошивка работает.

Шаг 4. Первая калибровка - Z-offset

Без правильного Z-offset (расстояния между соплом и столом в нулевой точке) первый слой не приклеится. Порядок:

  1. Греете стол до 60 °C (для PLA), сопло - до 200 °C. Считать на холодную бесполезно: металл при нагреве расширяется.
  2. В Mainsail вкладка «Tune» -> команда G28 (парковка всех осей по нулям).
  3. Команда PROBE_CALIBRATE, если стоит BLTouch / CR Touch (датчики автоуровня стола), иначе Z_ENDSTOP_CALIBRATE для физического концевика.
  4. Подкладываете под сопло лист офисной бумаги (плотность 80 г/м²). Кнопками Z+ / Z- (шаг 0.05 мм) опускаете сопло, пока бумага не начнёт тянуться с лёгким сопротивлением.
  5. Команда ACCEPT сохранит значение, потом SAVE_CONFIG допишет в printer.cfg блок [stepper_z] position_endstop.

Если первый слой плохо льнёт - подбираете в слайсере Z-offset на ±0.04 мм. Подробнее - в статье Первый слой не клеится: диагностика.

Шаг 5. Input shaping - главное, ради чего ставили Klipper

Input shaping - это гашение механических резонансов рамы. Когда принтер резко двигает голову, рама колеблется на своей частоте, и на гранях остаются «тени» - повторяющиеся отражения углов чуть дальше по плоскости. Klipper измеряет эти частоты акселерометром ADXL345 и встраивает в движение фильтр, который их подавляет. Ключевое: частоты у каждого принтера свои и их надо измерить, а не брать чужие числа - они зависят от рамы, узлов и апгрейдов.

Подключение ADXL345

Акселерометр подключается по интерфейсу SPI - четырьмя сигнальными проводами плюс питание и земля - либо к пинам Pi, либо к свободному разъёму SPI на самой плате SKR Mini E3 v3.0. Второй вариант обычно проще: короче провода, меньше помех. Точную распиновку берите из документации Klipper по замеру резонансов под своё подключение.

В printer.cfg добавляете блоки:


[adxl345]
cs_pin: rpi:None

[resonance_tester]
accel_chip: adxl345
probe_points:
    117, 117, 20

Здесь 117, 117 - центр стола Ender 3 по XY; 20 - поднять Z на 2 см, чтобы голова не цеплялась за стол.

Замер резонансов

В консоли Mainsail по очереди:


TEST_RESONANCES AXIS=X

Принтер сделает несколько секунд резких движений по X с разной частотой. Потом то же по Y:


TEST_RESONANCES AXIS=Y

Файлы с замерами сохранятся в /tmp/. Дальше через SSH прогоняете скрипт обработки:


~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png

Получите PNG-график с рекомендацией вида «Recommended shaper is mzv @ 47.2 Hz». Это и есть Ваши настройки - у Ender 3 частоты обычно лежат в диапазоне нескольких десятков герц по каждой оси, но опираться нужно именно на свой замер. Добавляете в printer.cfg то, что порекомендовал скрипт:


[input_shaper]
shaper_freq_x: 47.2
shaper_type_x: mzv
shaper_freq_y: 38.8
shaper_type_y: mzv

Save & Restart. Прирост по качеству видно глазами на первом же тестовом кубе - грани становятся чище.

Подробнее про input shaping в OrcaSlicer - в статье Input Shaping в OrcaSlicer 2026.

Шаг 6. Pressure advance - чистые углы

Pressure advance (компенсация давления расплава в сопле) - вторая обязательная калибровка. Без неё на старте линии остаётся «шишка» лишнего пластика, на остановке - «провал». С ней углы резкие, верхний слой гладкий.

Команда запускает печать тестовой башни:


TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=0.005

По высоте башни Klipper плавно поднимает значение pressure advance. Смотрите глазами, на какой высоте углы становятся чистыми, а на верхней плоскости пропадает щель между периметром и заполнением. Итоговое значение считаете по формуле START + высота × FACTOR. Например, при чистом участке на высоте 30 мм и множителе 0.005 получится 0.15.

Значение измеряется, а не запоминается, и зависит в первую очередь от типа подачи. Для прямой подачи (direct drive) ориентиры такие: PLA примерно 0.02-0.06, PETG примерно 0.04-0.08, ABS/ASA примерно 0.03-0.07. Стоковый Ender 3 с боуден-подачей (пруток идёт до сопла через длинную трубку) обычно требует заметно больших значений - из-за сжатия прутка в трубке. Поэтому не переносите число из чужого конфига, а снимите своё.

Найденное значение добавляете в блок [extruder], вписав вместо примера то, что измерили:


pressure_advance: 0.055
pressure_advance_smooth_time: 0.04

Save & Restart. Для каждого типа пластика pressure advance свой - можно задавать его в стартовом G-коде слайсера командой SET_PRESSURE_ADVANCE ADVANCE=... под конкретный пруток.

Что меняется по итогу

Klipper снимает софтовый потолок скорости и добавляет гашение вибраций и компенсацию давления. Что Вы реально получаете:

Про скорость честно: конкретную цифру обещать нельзя. Предел зависит от механики принтера, потока горячего узла, ускорения и модели детали. На стоковых колёсах и боуден-подаче гоните осторожно - рама раскачивается, грани плывут. Реальную рабочую скорость подбирайте сами тестовыми печатями, а не по чужим числам. Установка рельс вместо колёс и прямой подачи расширяет запас, но это отдельный апгрейд железа.

Типичные грабли

«MCU Klipper shutdown: Lost communication with MCU» (MCU - англ. microcontroller unit, микроконтроллер платы) - потеря связи Pi с платой по USB. Причины: длинный кабель, шумный блок питания принтера. Лечится коротким кабелем с ферритом и отдельным БП 5V 3A для Pi.

После каждой перезагрузки нужно делать G28 - это нормальное поведение Klipper, а не баг.

Печать останавливается на середине - частая причина умирающая microSD на Pi. Меняете на карту класса A1 или переносите систему на SSD по USB.

ADXL345 не определяется - проверьте, что в printer.cfg есть блок MCU для самого Pi и что микроконтроллер Klipper для Pi собран (linux-процесс klipper_mcu).

Прошивка не заливается - файл точно назван firmware.bin? Карта в формате FAT32? Размер файла больше нуля?

Чеклист установки

Связанные статьи