Установка Klipper на Ender 3 с SKR Mini E3 V3.0: пошагово
Короткий ответ
Klipper - прошивка для 3D-принтера, в которой расчёт движений делает отдельный компьютер, а плата принтера только исполняет команды. На Ender 3 с платой BigTreeTech (BTT) SKR Mini E3 V3.0 установка идёт так:
- Записать на карту памяти Raspberry Pi (одноплатного компьютера) готовый образ MainsailOS: в нём уже есть Klipper и веб-интерфейс Mainsail.
- На этом компьютере собрать прошивку для платы в меню
make menuconfig: процессор STM32G0B1, загрузчик 8KiB, связь по USB. - Скопировать файл на microSD под именем
firmware.binи включить плату с этой картой. - Подключить плату к Raspberry Pi по USB, взять за основу пример
generic-bigtreetech-skr-mini-e3-v3.0.cfgиз репозитория Klipper и вписать адрес платы. - Проверить датчики и направление осей, затем настроить датчик стола, зазор первого слоя, гашение вибраций (input shaping) и компенсацию давления (pressure advance).
Главная оговорка из документации Klipper: примеры для плат позволяют пройти установку, но требуют доработки под конкретный принтер. Файл описывает плату, а не Ваш Ender 3, поэтому ниже на каждом шаге сказано, что проверить. Последний выпуск Klipper на сентябрь 2026 года - 0.13.0 от 11 апреля 2025 года, основная ветка обновляется постоянно.
Что понадобится
- Ender 3, Ender 3 Pro или похожий принтер с установленной платой SKR Mini E3 V3.0. BTT делает для неё готовые прошивки под Ender 3 и Ender 5. Экран обычного Ender 3 под Klipper работает, а в официальном примере Klipper для Ender 3 V2 раздела экрана нет: родной экран V2 не поддерживается.
- Компьютер для Klipper. Документация Klipper рекомендует Raspberry Pi Zero 2 W, 3, 4 или 5. Подойдёт и мини-ПК на x86.
- Блок питания для Raspberry Pi на 5,1 В. Для Pi 4 нужен ток 3 А.
- Карта памяти для Pi: по документации MainsailOS не меньше 16 ГБ, лучше 32 ГБ, класса A1 или выше.
- Отдельная microSD для прошивки платы в формате FAT32. BTT кладёт в коробку USB-кабель, а карту нет.
- Кабель Micro USB. На плате разъём Micro USB, кабель есть в комплекте.
- Акселерометр ADXL345 (датчик ускорения) по желанию, для точной настройки гашения вибраций. Без него её тоже можно сделать по тестовой печати.
Перед сборкой прошивки посмотрите маркировку процессора на плате. 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.
- Откройте программу Raspberry Pi Imager и выберите свою модель Raspberry Pi.
- В списке систем откройте Other specific-purpose OS (системы для отдельных задач), затем 3D printing и выберите MainsailOS.
- Запишите образ на карту, вставьте её в Pi и включите питание. На медленных моделях первый запуск идёт до 5 минут.
- Откройте в браузере
http://mainsailos.local. Такое имя в сети стоит по умолчанию, если Вы не задали своё. - Пользователь по умолчанию
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
В меню выставьте:
- Enable extra low-level configuration options: включить;
- Micro-controller Architecture: STMicroelectronics STM32;
- Processor model: STM32G0B1, а если на процессоре написано G0B0, то STM32G0B0;
- Bootloader offset: 8KiB bootloader;
- Clock Reference: 8 MHz crystal (пункт виден только при включённых дополнительных настройках, 8 МГц стоит и по умолчанию);
- Communication interface: USB (on PA11/PA12).
Нажмите Q, сохраните настройки и соберите прошивку:
make clean
make
Готовый файл появится в ~/klipper/out/klipper.bin.
Шаг 3. Прошиваем плату с карты
Команда make flash для SKR Mini E3 не работает, прошивка идёт только с карты памяти:
- Выключите принтер и отсоедините USB-кабель платы от Raspberry Pi. Документация Klipper предупреждает: через подключённый USB плата может получать питание, и прошивка не пройдёт.
- Скопируйте
klipper.binв корень карты FAT32 и переименуйте вfirmware.bin. BTT пишет, что без переименования загрузчик файл не примет. - Вставьте карту в плату и включите принтер. По руководству BTT обновление занимает около 10 секунд, всё это время мигает красный светодиод.
- После прошивки плата переименовывает файл в
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 описывает принтер: к каким выводам платы подключены моторы, датчики температуры и нагреватели, какие размеры у осей и какие скорости разрешены.
- В Mainsail откройте раздел Machine и создайте файл
printer.cfg. - Вставьте содержимое примера
generic-bigtreetech-skr-mini-e3-v3.0.cfgиз папки config репозитория Klipper. - Первой строкой добавьте
[include mainsail.cfg]: этого требует MainsailOS. - Впишите адрес платы из шага 4 в раздел
[mcu]. - Для родного экрана 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 мм.
Перед первым нагревом проверьте:
- Датчики температуры при комнатной температуре показывают комнатную температуру, а не 0 или 300 °C.
- Тип датчика температуры в конфигурации совпадает с установленным на Вашем принтере.
- Каждая ось едет в нужную сторону: проверьте коротким движением вдали от края.
- Концевики срабатывают: команда
QUERY_ENDSTOPSв консоли Mainsail. - Первый нагрев проводите, держа руку у выключателя питания.
Ошибка в выводе нагревателя или в типе датчика может отключить защиту от перегрева, поэтому чужой 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 настраивает высоту сопла по листу бумаги, и документация прямо требует делать это при комнатной температуре сопла и стола: на горячем сопле бумага цепляет пластик и легко обжечься.
- Выполните
G28(отбой всех осей). - С датчиком стола запустите
PROBE_CALIBRATE, с обычным концевикомZ_ENDSTOP_CALIBRATE. - Опускайте сопло командами
TESTZ Z=-0.1и мельче, пока лист бумаги под соплом не начнёт двигаться с лёгким трением. В Mainsail для этого появляется окно с кнопками шагов от 1 до 0,005 мм. - Выполните
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 с датчиком на столе.
Замер:
ACCELEROMETER_QUERY- проверить, что датчик отвечает.MEASURE_AXES_NOISE- уровень шума в покое.SHAPER_CALIBRATE AXIS=Xс датчиком на голове, затемSHAPER_CALIBRATE AXIS=Yс датчиком на столе. После каждой оси можно выполнитьSAVE_CONFIG.
Klipper подберёт тип фильтра и частоту и подскажет допустимое ускорение, но сам его не выставит. Впишите в раздел [printer] значение max_accel не выше подсказанного, с запасом.
Без акселерометра можно настроить по тестовой печати: документация Klipper описывает способ с моделью ringing_tower.stl.
Шаг 9. Pressure advance: чистые углы
Pressure advance (компенсация давления) заранее ускоряет или замедляет подачу пластика, чтобы на углах не было наплывов и провалов. Порядок по документации Klipper:
- Нарежьте модель
square_tower.stlиз репозитория: высокая скорость около 100 мм/с, заполнение 0 %, высота слоя около 75 % диаметра сопла. - Перед печатью выполните в консоли:
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.
- Напечатайте башню и найдите высоту, где углы выглядят лучше всего. При сомнении берите меньшую высоту.
- Посчитайте: значение = START + высота × FACTOR. Например, 0 + 12,9 × 0,020 = 0,258.
- Впишите результат в раздел
[extruder]строкойpressure_advance: 0.258и выполнитеRESTART.
Обычные значения, по документации, от 0,05 до 1,0, верхняя часть диапазона бывает у боудена. Значение зависит от экструдера, сопла и пластика: документация Klipper предупреждает, что у пластика разных производителей и даже разных цветов оно может заметно отличаться, и советует калибровать отдельно для каждого принтера и каждой катушки.
Чтобы не править printer.cfg при каждой смене катушки, найденное значение можно задавать командой SET_PRESSURE_ADVANCE ADVANCE=0.258: она меняет компенсацию на ходу. Впишите её в стартовый G-код профиля пластика в слайсере, и у каждого пластика будет своё значение. Строка в [extruder] останется значением по умолчанию.
Типичные проблемы
- «Lost communication with MCU». Klipper пишет, что обычно это аппаратные ошибки USB: плохой кабель, слабый блок питания Raspberry Pi, перегруженный блок питания принтера, перебитые провода. Некоторые системы включают службу ModemManager, которая мешает связи: её нужно отключить.
- Ось не двигается до отбоя. Это защита: Klipper не даёт двигать моторы, пока не известно положение головы. После выключения моторов командой
M84отбой нужен снова. - Плата не видна после прошивки. Проверки перечислены в шаге 4.
- ADXL345 не находится. Сначала проверьте, что Klipper видит Raspberry Pi как второй контроллер: в
printer.cfgесть раздел[mcu rpi], службаklipper-mcuвключена, а процесс для Pi собран с пунктом Linux process и установлен командойmake flash. Если в журнале Klipper (klippy.log) ошибка «Permission denied» при подключении к/tmp/klipper_host_mcu, добавьте своего пользователя в группу tty командойsudo usermod -a -G tty pi. ЕслиACCELEROMETER_QUERYотвечает «Invalid adxl345 id», повторите команду: документация Klipper объясняет первый сбой особенностью запуска SPI. Ошибка повторяется - проверьте питание, провода по таблице из шага 8 и пайку. - Pi зависает или перестал загружаться. Проверьте не только блок питания, но и карту памяти. Документация MainsailOS предупреждает, что дешёвые карты в такой работе быстро выходят из строя, и советует карту класса A1 или выше от известного производителя. Замените карту и запишите образ заново, а копию
printer.cfgдержите на компьютере: с ней не придётся настраивать принтер с нуля. - Обновление. В Mainsail раздел Machine, блок обновлений. После обновления Klipper пересоберите и заново прошейте плату.
Распиновка 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 на V2.0. По примеру Klipper для этой платы: процессор STM32F103, загрузчик 28KiB, связь по USB, а в дополнительных настройках пункт GPIO pins to set at micro-controller startup со значением
!PA14. Прошивка тоже только с карты. - Marlin с датчиком стола на V3.0. BTT выкладывает готовые файлы:
firmware-ender3-bltouch.binдля обычного подключения датчика иfirmware-ender3-bltouch-for-z-homing.bin, если датчик заменяет концевик Z. Перед прошивкой файл переименовывают вfirmware.bin. - Marlin с датчиком стола на V2.0. Аналогичные файлы
firmware-bltouch.binиfirmware-bltouch-for-z-homing.binлежат в папке V2.0 репозитория BTT. Стоковыйfirmware.binдатчик стола не поддерживает.
Частые вопросы
Можно ли поставить 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 есть свой вариант с разделом для датчика стола.
Источники
- Klipper: установка
- Klipper: выпуски
- Klipper: пример конфигурации SKR Mini E3 V3.0
- Klipper: калибровка по бумаге
- Klipper: калибровка датчика стола
- Klipper: BLTouch
- Klipper: замер резонансов
- Klipper: Raspberry Pi как контроллер
- Klipper: pressure advance
- Klipper: команды G-кода, SET_PRESSURE_ADVANCE
- Klipper: частые вопросы
- BTT: Klipper для SKR Mini E3 V3.0
- BTT: printer.cfg для SKR Mini E3 V3.0 с разделом BLTouch
- BTT: распиновка SKR Mini E3 V3.0
- BTT: готовые прошивки Marlin для V3.0
- MainsailOS: установка на Raspberry Pi
- KIAUH на GitHub
- KIAUH: проверка Moonraker при установке веб-интерфейса