
- Цена: 36$ / 2136 р.
В очередной раз наткнулся на споры в комментариях в отношении ТВ-бокса на Amlogic s905. Большинство комментаторов призывают дать инструкции, что нужно сделать, чтобы из китайской коробочки сделать производительный (медиа)сервер. Скажу сразу: покурить мануалы все же придется, все само не заработает. Однако, у вас будет стимул, вы будете знать что можно в итоге получить.
Данная статья призвана обобщить довольно значительный опыт в рамках бытовой автоматизации и использования медиаплееров. Цель всего опуса описать неочевидные возможности устройств и ПО, примеры того, как можно из булки хлеба сделать троллейбус при помощи python и нескольких десятков пар костылей. Интересующихся прошу под кат.
Введение.
Итак, начнем с головного устройства. На картинке к данному обзору представлен довольно типичный тв-бкс z69 на базе 4х ядерного чипа Amlogic s905x. Многие (и я тоже) привыкли использовать данные устройства для просмотра сериалов и iptv. Я в своей медиа системе использую аналогичный бокс с 2/32гб на андройде в связке с проектором. Устройство не блещет стабильностью, часто на задачах просмотра веб контента случаются зависания и прочие неприятные, но разрешимые ситуации. Но это не цель данного обзора.
В этой части хотел бы раскрыть неочевидные многим возможности данного чипа и сравнить его с неформальным лидером рынка iot устройств — raspberry pi3. Бонусом, или даже основной частью, будут мои юзер-кейсы, о которых все время спрашивают в каментах.
Итак, покопавшись в интернете, можно узнать, что многие тв-боксы при помощи (черной) магии можно превратить в неттопы с полноценным Linux на борту. Это касается большинства чипов amlogic, rockchip и прочих платформ. Конкретно наш экземпляр — s905x — поддерживает загрузку DebianUbuntu подобной системы с 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 и других разъемов, которыми можно беспроблемно управлять хоть из ОС, хоть из уровня ПО(pythondomoticz etc).
Если ваши задачи связаны с управлением датчиками или низкоуровневыми протоколами 1-wire i2c GPIO релешками и прочим прямо с платы: тв-бокс с linux тоже не про это.
В чем же плюс? А плюс в наличии готового устройства.
У вас за те же или меньшие, по сравнению с raspberry pi3, деньги будет: достаточно мощный процессор, нормальный корпус!, хороший блок питания, охлаждение(но это не точно), интерфейсы hdmiethernetusbavaudio, btwifi, ir (многие из них не запустятся в линуксе без танцев с бубном), антенны, внутренний накопитель. У вас будет более высокая производительность процессора и больше (в данном примере) оперативной памяти.
Сравнение производительности:
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
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
Есть смысл заморочиться? Ну, я заморочился :)
Установка ОС.
Все достаточно просто. Листаем выше обозначенную тему до постов “последний стабильный образ” и переходим на яндекс.диск: на момент написани это здесь
Скачиваем образ системы и заливаем на 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 (или majordomoOpenHAB по вкусу).
Про использование домотикза читайте на муське тут.
Последнее время я им не особо доволен, он стал тормозить при взаимодействии с 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$. При этом могут принести вам немалую пользу.
Я намеренно не выкладываю свои наработки в виду их ужасной костылности и из-за нежелания засветить кикие-нибудь ключи. Все идеи четко описаны со всеми необходимыми ссылками. Если что-то забыл — пишите в комментариях, я постараюсь ответить в течении следующей недели.
Надеюсь, моя статья будет вам полезна.
(c) 2017 Источник материала