Установка Klipper на Ender 3 с SKR Mini E3 V3.0: пошагово

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

Klipper - прошивка для 3D-принтера, в которой расчёт движений делает отдельный компьютер, а плата принтера только исполняет команды. На Ender 3 с платой BigTreeTech (BTT) SKR Mini E3 V3.0 установка идёт так:

  1. Записать на карту памяти Raspberry Pi (одноплатного компьютера) готовый образ MainsailOS: в нём уже есть Klipper и веб-интерфейс Mainsail.
  2. На этом компьютере собрать прошивку для платы в меню make menuconfig: процессор STM32G0B1, загрузчик 8KiB, связь по USB.
  3. Скопировать файл на microSD под именем firmware.bin и включить плату с этой картой.
  4. Подключить плату к Raspberry Pi по USB, взять за основу пример generic-bigtreetech-skr-mini-e3-v3.0.cfg из репозитория Klipper и вписать адрес платы.
  5. Проверить датчики и направление осей, затем настроить датчик стола, зазор первого слоя, гашение вибраций (input shaping) и компенсацию давления (pressure advance).

Главная оговорка из документации Klipper: примеры для плат позволяют пройти установку, но требуют доработки под конкретный принтер. Файл описывает плату, а не Ваш Ender 3, поэтому ниже на каждом шаге сказано, что проверить. Последний выпуск Klipper на сентябрь 2026 года - 0.13.0 от 11 апреля 2025 года, основная ветка обновляется постоянно.

Что понадобится

Перед сборкой прошивки посмотрите маркировку процессора на плате. BTT пишет, что на SKR Mini E3 V3.0 ставят STM32G0B1RET6 или STM32G0B0RET6 вперемешку. От этого зависит пункт в меню сборки. Не путайте плату с SKR Mini E3 V3.0.1: у неё другой процессор, STM32F401.

Шаг 1. MainsailOS на Raspberry Pi

MainsailOS - готовый образ системы для Raspberry Pi с Klipper, Moonraker (службой связи) и веб-интерфейсом Mainsail. Текущая версия 3.0.0 вышла 6 мая 2026 года и собрана на Debian 13.

  1. Откройте программу Raspberry Pi Imager и выберите свою модель Raspberry Pi.
  2. В списке систем откройте Other specific-purpose OS (системы для отдельных задач), затем 3D printing и выберите MainsailOS.
  3. Запишите образ на карту, вставьте её в Pi и включите питание. На медленных моделях первый запуск идёт до 5 минут.
  4. Откройте в браузере http://mainsailos.local. Такое имя в сети стоит по умолчанию, если Вы не задали своё.
  5. Пользователь по умолчанию pi, пароль raspberry. Смените пароль сразу после первого входа.

Пока файла конфигурации нет, Mainsail покажет сообщение «Unable to open config file printer.cfg». Это нормально: файл появится на шаге 5.

Если вместо Raspberry Pi мини-ПК на x86

Документация Klipper советует начинать с чистой серверной системы, например Ubuntu Server, без рабочего стола. Klipper, Moonraker и Mainsail ставит помощник KIAUH. Запускайте его от обычного пользователя, не от администратора (root):


sudo apt-get update && sudo apt-get install git -y
cd ~ && git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh

В меню выберите «Install» и ставьте по порядку: Klipper, затем Moonraker, затем Mainsail. Moonraker без Klipper KIAUH не поставит и попросит сначала установить Klipper. А если начать с Mainsail раньше Moonraker, KIAUH только предупредит и спросит, продолжать ли. Отвечайте «нет»: по тексту самого предупреждения без Moonraker на этом или другом компьютере в сети Mainsail работать не будет.

Шаг 2. Собираем прошивку для SKR Mini E3 V3.0

Подключитесь к Raspberry Pi по SSH (удалённая командная строка) и выполните:


cd ~/klipper
make menuconfig

В меню выставьте:

Нажмите Q, сохраните настройки и соберите прошивку:


