Кремень FMZ Реклама
Kremen FMHM Реклама

Авто-рестарт Klipper при подключении к хосту

nvn
Идет загрузка
Загрузка
07.07.2020
3657
7
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

3
Статья относится к принтерам:
Anycubic Predator

Надоело каждый раз при включении принтера делать ручной перезапуск сервиса. Сделал скрипт для автоматического перезапуска сервиса Klipper-а при включении питания, либо при подключении принтера по USB.

Для начала нам необходимо установить простенький планировщик at

sudo apt install at

далее запустим его и активируем автозапуск

sudo systemctl start atd
sudo systemctl enable atd

Теперь отключаем принтер, его питание или USB кабель и в консоли запускаем udev монитор с фильтром по USB:

udevadm monitor --kernel --property --subsystem-match=usb

подключаем принтер и видим что-то подобное:

KERNEL[458650.175439] add /devices/pci0000:00/0000:00:1d.2/usb8/8-1 (usb)

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:1d.2/usb8/8-1

SUBSYSTEM=usb

DEVNAME=/dev/bus/usb/008/029

DEVTYPE=usb_device

PRODUCT=1d50/614e/100

TYPE=2/0/0

BUSNUM=008

DEVNUM=029

SEQNUM=367774

MAJOR=189

MINOR=924

Нам нужна строка с PRODUCT, копируем 1d50/614e/100

Для завершения мониторинга нажимаем Ctrl+C

Далее создаем правило для нашего устройства

sudo nano /etc/udev/rules.d/99-klipper.rules

и вносим следующее содержимое, где /home/pi/ ваша пользовательская папка, а 1d50/614e/100 в соответствующем месте:

ACTION=="add", SUBSYSTEM=="usb", ENV{PRODUCT}=="1d50/614e/100", RUN=="/usr/bin/at -M -f /home/pi/klipper-udev.sh now"

#ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="1d50/614e/100", RUN+="/bin/systemctl --no-block stop klipper.service"

(последнюю строку можно раскомментировать если необходимо останавливать сервис klipper-а)

Сохраним файл и выйдем при помощи Ctrl+x

Перегрузим правила:

udevadm control --reload-rules

Далее создадим скрипт перезапуска в папке пользователя:

sudo nano ~/klipper-udev.sh

внесем следующее содержимое:

#!/bin/sh

sleep 1

systemctl --no-block restart klipper.service

exit 0

(если ставили Klipper+DWC при помощи скрипта от manu7irl, то строка для первого принтера будет такая systemctl --no-block restart klipper-0.service)

Сохраним файл и выйдем при помощи Ctrl+x

И сделаем его исполняемым:

chmod +x klipper-udev.sh

Всё. Теперь при подключении принтера у вас через 3-4 секунды должен быть рабочий набор, если установлен DWC, он будет уже подключен.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

3
Комментарии к статье