KlipperScreen на слабом SBC
KlipperScreen — GTK-интерфейс для Klipper на тач-экране, говорит с Moonraker по API. Ставится вместо заводского UI на слабых ARM-платах (Rockchip/Pi-класс, ~500 МБ ОЗУ). Ниже — грабли и приёмы, найденные на такой машине.
Установка без интерактива и без компиляции
Официальный KlipperScreen-install.sh интерактивен (3 промпта: сервис / X11 vs Wayland / NetworkManager) и на ARM по умолчанию компилит PyGObject/pycairo из исходников (медленно, RAM-нагрузка). Обходы:
1. Управление промптами через env (инсталлятор читает if [ -z "$VAR" ]):
sudo -u <klipper_user> -H env SERVICE=Y BACKEND=X START=0 NETWORK=n \
DEBIAN_FRONTEND=noninteractive bash .../KlipperScreen/scripts/KlipperScreen-install.sh </dev/nullSERVICE=Y (ставить сервис), BACKEND=X (X11, пропускает промпт), START=0 (не запускать сразу — чтобы протестировать до подмены), NETWORK=n (без NetworkManager).
2. piwheels для ARM — инсталлятор сам использует pip install --extra-index-url https://www.piwheels.org/simple: готовые бинарные колёса, без компиляции. Если ставить pip вручную — указывать этот индекс, иначе PyGObject/pycairo собираются из исходников. В логе успех: Successfully installed PyGObject-3.50.2 pycairo-1.28.0 ….
Footgun: NetworkManager рвёт сеть на dhcpcd-хосте
Инсталлятор предлагает поставить network-manager для сетевой панели. Если хост на dhcpcd (типично для принтерных прошивок), установка NetworkManager может перехватить управление сетью и оборвать SSH. Защита:
sudo apt-mark hold network-manager # apt не поставит его даже при неверном ответе- отвечать
NETWORK=n. В логе правильного исхода:Not installing NetworkManager for the network panel.
Пользователь и home
Ставить под тем же юзером, что владеет klipper/moonraker (напр. qidi), а не под тем, чей home — симлинк (частая беда вендорских образов: /home/mks → симлинк на /home/qidi, и mks не может писать в свой же home). KlipperScreen-install.sh падает EUID==0 → под root не запускать, только sudo -u <user> -H.
X/тач на маленьком экране
- разрешение обычно мелкое (пример: 480×272); в журнале
Screen resolution: 480x272,Moonraker Connected— признак успеха; - тач-девайс ищется в
/proc/bus/input/devices(grep -E "^N: Name=|^H: Handlers="), напр.Goodix Capacitive TouchScreen → event0; конфиг/etc/X11/xorg.conf.d/10-touchscreen.conf(Driver "evdev",Option "Device" "/dev/input/eventN", калибровкаOption "Calibration"); - если сервис не стартует из-за
ConditionPathExists=/dev/tty0в шаблоне — override/etc/systemd/system/KlipperScreen.service.d/override.confс пустымConditionPathExists=; - xinit-строку в
KlipperScreen-start.shиногда нужно дополнить флагами-seat seat1 -allowMouseOpenFail -sharevts -novtswitch -noreset.
Кастомные меню (панель в режиме простоя)
Синтаксис (из родных config/main_menu.conf, docs/Configuration.md): два корня — __main (простой) и __print (страница печати). Пункт [menu __main <name>], вложенность — добавлением сегмента пути: [menu __main <name> <child>]. Пункт с детьми = подменю; пункт с method/params = действие.
[menu __main box]
name: Бокс
icon: filament
[menu __main box load_s1]
name: Слот 1
icon: extrude
method: printer.gcode.script
params: {"script": "T0"}По умолчанию пользовательские пункты добавляются к штатным (Move/Temp/Extrude), не заменяют. Бонус: любой [gcode_macro] без _ в начале имени KlipperScreen сам показывает кнопкой в панели Macros — отдельное меню нужно лишь для группировки/русских подписей.
Преференсы и пресеты прогрева
Настройки [main] (тема, гашение, сортировка) хранятся в KlipperScreen.conf в автосейв-блоке с префиксом #~# (аналог Klipper #*#), который KlipperScreen переписывает при изменении через UI. Пример переносимых значений: theme = material-darker, screen_blanking = 1800, screen_blanking_printing = 7200, only_heaters = True, print_sort_dir = date_desc.
Пресеты прогрева — обычными (не-#~#) секциями сверху файла:
[preheat PLA]
extruder: 215
heater_bed: 60→ кнопки в панели температур. Опционально gcode: для доп-команд (напр. камера). Камеру в PETG не ставить — она для ABS/ASA, PETG от неё клинит (heat creep).
Источники
github.com/KlipperScreen/KlipperScreen—scripts/KlipperScreen-install.sh,scripts/KlipperScreen.service,config/main_menu.conf,docs/Configuration.md- piwheels:
https://www.piwheels.org/simple - родственная тема — Печать 3д модели