make clean
make

Готовый файл появится в ~/klipper/out/klipper.bin.

Шаг 3. Прошиваем плату с карты

Команда make flash для SKR Mini E3 не работает, прошивка идёт только с карты памяти:

  1. Выключите принтер и отсоедините USB-кабель платы от Raspberry Pi. Документация Klipper предупреждает: через подключённый USB плата может получать питание, и прошивка не пройдёт.
  2. Скопируйте klipper.bin в корень карты FAT32 и переименуйте в firmware.bin. BTT пишет, что без переименования загрузчик файл не примет.
  3. Вставьте карту в плату и включите принтер. По руководству BTT обновление занимает около 10 секунд, всё это время мигает красный светодиод.
  4. После прошивки плата переименовывает файл в firmware.cur. Так можно проверить, что прошивка прошла.

Шаг 4. Проверяем связь с платой

Выньте карту, подключите плату к Raspberry Pi кабелем Micro USB и выполните:


ls /dev/serial/by-id/*

Должна появиться строка вида /dev/serial/by-id/usb-Klipper_stm32g0b1xx_...-if00. У платы с процессором G0B0 в имени будет stm32g0b0xx. Скопируйте строку целиком: это адрес платы для файла конфигурации.

Если строки нет, проверьте по порядку: верно ли выбран процессор (G0B1 или G0B0), был ли отключён USB во время прошивки, переименовался ли файл на карте в firmware.cur, передаёт ли кабель данные, а не только питание.

Шаг 5. printer.cfg: конфигурация под свой Ender 3

printer.cfg описывает принтер: к каким выводам платы подключены моторы, датчики температуры и нагреватели, какие размеры у осей и какие скорости разрешены.

  1. В Mainsail откройте раздел Machine и создайте файл printer.cfg.
  2. Вставьте содержимое примера generic-bigtreetech-skr-mini-e3-v3.0.cfg из папки config репозитория Klipper.
  3. Первой строкой добавьте [include mainsail.cfg]: этого требует MainsailOS.
  4. Впишите адрес платы из шага 4 в раздел [mcu].
  5. Для родного экрана Ender 3 добавьте раздел [display] из примера sample-lcd.cfg (подраздел для экрана Creality CR10 и Ender 3).

[include mainsail.cfg]

[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_ВАШ_НОМЕР-if00

Что уже есть в примере: пределы хода осей X и Y 235 мм, Z 250 мм, предельная скорость 300 мм/с, ускорение 3000 мм/с², драйверы TMC2209 и датчики температуры EPCOS 100K. Пределы хода не равны области печати: у Ender 3 Pro по данным Creality область печати 220 × 220 × 250 мм.

Перед первым нагревом проверьте:

  1. Датчики температуры при комнатной температуре показывают комнатную температуру, а не 0 или 300 °C.
  2. Тип датчика температуры в конфигурации совпадает с установленным на Вашем принтере.
  3. Каждая ось едет в нужную сторону: проверьте коротким движением вдали от края.
  4. Концевики срабатывают: команда QUERY_ENDSTOPS в консоли Mainsail.
  5. Первый нагрев проводите, держа руку у выключателя питания.

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

Шаг 6. Датчик стола BLTouch или CR Touch

BLTouch и CR Touch - датчики, которые касаются стола штырьком и строят карту его неровностей. В примере Klipper раздела для датчика нет, выводы есть в конфигурации самой BTT: сигнал на ^PC14, управление на PA1 (разъём Z-PROBE на плате).


[bltouch]
sensor_pin: ^PC14
control_pin: PA1

Знак ^ перед PC14 включает подтяжку (pull-up) на выводе сигнала. BTT в комментарии к этой строке пишет, что подтяжка поставлена под CR Touch, а оригинальный BLTouch должен работать без неё, и советует убрать ^, если при отбое голова врезается в стол. Документация Klipper, наоборот, говорит, что большинству датчиков BLTouch подтяжка нужна. Поэтому не угадывайте, а проверьте свой датчик до первого отбоя: командами BLTOUCH_DEBUG COMMAND=pin_down и BLTOUCH_DEBUG COMMAND=touch_mode выдвиньте штырь, затем QUERY_PROBE должна ответить «probe: open», а при лёгком нажатии ногтем на штырь «probe: TRIGGERED». Если ответ не меняется, уберите или поставьте ^ и повторите. Первое касание Klipper советует делать не о стол, а о ноготь, подняв голову повыше.

Дальше по документации Klipper: в разделе [stepper_z] поставьте endstop_pin: probe:z_virtual_endstop, уберите position_endstop и добавьте раздел [safe_z_home] с точкой отбоя по центру стола. Смещение датчика относительно сопла (x_offset, y_offset) измерьте на своём креплении. Проверить датчик можно командами BLTOUCH_DEBUG COMMAND=pin_down и BLTOUCH_DEBUG COMMAND=pin_up, карту стола строит BED_MESH_CALIBRATE.

Шаг 7. Зазор первого слоя (Z-offset)

Klipper настраивает высоту сопла по листу бумаги, и документация прямо требует делать это при комнатной температуре сопла и стола: на горячем сопле бумага цепляет пластик и легко обжечься.

  1. Выполните G28 (отбой всех осей).
  2. С датчиком стола запустите PROBE_CALIBRATE, с обычным концевиком Z_ENDSTOP_CALIBRATE.
  3. Опускайте сопло командами TESTZ Z=-0.1 и мельче, пока лист бумаги под соплом не начнёт двигаться с лёгким трением. В Mainsail для этого появляется окно с кнопками шагов от 1 до 0,005 мм.
  4. Выполните ACCEPT, затем SAVE_CONFIG.

С датчиком сохраняется его z_offset, с концевиком position_endstop. После новой калибровки датчика заново постройте карту стола. Если подстроили высоту прямо во время печати, сохраните поправку командой Z_OFFSET_APPLY_PROBE и затем SAVE_CONFIG.

Шаг 8. Input shaping: гашение вибраций

При резких движениях рама принтера колеблется, и на стенках детали остаются повторяющиеся волны возле углов. Input shaping (гашение резонансов) измеряет частоты этих колебаний и подстраивает движение так, чтобы волн не было.

Подключение ADXL345 к Raspberry Pi по интерфейсу SPI. Через I2C, по документации Klipper, ADXL345 работать не будет.

Вывод ADXL345 Контакт Raspberry Pi
3V3 01
GND 06
CS 24 (GPIO08)
SDO 21 (GPIO09)
SDA 19 (GPIO10)
SCL 23 (GPIO11)

Klipper поддерживает и другие датчики: MPU-9250, LIS2DW, LIS3DH. SPI в MainsailOS включён по умолчанию.

Raspberry Pi как второй контроллер. Чтобы Klipper видел датчик на выводах Pi, установите службу klipper-mcu по документации (раздел RPi microcontroller): скопируйте файл службы, в make menuconfig выберите Micro-controller Architecture: Linux process и выполните make flash. При следующей сборке прошивки для платы снова выберите STM32. Для обработки замеров нужна библиотека numpy, команды установки есть в разделе документации про замер резонансов. Пакета libatlas-base-dev из этой команды в Debian 13 нет, он остался только в старых выпусках.


[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None

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

Точку замера ставьте в центр стола и чуть над ним. У Ender 3 стол ездит по оси Y, поэтому Klipper велит мерить ось X с датчиком на печатающей голове, а ось Y с датчиком на столе.

Замер:

  1. ACCELEROMETER_QUERY - проверить, что датчик отвечает.
  2. MEASURE_AXES_NOISE - уровень шума в покое.
  3. SHAPER_CALIBRATE AXIS=X с датчиком на голове, затем SHAPER_CALIBRATE AXIS=Y с датчиком на столе. После каждой оси можно выполнить SAVE_CONFIG.

Klipper подберёт тип фильтра и частоту и подскажет допустимое ускорение, но сам его не выставит. Впишите в раздел [printer] значение max_accel не выше подсказанного, с запасом.

Без акселерометра можно настроить по тестовой печати: документация Klipper описывает способ с моделью ringing_tower.stl.

Шаг 9. Pressure advance: чистые углы

Pressure advance (компенсация давления) заранее ускоряет или замедляет подачу пластика, чтобы на углах не было наплывов и провалов. Порядок по документации Klipper:

  1. Нарежьте модель square_tower.stl из репозитория: высокая скорость около 100 мм/с, заполнение 0 %, высота слоя около 75 % диаметра сопла.
  2. Перед печатью выполните в консоли:

SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.020

Множитель .020 документация даёт для длинной трубки подачи (боудена), как на стоковом Ender 3. Для прямой подачи множитель .005.

  1. Напечатайте башню и найдите высоту, где углы выглядят лучше всего. При сомнении берите меньшую высоту.
  2. Посчитайте: значение = START + высота × FACTOR. Например, 0 + 12,9 × 0,020 = 0,258.
  3. Впишите результат в раздел [extruder] строкой pressure_advance: 0.258 и выполните RESTART.

Обычные значения, по документации, от 0,05 до 1,0, верхняя часть диапазона бывает у боудена. Значение зависит от экструдера, сопла и пластика: документация Klipper предупреждает, что у пластика разных производителей и даже разных цветов оно может заметно отличаться, и советует калибровать отдельно для каждого принтера и каждой катушки.

Чтобы не править printer.cfg при каждой смене катушки, найденное значение можно задавать командой SET_PRESSURE_ADVANCE ADVANCE=0.258: она меняет компенсацию на ходу. Впишите её в стартовый G-код профиля пластика в слайсере, и у каждого пластика будет своё значение. Строка в [extruder] останется значением по умолчанию.

Типичные проблемы

Распиновка SKR Mini E3 V3.0

Основные выводы по примеру Klipper и схемам BTT:

Что Вывод
Концевики X, Y, Z PC0, PC1, PC2
Датчик стола (разъём Z-PROBE) сигнал PC14, управление PA1
Нагреватель сопла и стола PC8 и PC9
Датчики температуры сопла и стола PA0 и PC4
Вентилятор детали, радиатора, платы PC6, PC7, PB15
Связь с драйверами TMC2209 PC11 и PC10

Полная схема разъёмов - в файле распиновки на GitHub BTT (ссылка в источниках).

Если у Вас SKR Mini E3 V2.0 или нужен Marlin

Частые вопросы

Можно ли поставить Klipper на Ender 3 V3 SE или Ender 3 S1?

Для Ender 3 S1 и S1 Pro в репозитории Klipper есть официальный пример printer-creality-ender3-s1-2021.cfg. Для Ender 3 V3, V3 SE и V3 KE официальных примеров в репозитории нет, настройка идёт на свой страх и риск.

Klipper не видит плату SKR Mini E3 V3.0 после прошивки: что делать?

Проверьте процессор (G0B1 или G0B0) и пункт в make menuconfig, отключите USB на время прошивки, убедитесь, что файл на карте переименовался в firmware.cur, и попробуйте другой кабель Micro USB.

Нужен ли акселерометр для Klipper?

Нет, Klipper работает и без него, а гашение вибраций можно настроить по тестовой башне. Акселерометр даёт точный замер и экономит время.

Какой Raspberry Pi нужен для Klipper?

Документация Klipper рекомендует Raspberry Pi Zero 2 W, 3, 4 или 5. Для Pi 4 нужен блок питания 5,1 В на 3 А.

Где взять конфигурационный файл Klipper для SKR Mini E3 V3.0?

В репозитории Klipper, файл config/generic-bigtreetech-skr-mini-e3-v3.0.cfg. У BTT есть свой вариант с разделом для датчика стола.

Источники

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