Если у вас как и у меня хост где крутится сервис klipper стоит на машине у которой питание раздельное с 3d-принтером, то скорее всего вы при включении принтера часто сталкиваетесь с тем, что при входе в вебинтерфейс видите такую картинку:
Чтобы при запуске принтера сервис сразу его видел — необходимо проделать несколько манипуляций.
За основу я взял статью по адресу: https://3dtoday.ru/blogs/nvn/avto-restart-klipper-pri-podklyuchenii-k-khostu
Однако учитывая что там несколько косяков, а искать каждый раз при переустановке системы эту статью мне лень, я решил запилить шпаргалку.
Итак. Первое что делаем — ставим маленький планировщик at
sudo apt install at
sudo systemctl start atd
sudo systemctl enable atd
Далее нам надо узнать ID устройства появляющегося в системе при включении принтера. Запускаем монитор udev
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
Создаем файл
sudo nano /usr/lib/udev/rules.d/99-klipper.rules
В него добавляем:
ACTION=="add", SUBSYSTEM=="usb", ENV{PRODUCT}=="1d50/614e/100", RUN+="/usr/bin/at -M -f /home/mirivlad/bin/klipper-udev.sh now"
Сохраняем и перезагружаем правила:
sudo udevadm control --reload-rules
Далее создаем файл который будет перезапускать нам сервис:
nano /home/mirivlad/bin/klipper-udev.sh
В него добавляем:
#!/bin/bash sleep 5 sudo systemctl --no-block restart klipper.service exit 0
Сохраняем и даем права запуска файла:
chmod +x /home/mirivlad/bin/klipper-udev.sh
Поделиться ссылкой: