OctoPrint на X96 Mini — различия между версиями

Материал из CADR
Перейти к: навигация, поиск
(OctoPrint)
(OctoPrint)
 
Строка 74: Строка 74:
 
   pip install pip --upgrade
 
   pip install pip --upgrade
 
   pip install octoprint
 
   pip install octoprint
   useradd octoprint
+
   useradd -m octoprint
 
   usermod -a -G tty octoprint
 
   usermod -a -G tty octoprint
 
   usermod -a -G dialout octoprint
 
   usermod -a -G dialout octoprint

Текущая версия на 15:46, 27 июля 2023

Введение

Данная статья показывает, как развернуть OctoPrint на X96 Mini.

Установка Armbian GNU/Linux

Необходимо скачать Armbian_20.10_Arm-64_focal_current_5.9.0.img.xz (или более новую версию). Ссылка: https://androidfilehost.com/?fid=10763459528675575689

Качается долго и нестабильно -- копия архива у нас в Syncthing.

Распаковка образа и запись на MicroSD

Далее необходимо распаковать архив и записать на флешку (минимум 8ГБ объём должен быть):

 xz -d Armbian_20.10_Arm-64_focal_current_5.9.0.img.xz
 dd if=Armbian_20.10_Arm-64_focal_current_5.9.0.img of=/dev/mmcblk0

Переименование u-boot-s905x-s912

Далее нужно подмонтировать загрузочный раздел с флешки и переименовать там один файл:

 cd /boot/
 mv 'u-boot-s905x-s912' 'u-boot.ext'

Редактирование extlinux.conf

Нужно ещё отредактировать файл /extlinux/extlinux.conf, раскомментировав часть строк в разделе "aml s9xxx" и закомментировав подобные строки выше этого раздела. Должно получиться следующее:

LABEL Armbian
LINUX /zImage
INITRD /uInitrd

# rk-3399
#FDT /dtb/rockchip/rk3399-rock-pi-4.dtb
#FDT /dtb/rockchip/rk3399-nanopc-t4.dtb
#FDT /dtb/rockchip/rk3399-roc-pc-mezzanine.dtb
#APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=uart8250,mmio32,0xff1a0000 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

# rk-3328
#FDT /dtb/rockchip/rk3328-roc-pc.dtb
#FDT /dtb/rockchip/rk3328-box-trn9.dtb
#FDT /dtb/rockchip/rk3328-box.dtb
#APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=uart8250,mmio32,0xff130000 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

# aw h6
#FDT /dtb/allwinner/sun50i-h6-tanix-tx6.dtb
#APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyS0,115200 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 video=HDMI-A-1:e
#APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyS0,115200 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 mem=2048M video=HDMI-A-1:e

# aml s9xxx
#FDT /dtb/amlogic/meson-gxbb-p200.dtb
FDT /dtb/amlogic/meson-gxl-s905x-p212.dtb
#FDT /dtb/amlogic/meson-gxm-q200.dtb
#FDT /dtb/amlogic/meson-g12a-x96-max.dtb
#FDT /dtb/amlogic/meson-g12b-odroid-n2.dtb
APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

Установка флешки и перезагрузка

  • Отключаем X96 Mini
  • Вставляем MicroSD
  • Используя зубочистку или что-то подобное, аккуратно нажимаем на кнопку "сброс" внутри разъёма AV под аудио-джек.
  • Подключаем питание, удерживая кнопку "сброс".
  • На подключённом HDMI-экране должен быть виден процесс загрузки GNU/Linux.
  • После загрузки система сама должна предложить настроить все параметры. По-умолчанию она доступна по SSH на порту 22 и с логином root и паролем "1234" (рекомендуется поменять.)

OctoPrint

 apt install python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential
 cd /opt/
 mkdir OctoPrint
 python3 -m venv OctoPrint
 cd OctoPrint
 source bin/activate
 pip install pip --upgrade
 pip install octoprint
 useradd -m octoprint
 usermod -a -G tty octoprint
 usermod -a -G dialout octoprint

Автозапуск

 wget https://github.com/OctoPrint/OctoPrint/raw/master/scripts/octoprint.service 
 mv octoprint.service /etc/systemd/system/octoprint.service

Отредактировать octoprint.service:

[Unit]
Description=The snappy web interface for your 3D printer
After=network-online.target
Wants=network-online.target

[Service]
Environment="LC_ALL=C.UTF-8"
Environment="LANG=C.UTF-8"
Type=exec
User=octoprint
ExecStart=/opt/OctoPrint/bin/octoprint

[Install]
WantedBy=multi-user.target

Добавление автозапуска:

 systemctl enable octoprint.service

Видео-вещание

Установка "mjpg-streamer"

Установка зависимостей:

apt install libjpeg8-dev imagemagick libv4l-dev cmake
ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

Скачивание и сборка "mjpg-streamer":

cd /opt/
wget https://github.com/jacksonliam/mjpg-streamer/archive/refs/heads/master.zip
unzip master.zip
cd mjpg-streamer-master/mjpg-streamer-experimental/
make -j$(nproc)
make install

Скрипт запуска

Скрипт запуска видео-вещания на порту 8080 и всех доступных сетевых интерфейсах:

#!/bin/bash

LD_LIBRARY_PATH=/usr/local/lib/mjpg-streamer/ mjpg_streamer \
    -i "input_uvc.so -y -n -d /dev/video2" \
    -o "output_http.so -n -w /var/www/"

SystemD Сервис

Содержимое файла /lib/systemd/system/webcam.service:

[Unit]
Description=Webcam Streaming Service

[Service]
ExecStart=/opt/mjpg_streamer_start.sh

[Install]
WantedBy=multi-user.target

Добавление в автозапуск:

systemctl enable --now webcam

Источники

Опционально: firewall + доступ по Yggdrasil

firewalld

Поскольку Yggdrasil делает хост публичным внутри своей сети, настройка firewall является необходимостью.

Установка и запуск

 apt install firewalld
 systemctl enable --now firewalld

Настройка правил

 firewall-cmd --zone=public --add-port=5000/tcp --permanent
 firewall-cmd --zone=public --add-interface=tun0  --permanent

Yggdrasil

Установка

 sudo mkdir -p /usr/local/apt-keys
 gpg --fetch-keys https://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/key.txt
 gpg --export 569130E8CA20FBC4CB3FDE555898470A764B32C9 | sudo tee /usr/local/apt-keys/yggdrasil-keyring.gpg > /dev/null
 echo 'deb [signed-by=/usr/local/apt-keys/yggdrasil-keyring.gpg] http://neilalexander.s3.dualstack.eu-west-2.amazonaws.com/deb/ debian yggdrasil' | sudo tee /etc/apt/sources.list.d/yggdrasil.list
 apt update
 apt install yggdrasil

Настройка

В файл /etc/yggdrasil.conf необходимо добавить публичных пиров в раздел Peers.

Источники