Добрый день, коллеги!
В очередной раз наткнулся на
споры в комментариях в отношении ТВ-бокса на Amlogic s905. Большинство комментаторов призывают дать инструкции, что нужно сделать, чтобы из китайской коробочки сделать производительный (медиа)сервер. Скажу сразу: покурить мануалы все же придется, все само не заработает. Однако, у вас будет стимул, вы будете знать что можно в итоге получить.
Данная статья призвана обобщить довольно значительный опыт в рамках бытовой автоматизации и использования медиаплееров. Цель всего опуса описать неочевидные возможности устройств и ПО, примеры того, как можно из булки хлеба сделать троллейбус при помощи python и нескольких десятков пар костылей. Интересующихся прошу под кат.
Введение.
Итак, начнем с головного устройства. На картинке к данному обзору представлен довольно типичный тв-бкс z69 на базе 4х ядерного чипа Amlogic s905x. Многие (и я тоже) привыкли использовать данные устройства для просмотра сериалов и iptv. Я в своей медиа системе использую аналогичный бокс с 2/32гб на андройде в связке с проектором. Устройство не блещет стабильностью, часто на задачах просмотра веб контента случаются зависания и прочие неприятные, но разрешимые ситуации. Но это не цель данного обзора.
В этой части хотел бы раскрыть неочевидные многим возможности данного чипа и сравнить его с неформальным лидером рынка iot устройств — raspberry pi3. Бонусом, или даже основной частью, будут мои юзер-кейсы, о которых все время спрашивают в каментах.
Итак, покопавшись в интернете, можно узнать, что многие тв-боксы при помощи (черной) магии можно превратить в неттопы с полноценным Linux на борту. Это касается большинства чипов amlogic, rockchip и прочих платформ. Конкретно наш экземпляр — s905x — поддерживает
загрузку Debian\Ubuntu подобной системы с SD карты или USB. Огромная благодарность в проработке вопроса загрузки linux на чипах amlogic сразу уходит к нашему соотечественнику balbes150.
Там же у balbes150 можно найти образ для загрузки LibreElec.
Это дистрибутив для нативного запуска Kodi/XBMC — медиаплеера с кучей дополительных плагинов. Если ваша цель состоит в сохранении медийных свойств приставки с одновременным повышением производительности и стабильности — рекомендую. Процесс установки аналогичен описанному ниже. Ссылка на дистрибутивы для s905x
вот.
Кроме того, для семейства amlogic s9xxxx, собран дистрибутив признанного фаворита в русском мире дистрибутивов *Elec — AlexElec.
Ссылка на загрузку
вот. Инструкция по запуску — аналогичная.
При запуске полноценного Linux дистрибутива сразу обозначим факт: в рамках эксперимента, мы потеряем “медиа” возможности приставки (точнее, отключим на время опытов — android то с приставки никуда не денется).
Но что мы имеем? А имеем мы мини-компьютер, который потребляет максимум 8 вт и который будем в дальнейшем пытаться применять для типовых задач домашней автоматизации.
Сравнение.
Чтобы не возвращаться потом, опишем сразу железные и софтовые профиты и минусы, по сравнению с аналогами.
Принято считать хорошим примером в мире устройств домашней автоматизации — raspberry pi (малинка). Эта плата, а конкретно модель pi3 b+, работает на базе 4х ядерного чипа BCM2837 с 1гб ОЗУ.
Плата имеет огромное комьюнити и почти любой вопрос, которым вы можете задаться в рамках работы с ней, скорее всего, уже решен до вас. Это ее неоспоримый плюс: поддержка. За это можно и иногда нужно переплатить(цена вопроса 30-35$). Если вы решите прошивать тв-бокс и устанавливать на него софт, будьте готовы: вы с этим(вероятно) один на один.
Также у малинки на борту разведена гребенка GPIO и других разъемов, которыми можно беспроблемно управлять хоть из ОС, хоть из уровня ПО(python\domoticz etc).
Если ваши задачи связаны с управлением датчиками или низкоуровневыми протоколами 1-wire \ i2c \ GPIO релешками и прочим прямо с платы: тв-бокс с linux тоже не про это.
В чем же плюс? А плюс в наличии готового устройства.
У вас за те же или меньшие, по сравнению с raspberry pi3, деньги будет: достаточно мощный процессор, нормальный корпус!, хороший блок питания, охлаждение(но это не точно), интерфейсы hdmi\ethernet\usb\av\audio, bt\wifi, ir (многие из них не запустятся в линуксе без танцев с бубном), антенны, внутренний накопитель. У вас будет более высокая производительность процессора и больше (в данном примере) оперативной памяти.
Сравнение производительности:
amologic s905x / 1gb:
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: amlogic: GNU/Linux
OS: GNU/Linux — 3.14.29 — #146 SMP PREEMPT Tue Dec 26 12:40:49 MSK 2017
Machine: aarch64 (aarch64)
Language: en_US.utf8 (charmap=«UTF-8», collate=«UTF-8»)
16:22:44 up 9 min, 1 user, load average: 0.21, 0.18, 0.10; runlevel 5
— Benchmark Run: Tue Mar 27 2018 16:22:44 — 16:50:50
0 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 7436510.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1312.0 MWIPS (10.1 s, 7 samples)
Execl Throughput 871.6 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 180951.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 56264.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 428546.6 KBps (30.0 s, 2 samples)
Pipe Throughput 437935.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 93731.8 lps (10.0 s, 7 samples)
Process Creation 3236.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2428.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 714.0 lpm (60.1 s, 2 samples)
System Call Overhead 929656.2 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 7436510.3 637.2
Double-Precision Whetstone 55.0 1312.0 238.6
Execl Throughput 43.0 871.6 202.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 180951.1 456.9
File Copy 256 bufsize 500 maxblocks 1655.0 56264.8 340.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 428546.6 738.9
Pipe Throughput 12440.0 437935.7 352.0
Pipe-based Context Switching 4000.0 93731.8 234.3
Process Creation 126.0 3236.2 256.8
Shell Scripts (1 concurrent) 42.4 2428.7 572.8
Shell Scripts (8 concurrent) 6.0 714.0 1190.0
System Call Overhead 15000.0 929656.2 619.8
========
System Benchmarks Index Score 421.7
Raspberry Pi 3b+
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: rpi3: GNU/Linux
OS: GNU/Linux — 4.9.35-v7+ — #1014 SMP Fri Jun 30 14:47:43 BST 2017
Machine: armv7l (unknown)
Language: en_US.utf8 (charmap=«ANSI_X3.4-1968», collate=«ANSI_X3.4-1968»)
CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
16:26:55 up 20:47, 1 user, load average: 0.77, 0.98, 0.57; runlevel 3
— Benchmark Run: Tue Mar 27 2018 16:26:55 — 16:56:17
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 2179181.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 368.3 MWIPS (9.9 s, 7 samples)
Execl Throughput 463.0 lps (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 73545.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 20941.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 194029.5 KBps (30.0 s, 2 samples)
Pipe Throughput 155045.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 27361.7 lps (10.0 s, 7 samples)
Process Creation 1177.1 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1176.1 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 317.4 lpm (60.1 s, 2 samples)
System Call Overhead 333399.9 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 2179181.5 186.7
Double-Precision Whetstone 55.0 368.3 67.0
Execl Throughput 43.0 463.0 107.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 73545.4 185.7
File Copy 256 bufsize 500 maxblocks 1655.0 20941.9 126.5
File Copy 4096 bufsize 8000 maxblocks 5800.0 194029.5 334.5
Pipe Throughput 12440.0 155045.4 124.6
Pipe-based Context Switching 4000.0 27361.7 68.4
Process Creation 126.0 1177.1 93.4
Shell Scripts (1 concurrent) 42.4 1176.1 277.4
Shell Scripts (8 concurrent) 6.0 317.4 529.0
System Call Overhead 15000.0 333399.9 222.3
========
System Benchmarks Index Score 159.7
— Benchmark Run: Tue Mar 27 2018 16:56:17 — 17:25:34
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 8690198.1 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1470.5 MWIPS (10.0 s, 7 samples)
Execl Throughput 1266.4 lps (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 113576.7 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 31186.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 332597.5 KBps (30.0 s, 2 samples)
Pipe Throughput 616170.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 95804.8 lps (10.0 s, 7 samples)
Process Creation 2793.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2657.3 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 341.1 lpm (60.2 s, 2 samples)
System Call Overhead 1277095.6 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 8690198.1 744.7
Double-Precision Whetstone 55.0 1470.5 267.4
Execl Throughput 43.0 1266.4 294.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 113576.7 286.8
File Copy 256 bufsize 500 maxblocks 1655.0 31186.4 188.4
File Copy 4096 bufsize 8000 maxblocks 5800.0 332597.5 573.4
Pipe Throughput 12440.0 616170.2 495.3
Pipe-based Context Switching 4000.0 95804.8 239.5
Process Creation 126.0 2793.2 221.7
Shell Scripts (1 concurrent) 42.4 2657.3 626.7
Shell Scripts (8 concurrent) 6.0 341.1 568.6
System Call Overhead 15000.0 1277095.6 851.4
========
System Benchmarks Index Score 395.2
Есть смысл заморочиться? Ну, я заморочился :)
Установка ОС.
Все достаточно просто. Листаем выше обозначенную тему до постов “последний стабильный образ” и переходим на яндекс.диск: на момент написания (12.2017) это
здесь
Скачиваем образ системы и заливаем на sd или usb флэшку с помощью программ
rufus или
win32diskimager.
Важным является момент активации загрузки. Для этого нужно загрузиться в андроид, вставить созданный на предыдущем шаге накопитель и через стандартную программу обновления (update&backup) исправить загрузчик бокса, т.е. запустить с флэшки скрипт обновления (aml_autoscript.zip). Подходящий файл будет на флешке только один, вы не перепутаете его. После запуска обновления, бокс перезагрузится и, если все сделано правильно, запустится выбранный образ Linux.
Учетные данные для образа armbian (ubuntu 16.04):
root, пароль: 1234.
При первом входе будет запущена процедура изменения пароля и затем создания нового (нерутового) пользователя. Когда все будет выполнено — бокс еще раз перезагрузится. После этого, рекомендую назначить для твбокса постоянный ip адрес в DHCP на вашем домашнем роутере. После чего ходить на твбокс будет удобно по ssh (я пользуюсь для этих целей putty в windows).
Итак, мы в линуксе. На этом этапе, если вы жадный IT менеджер и планируете унижать своих пользователей(или сами любите страдания), вы можете сообщить: вот полноценный компьютер с ОС Linux! В нем можно запускать офис, выполнять типовые задачи и\или использовать браузер. Можно устанавливать дополнительные программы.
Лично я не склонен считать получившуюся систему полноценной. Я бы назвал это тонким клиентом, из которого, например, можно использовать сервисы предприятия в режиме удаленного рабочего стола, vdi или через веб интерфейсы.
На этом этапе также могут возникнуть вопросы с железом, например wifi и аппаратной поддержкой декодирования видео. Уважаемый balbes150 дает нам подборку драйверов(в терминологии linux — модулей ядра) в образе (утилита armbian-config), но с большой вероятностью вы можете оказаться в пролете и они не заработают. Увы, китайцы в каждом боксе ставят разную периферию. С этой проблемой вы, вероятно, один на один, ну или может вам помогут на
форуме. Гуглите.
Для дома, получившуюся систему можно установить без графического интерфейса, а все необходимые функции получать в виде веб интерфейсов. Я использую дистрибутив Ubuntu server 16.04.
Пример №0: Тривиальный. Настройка торентокачалок, файлохранилок.
Что тут можно посоветовать. Любое ПО на ваш вкус.
Для торренов могу порекомендовать
transmission
Для общих папок с windows:
samba.
Самбу, кстати, можно использовать для автоматического резервного копирования видео с популярных камер Xiaomi Dafang по вот этой
инструкции.
Для монтирования яндекс диска используем
dav2fs — чтобы превратить ваш бокс в облачное хранилище, например, для тех же видеозаписей с камеры.
Пример №1: Установка системы домашней автоматизации на примере Domoticz (или majordomo\OpenHAB по вкусу).
Про использование домотикза читайте на муське
тут.
Последнее время я им не особо доволен, он стал тормозить при взаимодействии с xiaomi шлюзом. Но пока разбираться лень.
Устанавливается система с помощью скрипта:
sudo curl -L install.domoticz.com | bash
После нескольких простых вопросов у вас на порту 8080 будет запущен интерфейс Domoticz. Далее подключение и настройка устройств осуществляется через этот веб интерфейс.
Без труда можно интегрировать с умным домом xiaomi и выключателями sonoff, избавив их от гнета Китая :)
Выглядит в сборе примерно так:
Пример №2: Видеонаблюдение на базе motion+motionEye.
Кто не знает, motion это видеорегистратор с открытым исходным кодом. А motionEye это веб-интерфейс для настройки камер и управления архивами.
Устанавливается по
инструкции (со 2го шага)
Выглядит так:
Кстати, он умеет работать с непосредственно подключенными USB web камерами. Ну, это понятно, что для любителей приключений…
RTSP потоки сильно грузят процессор, поэтому больше 2-х потоков в разрешении 720р amlogic s905x вряд ли вытянет.
У меня дома, кстати, стоят камеры Xiaomi Xiaofang с
хаком. С помощью motionEye и хака можно просматривать видео (rtsp) с камер и получать изображения без помощи родного приложения MiHome. Я считаю это очень важным, т.к. стабильность и защищенность китайского облака оставляет желать лучшего.
Мой вариант использования: при открытии входной двери, датчик открытия отправляет запрос на сервер автоматизации, там python скрипт, запущенный linux лезет к камерам и получает с них фото, после чего направляет их мне через pushover по ftp или telegram.
Далее совмещайте с Яндекс-Диском и получайте облако для записей.
Пример №3: Продвинутый. Управление системой через Телеграм с помощью бота на Python.
Данный кейс требует некоторых навыков программирования и был очень удобен до последних событий, связанных с РКН. Я планировал использовать телеграм бота для отказа от белого IP дома.
На текущий момент ситуация не изменилась кардинально, но возможны проблемы со стабильностью, но скрипт бота приходится запускать с использованием прокси. Для надежности и секурности рекомендую обзавестись собственным proxy/vpn.
В основе бота лежит библиотека
python-telegram-bot
Мой бот выполняет следующие функции:
- запуск linux shell команд, перенаправление вывода в телеграм
- краткая информация о состоянии устройства
- информация о состоянии домашних устройств
- получение фото с камер
В работе выглядит так:
Заключение
На этом обзорную экскурсию будем завершать.
Понимаю, что скомкано. Основная идея — заинтересовать. Главная мысль — твбокс amlogic s905x не такой мусор, как может показаться. Я заказывал боксы в основном по акциям. В варианте 1гб озу\8гб они стоят копейки — от 18$. При этом могут принести вам немалую пользу.
Я намеренно не выкладываю свои наработки в виду их ужасной костыльности и из-за нежелания засветить какие-нибудь ключи. Все идеи четко описаны со всеми необходимыми ссылками. Если что-то забыл — пишите в комментариях, я постараюсь ответить в течение следующей недели.
Надеюсь, моя статья будет вам полезна.
на моем твбоксе(за 18$) на allwinner h2 вайфай работает замечательно, как тут?
Плюс опять же нужно смотреть какой именно модуль поставят в бокс китайцы, но для популярных модули ядра есть.
Помятуя ваши крутые статьи про роутеры, у вас скорее всего заработает)
да и как бы НЕТ роутеров, которые еще и полноценную ось на себе при этом крутят и запускают её с нанд/карточки.
А, и управлять можно со Смарта при помощи Yatse. С его же помощью можно отправлять ссылки из HDvideobox'a на медиацентр.
Перешел на Андроид в итоге — по моему даже лучше стало )
Игры гоняю, Коди с плагинами работает.
Alexelec все таки на любителя.
С удовольствием почитаю продолжение, если надумаете писать.
Спасибо за интересный материал.
С меня зеленка.
Алекс из Украины). Осноновной сайт и форум тоже).
Семейство s8xxx работает с alexelec, но речь не о нем в статье, и к покупке такое железо настоятельно не рекомендую.
А то, что товарищ с Украины ясно как бы по домену форума, но любят его и там и ещё более тут)
ЗДЕСЬ представленная коробка за US$ 40 в конфигурации 2GB/16GB
Для начала стоит как минимум остановить демона rsyslog (syslogd, rsyslogd в разных дистрибутивах). Если железка будет работать постоянно, без резких отключений, то стоит и журналирование файловой системы выключить.
Если активно используется Domoticz, есть датчики ежесекундно что то пишушие, тот же шлюз Xiaomi лучше всего перевести его базу и логи на Ram диск настроив overlayFS. В манах Dz есть настройка для Raspbian www.domoticz.com/wiki/Setting_up_overlayFS_on_Raspberry_Pi, делал, работало. Без этих шаманств на флешке сбойные блоки быстро появляются. У меня было от года вначале до считанных месяцев, когда Raspberry начинала тупить в режиме 24/7.
Но ваш совет тоже всем рекомендую!
Поддержка линукса по вашему выбору из коробки, пассивный радиатор в комплекте. Ну да, у вас не будет корпуса, но зато железяка работает стабильно, все драйвера есть, тянет 4к без проблем. Librelec ставится родной. Хочется поиграться с умным домом, внешними устройствами — пожалуйста. Быстро, ничего не тормозит, гребенка пинов в наличии. Поддержка коммьюнити есть, армбиан, одробиан, убунту, андроид запускаются без проблем.
Не думаю, что речь идёт о покупать. А про то, что валяется тк тормозит. А тут использовать можно
Да, если является без дела ихочется порукоблудить, тогда ок. Времени жалко чинить кривое поделие дядюшки Ляо.
— bondbox box3 miesiące temu
Все ждут вашего ответа по поводу 4к. Пропала такая возможность, что-то скажете хорошего?
— ПОСЫЛКИ ИЗ КИТАЯ 3 miesiące temu
До нового года показывало 4k без проблем, вчера включил, нету в списке теперь потока dush, появились какие то другие и не показывают, только звук идёт, в итоге 720 максимум качество, есть идеи как теперь настроить?
— Andrey N 3 miesiące temu
use mpeg-dash неактивен. Kodi 17.4. 4к нет.
— D S 2 miesiące temu
проблема решилась через sys.display-size 3840x2160 без установки идиотского КОДИ :D
Хочу играть сидя на диванчике с геймпадом.
В итоге поставил Lakka, так как эмуляция была одной из первоначальных целей. В итоге закинул ещё несколько полных ромсетов и доволен как слон — практически вся основная история игр в одной маленькой приставке. Правда тоже без проблем не обошлось. Подружить с Bluetooth геймпадом так и не удалось, при запуске некоторых шейдеров приставка начинала жутко тормозить, да и некоторые эмуляторы не захотели работать в принципе, но последние 2 проблемы можно списать на то, что мощности всё же не хватает. В остальном как вариант — вполне. На офсайте версий для S905 и S912 нет, но они есть в списке найтли билдов. А процесс установки аналогичен. ОЧЕНЬ надеюсь, что кто нибудь сможет портировать EmulationStation (видел на японских сайтах какие то попытки запустить Batocera, но у меня этот билд так и не заработал) так как там возможностей сильно больше, да и в целом симпатичнее выглядит. У самого скилла пока не хватает.
Если на amlogic 905x прокатить тогда это самый дешовый вариант домашней sip телефонии выйдет.