Найти в Дзене
HASSStas: Рецепты HomeAssistant

Доводим Armbian до ума

Более двух месяцев я проработал на HomeAssistant под Armbian, установленном на Ugoos X3 Cube - ТВ-приставке, которая долгое время валялась у меня в заначке бесхозная. Всё было более-менее хорошо, как казалолсь бы. Но нет. При первой установке, то ли в силу неправильно выбранного ядра, то ли ещё чего, но система в упор видела только половину доступной памяти приставки. И два месяца работы показали, что этого явно недостаточно. Впрочем - работает и ладно. Но, повторюсь, - нет! В последнее время я стал замечать странности в работе - микроотвалы, какие-то перезапуски системы и проч. И они меня стали раздражать. А значит - надо всё переделать. И вот, когда девчонки собрались спать, я авторитетно объявил "вечер без умного дома", повыключал всё, скачал последние бэкапы на диск и... Сейчас 23:14, на более свежую сборку Armbian Armbian_25.02.0_amlogic_s905x3_bookworm_6.6.71_server_2025.01.18, в которую уже зашит Home Assistant, устанавливается этот самый Home Assistant. А это занятие небыстрое.
Оглавление

Более двух месяцев я проработал на HomeAssistant под Armbian, установленном на Ugoos X3 Cube - ТВ-приставке, которая долгое время валялась у меня в заначке бесхозная.

Всё было более-менее хорошо, как казалолсь бы. Но нет. При первой установке, то ли в силу неправильно выбранного ядра, то ли ещё чего, но система в упор видела только половину доступной памяти приставки. И два месяца работы показали, что этого явно недостаточно. Впрочем - работает и ладно.

Но, повторюсь, - нет! В последнее время я стал замечать странности в работе - микроотвалы, какие-то перезапуски системы и проч. И они меня стали раздражать. А значит - надо всё переделать. И вот, когда девчонки собрались спать, я авторитетно объявил "вечер без умного дома", повыключал всё, скачал последние бэкапы на диск и...

Сейчас 23:14, на более свежую сборку Armbian Armbian_25.02.0_amlogic_s905x3_bookworm_6.6.71_server_2025.01.18, в которую уже зашит Home Assistant, устанавливается этот самый Home Assistant. А это занятие небыстрое. И вот пока он ставится - можно черкануть пару строк в дзене, в основном - себе на будущее, мало ли придётся вспоминать что и как я делал.

Переустановка Armbian

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

Но это я забежал чуть вперёд. А начать следует со скачивания свежего образа, который я брал тут: https://github.com/ophub/amlogic-s9xxx-armbian/releases. Как видно выше, мой новый образ - Armbian_25.02.0_amlogic_s905x3_bookworm_6.6.71_server_2025.01.18. Из названия файла видно, что это релиз от 18 января 2025 (буквально вчерашний), основан он на debian bookworm, серверная версия 6.6.71 (без интерфейсов и прочего, зачем они мне?), предназначенный для ТВ-боксов на чипе Amlogic S905X3, в число которых входит и мой старенький Ugoos X3.

Этот образ был записан на microSD через BalenaEtcher и затем сконфигурирован именно для Ugoos X3:

  • в корне диска файл u-boot-ugoos-x3.bin был скопирован в u-boot.ext и u-boot.bin (не уверен что последнее нужно, но пусть будет)
  • в файле uEnv.txt параметр FDT был изменён на =/dtb/amlogic/meson-sm1-ugoos-x3.dtb
  • в папке extlinux файл extlinux.conf.bak был скопирован в extlinux.conf и там тоже параметр fdt изменён на /dtb/amlogic/meson-sm1-ugoos-x3.dtb (на всякий случай обращу внимание, что в файле extlinux.conf параметр задаётся без знака =)

Всё. В таком виде карточка была вставлена в слот ТВ-приставки, воткнуто питание и - внезапно! - приставка загрузилась в новую систему.

И, что тоже внезапно, тут же показала что найдно 2Гб памяти, что, в общем-то, и было основной целью.

Далее следует стандартное armbian-install, но оно не выполняется, потому что происходит автоматическая предустановка HomeAssistant. Которая занимает дофига времени.

Восстановление backup

