Klipper+H96max+skr1.3 =HYPERCUBE
Установка Armbian linux:
Установка на данную приставку очень простая на самом деле. Для этого нам понадобится флешка microsd.
У данной приставки есть emmc на 64 Гб. И приоритет загрузки у приставки следующий:
Если вставлена microsd карта, то попытается приставка грузиться с нее. Если же там нет ничего загрузочного, то грузиться будет с emmc.
Собственно и мы сделаем загрузочную флешку Microsd с которой загрузимся и установим linux armbian в память emmc приставки.
Для начала нам нужно скачать Armbian образ и multitool образ. Я скачивал отсюда:https://users.armbian.com/jock/rk3318/
В общем скачиваем multitool.img.xz и Armbian_22.08.0-trunk_Rk3318-box_jammy_edge_5.18.14_kde-plasma_desktop.img.xz
я использовал именно этот образ, про другие не знаю, пробовать надо, думаю заработает и с другими.
Еще есть сайт с китайскими armbian образами под данный tvbox, если хотите, то можно ознакомиться тут: https://mirrors.aliyun.com/armbian-releases/rk3318-box/archive/?spm=a2c6h.25603864.0.0.286466b9yYks61 или тут: https://imola.armbian.com/dl/rk3318-box/archive/
И еще скачиваем программу rufus:https://rufus.ie/ru/
Rufus нам понадобится для установки Multitool на флешку Microsd.
Запускаем программу rufus, в ней выбираем в поле “Устройство” флешку на которую будем записывать.
А в поле “Метод загрузки” выбираем образ multitool.img.xz И нажимаем кнопку “Старт“. После чего образ Multitool благополучно установится на microsd карту.
После установки образа на флешку, у нее не правильно распределены разделы будут. Это можно увидеть в Управлении компьютером ->Управлении дисками:
Для того, чтоб Multitool раздел расползся на все нераспределенное пространство, нужно просто вставить Microsd карту в приставку и включить ее. После чего она загрузится с образом Multitool и он автоматом все пространство себе заберет не распределенное. И получится вот так:
Но нужно еще будет этому разделу Multitool присвоить букву. Иначе он не будет виден в системе. А он нам нужен, так как на него будет закидывать образ Armbian.
В общем по разделу тыкаем правой кнопкой и выбираем пункт изменить букву диска. И присваиваем ему любую букву.
После этого в “Компьютер” появится логический диск Multitool с папками. Так вот там есть папка “images” в эту папку нам нужно закинуть образ
После того как закинули образ в папку images. Вытаскиваем microsd флешку и вставляем в приставку H96Max и подаем питание.
Загрузится Multitool и подключив клавиатуру стрелками можем сначала сделать Бэкап андроида который стоит тут предустановленным:
А после того как сделали резервную копию, можем установить armbian
После чего armbian установится. Так-же если захотите переустановить его, то всегда это можно сделать точно так-же. Вставим microsd флешку в приставку и загрузить образ с нее armbian. Как по мне, этот вариант еще проще чем с одноплатными компьютерами.
Настройка WI-fi.
С wi-fi тут отдельная тема. Говорят, что на таких приставках их 3 разных вида попадается. Мне не с чем сравнивать, по этому описываю решение конкретно моей приставки.
Чтоб заработал wi-fi, то нужно поменять драйвер. Как это сделать?
Сначала удаляем драйвер старый:
sudo rm -f /usr/lib/firmware/brcm/brcmfmac4334-sdio.rockchip,rk3318-box.txt
Следующей командой его создаем заново, чтоб он был пустым:
sudo nano /usr/lib/firmware/brcm/brcmfmac4334-sdio.rockchip,rk3318-box.txt
Теперь откройте этот небольшой текстовый файл нажмите Ctrl-A, чтобы выделить в нем весь текст, затем Ctrl-C, чтобы скопировать его в буфер обмена; Так же на всякий случай файл оставлю у себя на диске, а то малоли, потеряется еще. https://disk.yandex.ru/d/-7MqtUEx-PEMhg
Переключитесь в окно SSH, щелкните правой кнопкой мыши, чтобы вставить скопированный текст в nano , затем нажмите Ctrl-S для сохранения и Ctrl-X для выхода;
Ну и далее перезапускаем armbian.
reboot
После перезагрузки, установим программу armbian-config.
apt update
apt install armbian-config
После установки, запускаем armbian-config
sudo armbian-config
Там переходим в Network->wifi->и выбираем сеть wi-fi к которой хотим подключиться и подключаемся. Ошибок больше не будет.
Отключение Debug на uart интерфейсе приставки H96max на RK3318.
Значит, смотрите. Тот UART интерфейс который выведен на приставке предназначен, для того, чтоб подключиться к консоли приставки, авторизироваться и производить настройки. Так-же видеть этапы загрузки и ошибки, если они появляются, до включения монитора.
Особенность UART интерфейса, такая, что к нему можно подключиться только одному устройству или программе. Так как этот интерфейс работает в режиме вывода консоли, то он у нас всегда в системе занят.
Наша задача его освободить. Делается это очень просто. Нужно просто ввести пару команд в операционной системе armbian.
В общем debug этот интерфейс имеет название /dev/ttyS2 . Вот его и будем высвобождать.
Итак, сначала вводим команду:
sudo lsof -n | grep /dev/ttyS2
Она выведет нам, занят ли чем-то интерфейс ttyS2 или нет. Если ничего не вывело, то он свободен, но в нашем случае он занят.
Из приведенного скрина выше видим, что порт ttyS2 действительно занят программой agetty. А вот порт для примера ttyS3 свободен и ничего не вывел.
В общем далее приступаем к отключению программы aggety от порта ttyS2.
Преходим в папку systemd:
cd /etc/systemd/system
В этой папке нам нужно отключить службу serial-getty@ttyS2.service
systemctl stop serial-getty@ttyS2.service
Командой выше мы останавливаем serial-getty и он больше не держит наш интерфейс ttyS2. Но после перезагрузки, он снова его схватит. По этому нужно еще выполнить следующую команду:
systemctl mask serial-getty@ttyS2.service
после ввода этой команды, перезагрузка уже не запустит serial-getty и порт ttyS2 будет всегда свободен.
Устанавливаем Klipper
Подключение по ssh и дальнейшая настройка.
Далее рекомендуется отключить запрос sudo пароля, делать необязательно, но в некоторых местах меньше придется вводить пароль суперпользователя.
редактируем файл командой:
sudo nano /etc/sudoers
откроется файл, в котором нужно найти строку
# Allow members of group sudo to execute any command%sudo ALL=(ALL:ALL) ALL
и привести её к виду:
# Allow members of group sudo to execute any command%sudo ALL=NOPASSWD: ALL
После чего сохраняем изменения нажатием Ctrl+O и выходим Ctrl+X
Обновляем пакеты командами:
sudo apt-get update
sudo apt-get upgrade
А также устанавливаем недостающие пакеты (по идее скрипт должен подтянуть их автоматически, но пусть будет)
sudo apt-get install zlib1g-dev libjpeg-dev
sudo apt-get install git -y
После чего выполняем дальнейшую установку с помощью скрипта KIAUH (огромная благодарность th33xitus — его разработчику :
скачиваем сам скрипт с гитхаба:
git clone https://github.com/th33xitus/kiauh.git
переходим в скачанную папку
cd kiauh
делаем все скрипты исполняемыми
chmod +x kiauh.sh scripts/*
и запускаем сам скрипт
./kiauh.sh
Этап 4. Работа со скриптом автоматической установки KIAUH.
В целом в работе скрипта нет ничего сложного, но как всегда есть нюансы.
Для начала выбираем, что именно мы будем делать — вводим цифру 1 и нажимаем Enter.
В следующем окне поочередно выбираем и устанавливаем
1) [Klipper] (при запроси версии питона выбираем 2) [Python 3.x] (experimental))
Подключение по ssh и дальнейшая настройка.
Скачиваем putty, добавляем туда подключение ssh по ip адресу из этапа 2, используя заданный ранее пароль.
Далее рекомендуется отключить запрос sudo пароля, делать необязательно, но в некоторых местах меньше придется вводить пароль суперпользователя.
редактируем файл командой:
sudo nano /etc/sudoers
откроется файл, в котором нужно найти строку
Allow members of group sudo to execute any command%sudo ALL=(ALL:ALL) ALL
и привести её к виду:
# Allow members of group sudo to execute any command%sudo ALL=NOPASSWD: ALL
После чего сохраняем изменения нажатием Ctrl+O и выходим Ctrl+X
Обновляем пакеты командами:
sudo apt-get update
sudo apt-get upgrade
А также устанавливаем недостающие пакеты (по идее скрипт должен подтянуть их автоматически, но пусть будет)
sudo apt-get install zlib1g-dev libjpeg-dev
После чего выполняем дальнейшую установку с помощью скрипта KIAUH (огромная благодарность th33xitus — его разработчику :
скачиваем сам скрипт с гитхаба:
git clone https://github.com/th33xitus/kiauh.git
переходим в скачанную папку
cd kiauh
делаем все скрипты исполняемыми
chmod +x kiauh.sh scripts/*
и запускаем сам скрипт
./kiauh.sh
Этап 4. Работа со скриптом автоматической установки KIAUH.
В целом в работе скрипта нет ничего сложного, но как всегда есть нюансы.
Для начала выбираем, что именно мы будем делать — вводим цифру 1 и нажимаем Enter.
В следующем окне поочередно выбираем и устанавливаем
1) [Klipper] (при запроси версии питона выбираем 2) [Python 3.x] (experimental))
2) [Moonraker]
после установки Moonraker уже можно проверить, все ли идет хорошо, так как в консоли высветится Ваш ип адрес и порт, можно перейти по нему в браузере и посмотреть все ли хорошо. Картина, как на скринах ниже.
3) [Mainsail]
При установке спросит про поддержку вебкамеры — у меня она будет, поэтому выбираю да.На вопрос о рекомендуемых макросах — тоже да (больше не меньше)
После установки появятся ссылки на стрим с камеры, но так как камеры у нас пока нет, то игнорируем их, а вот что стоит попробовать — так это перейти по адресу orange pi и проверить загружается ли интерфейс.
4) [Fluidd]
На тему выбора веб интерфейса сломано много копий, я считаю, что нужно брать по максимуму, что-то удобнее в одном, что-то в другом. Поэтому предлагаю установить оба интерфейса.
Выбираем цифру 4, на что система скажет, что у нас уже есть веб интерфейс и предложит выбрать другой порт, выберем 81
После установки также проверяем открытие, добавив в адрес порт 81 через двоеточие.
Нажимаем B, чтобы вернуться на предыдущий экран и видим следующее.
Этап 5. Настройка веб камеры. (опционально)
Я использую, наверное, самую популярную и доступную камеру — Logitech C270. Её настройка максимально проста:
с отключенной камерой проверяем доступные видеоисточники
ls /dev/video*
у меня он один:
затем подключаем камеру к usb порту orangepi после чего проверяем снова.
При подключении камеры добавилось еще 2 источника, с другими камерами проблема может быть в отсутствии драйвера, поэтому нужно уточнять в каждом отдельном случае. Открываем на редактирование конфигурацию камеры:
nano ~/klipper_config/webcam.txt
правим строки:
camera=»usb»
camera_usb_options=»-d /dev/video1 -r 1280×720″
Должно получиться, как на скрине ниже
Ключ -r 1280×720 добавлен потому, что я знаю, что камера может снимать в таком разрешении, если что-то не работает, лучше попробовать без него. Также у камеры добавляется 2 порта: video1 и video2, работает только на одном, но тут тоже иногда приходится экспериментировать.
После чего сохраняем Ctrl+O, выходим Ctrl+X
Рестартим вебкам сервис
sudo systemctl status webcamd
Далее можно в браузере перейти по ссылке http://х.х.х.х:8080/ где х.х.х.х ip адрес orange pi и убедиться, что есть картинка.
теперь добавляем камеры в веб интерфейсы:
Mainsell
***********
Дальнейшие настройки проблематично сделать без принтера, поэтому здесь пока ничего нет, но думаю в будущем появится информация о том как собрать прошивку под flying bear ghost 6, подключить его к orande pi и т.д.
************
Подготовка прошивки
Подключаемся к системе через SSH. Открываем папку klipper/config, и ищем файл конфигурации подготовленный для вашего принтера, либо скачиваем на странице Klipper
В моем случае это Creality Ender 3v2 — printer-creality-ender3-v2-2020.cfg. Скачиваем данный файл и переименовываем его в printer.cfg, а в дальнейшем данный файл будет размещен в ~/printer_data/config (полный путь может быть /home/pi/printer_data/config если используется Raspberry Pi).
Открываем данный файл Notepad++, нас интересует следующий блок:
# This file contains pin mappings for the stock 2020 Creality Ender 3
# V2. To use this config, during "make menuconfig" select the
# STM32F103 with a "28KiB bootloader" and serial (on USART1 PA10/PA9)
# communication.
Copy
В нем говорится что используется процессор STM32F103, загрузчик — 28KiB, комунникация через Serial USART1 PA10/PA9
Переходим обратно в pytty и выполняем следующие команды (команды можно копировать, в putty они вставляются Правой кнопкой мыши):
cd ~/klipper
make clean
make menuconfig
Micro-Controller architecture — выбираем STM32
Processor model — выбираем STM32F103
Bootloader offset — 28KiB bootloader
Comunication Interface — Serial (on USART1 PA10/PA9)
Нажимаем Q, сохраняя внесенные изменения и компилируем прошивку:
make
Если все прошло успешно, putty в консоли сообщит:
Version: v0.9.1-142-g02ece242-20210113_003503-fluiddpi
Preprocessing out/src/generic/armcm_link.ld
Linking out/klipper.elf
Creating hex file out/klipper.bin
Это означает что прошивка скомпилировалась и находится в папке ~/klipper/out/klipper.bin (полный путь к файлу: /home/pi/klipper/out/klipper.bin) Запускаем WinSCP, подключаемся к компьютеру, скачиваем данный файл. Копируем файл klipper.bin
на sd-карту, переименовываем в firmware.bin
, вставляем sd-карту в принтер и включаем его. Прошивка занимает около минуты.
Корректировка файла настроек
По завершению прошивки подключаем принтер USB проводом к компьютеру и переходим в putty и выполняем команду:
ls /dev/serial/by-id/*
Если в результате будет вывод типа
usb-1a86_USB_Serial-if00-port0
pi@fluiddpi:~/klipper $
То это означает, что принтер определился как /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0, запоминаем это и открываем файл printer.cfg.
В нем ищем секцию:
[mcu]
serial: /dev/serial/by-id/<your-mcu-id>
restart_method: command
и приводим ее к виду:
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
Если ты действительно внимательно читаешь эту статью, то не копируй блок описанный ниже, а переходи к следующему:
[homing_override]
gcode:
G28
M84
Если вы выполняли установку Fluidd или Mailsail, то также необходимо отредактировать файлы fluidd.cfg или mainsail.cfg и полностью удалить из них секцию [mcu] включая строчку с serial. Также проверьте что из printer.cfg не пропали строки с [include] cfg файлов mainsail или fluidd, при необходимости верните. Если веб интерфейс не устанавливался, то добавляем в файл printer.cfg следующий блок:
[virtual_sdcard]
path: ~/printer_data/gcodes
[pause_resume]
[display_status]
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
TURN_OFF_HEATERS
CLEAR_PAUSE
SDCARD_RESET_FILE
BASE_CANCEL_PRINT
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
##### set defaults #####
{% set x = params.X|default(230) %} #edit to your park position
{% set y = params.Y|default(230) %} #edit to your park position
{% set z = params.Z|default(10)|float %} #edit to your park position
{% set e = params.E|default(1) %} #edit to your retract length
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% set lift_z = z|abs %}
{% if act_z < (max_z - lift_z) %}
{% set z_safe = lift_z %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 E-{e} F2100
G1 Z{z_safe}
G90
G1 X{x} Y{y} F6000
[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
##### set defaults #####
{% set e = params.E|default(1) %} #edit to your retract length
G91
G1 E{e} F2100
G90
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
BASE_RESUME
################################################################################
Copy
И размещаем его в ~/printer_data/config (полный путь к примеру /home/pi/printer_data/config).
Соединение платы принтера и Klipper через
serial: /dev/ttyS2
Впаиваем провод в H96Max
Установка веб камеры на Klipper.
Камера и V4L
Убедимся, что в системе присутствуют необходимые для правильной работы пакеты:
sudo apt install build-essential libevent-dev libjpeg-dev libbsd-dev v4l-utils sudo usermod -aG video $USER
Ищем камеру
Для определения камеры используется команда
lsusb
ls -al /dev/v4l/by-id
cd ~
git clone https://github.com/mainsail-crew/crow…
cd ~/crowsnest
sudo make install
Reboot the mcu (if you didn’t have Crows Nest perform it for you) —
sudo reboot -f
crowsnest.conf file path variations for Klipper/moonraker (Edit file: ~/printer_data/systemd/crowsnest.env)-
Single instance/old moonraker-
~/klipper_config/crowsnest.conf
Multi instance/old moonraker-
~/klipper_config/printer1/crowsnest.conf
Multi instance/new moonraker-
~/printer_1_data/config/crowsnest.conf
crowsnest.conf log path variation(make edit to log path in crowsnest.conf)-
Old Klipper/moonraker(multi and single instance):
~/klipper_logs/crowsnest.log
Updated Klipper/moonraker(multi instance):
~/printer_1_data/logs/crowsnest.log
Find device id for camera (try this one first)-
ls -l /dev/v4l/by-id
Find device id for cameras returning the same address(ties address to USB port. If the camera changes port you will need to find the new address)-
ls -l /dev/v4l/by-path