Так уж вышло, что в 2025м году команда HomeAssistant изменила подход к бэкапам и теперь они все шифрованные.

Конечно же, я сохранил бэкап на локальный диск и сохранил ключ-фразу шифрования из предыдущей установки HomeAssistant, поэтому особых проблем я не испытал - в разделе бэкапов загрузил на сервер свой архив и восстановил его, введя ключ шифрования от предыдущей установки.

-2

А вот теперь уже можно и armbian-install.

Выбираем 516 - meson-sm1-ugoos-x3

-3

...жду, когда система перенесётся на внутренний накопитель, и... не дождавшись, ухожу спать.

И утром обнаруживаю, что всё само загрузилось, включилось и кое-где даже включился свет.

А потом обнаруживаю, что после переноса в eMMC памяти осталось опять 1 гиг. Печаль. Ну что ж, давайте шерстить форумы. Из форумов делаю вывод что неправильный dtb, но где? Где-то пишут про u-boot.emmc вместо u-boot.ext. В другом месте написано про overload. Сделал сразу и то, и то. Но фокус в том, что система уже установлена на eMMC и редактировать файлы надо в партиции boot. Придётся немного поковыряться, благо какие-то познания есть, да и гуглокодинг никто не отменял.

В общем, монтируем наш boot:

Через lsblk находим наш раздел. Если загрузились уже с eMMC, то будет выглядеть так:

-4

В моём случае загрузка с eMMC при менее чем 1 гигабайте памяти превращает систему в неповоротливое убожество, в котором ничего нельзя сделать, поэтому я грузился с флешки, где нормально работают 2 гига памяти и всё работает шустрее, и там схема разделов выглядит немного иначе, но в целом более-менее понятно где там boot родной, а где раздел для boot на eMMC.

Суть - находим название (NAME) нужного нам раздела boot и монтируем его в локальную директорию. Но сначала её создадим:

mkdir /mnt/tmp

Монтируем:

mount /dev/mmcblk2p1 /mnt/tmp

Готово. Теперь у нас есть возможность под рутом редактировать содержимое этого раздела. Идём в раздел - cd /mnt/tmp, создаём дубль u-boot.ext:

cp u-boot.ext u-boot.emmc

Создаём папку overload и копируем загрузчики туда тоже:

mkdir overload
cp u-boot.ext overload
cp u-boot.mmc overload

Отмонтируем наш раздел и выключаем приставку:

umount /dev/mmcblk2p1
shutdown

Не знаю что из этого помогло, но после загрузки бокса без флешки - у меня наконец-то видно почти 2Гб рам. И сразу своп увеличился до адекватных значений.

-5

Тут сразу же видно, что в пике было использовано чуть больше 1Гб рам и ещё использовался своп. 1 гигабайта - явно мало для работы системы.

Исправляем проблемы

1. Bluetooth

-6
apt update
apt install bluez

2. Неподдерживаемя операционная система

-7

Тут всё просто. Редактируем название операционной системы на понятное для HA и готово:

nano /etc/os-release

Меняем PRETTY_NAME="Armbian OS bookworm" на PRETTY_NAME="Debian GNU/Linux 12 (bookworm)":

-8

reboot и готово, ошибки больше нет.

3. AppArmor

-9

А вот это я не победил до сих пор. И apparmor-utils ставил, и строку APPEND в uEnv правил. Дошло до того, что я сдуру решил перестановить повторно hass, на что благополучно угробил половину какой-то ночи, хотя очень хотелось спать а не вот это всё.

В итоге пока забил на эту ошибку - висит себе, есть-пить не просит, жить не мешает.

Эпилог

Прошло уже две с половиной недели, аптайм сервера: 18 дней 21 час 33 минуты на момент написания этих строк. Потребление памяти в пике подскакивает до 1,5Гб, в среднем держится около 1,3. Система работает без сбоев, ничего нигде не отваливается. Всякие разные зигбишные датчики, которые у меня отваливались на нетбуке - работают стабильно, интеграции в HACS обновляются, версия supervisor и core тоже. Наступила эра стабильности и процветания.

Осталось только добить apparmor - чисто из спортивного интереса, и вернуться наконец к старым девайсам и стряхнуть пыль с черновиков.