Если вести речь о энергоэффективных устройствах, то ARM64 архитектура себя отлично зарекомендовала. На рынке существует огромное предложение устройств на данной архитектуре. Но ценник при запросе определенных параметром стремительно растет вверх. Озвучим наши требования: ARM64, 1Gb ОЗУ и 8GB SSD или NAND. Естественно увеличение параметров в большую сторону приветствуется.
Обратившись к рынку ТВ приставок — я вижу предложения от 1000р, что в 2-4 раза дешевле плат для разработчиков. Выбор пал на Х96 приставку
Выбор пал на Х96 приставку.
За 1000р я получил ужасный ТВ бокс, но отличный конструктор. Блок питания и клавиатура, а также HDMI кабель шли в комплекте. Прикладываю подтверждение, так как никто не поверит иначе.
Получив включил, посмотрел на тупящий андроид, выключил. Разобрал.
В профильной теме Armbian на ТВ бокс находим нужны йобраз и скачиваем. Я скачал Armbian_20.11_Arm-64_buster_current_5.9.9.img.xz
Заглянув по адресу https://www.debian.org/releases/ я вначале купился на bullseye релиз, не прочитав фразу:
СТАВИМ LINUX MANJARO-ARM НА UGOOS AM6 PLUS. ПОЛНОЦЕННЫЙ ДЕСКТОПНЫЙ КОМПЬЮТЕР
This release started as a copy of buster, and is currently in a state called testing . This means that things should not break as badly as in unstable or experimental distributions, because packages are allowed to enter this distribution only after a certain period of time has passed, and when they don’t have any release-critical bugs filed against them. Please note that security updates for testing distribution are not yet managed by the security team. Hence, testing does not get security updates in a timely manner. You are encouraged to switch your sources.list entries from testing to buster for the time being if you need security support.
See also the entry in the Security Team’s FAQ for the testing distribution.
Позже я поплотился за это и позже решил выделять отдельное время для игр с тестовыми образами. Для более менее стабильных систем я выбрал стабильный образ от debian. Позже мы устанавливаем образ на диск и читаем инструкцию:
How to run these images on the Amlogic platform .
Now all images Armbian and LE has all the files for activate the multi-boot. Anything addition to download and copy to media is not required.
1. Download the image for your device
2. Unpack
3. Burn the image on the medium
4. Configure in the file (uEnv.txt) launch parameters for the desired platform and model (uncomment the desired lines and comment out or delete unused ones)
If universal multi-upload has not yet been activated on this device, you need to activate it once. There are several options for activating multi-loading.
— Connect the prepared media to the device and turn on the power, boot into Android
— Open the app «Update
— Click on «Select» local update and chose the file on the removable media aml_autoscript.zip
— Start «Update»
— System will reboot twice and start running the system from external media.
Linux Mint и HDMI : Решение проблем с подключением монитора или телевизора
На последних образах изменились правила:
Pay attention. Starting from version 20.08 (20200814), the configuration order for the used DTB changes.
Please note that the algorithm for initial configuration of the system for startup has changed. Instead of a file «uEnv.txt», the file «/extlinux/extlinux.conf » is now used. The rules for editing a file remain the same.
All Amlogic models now need the «u-boot.ext» file.
Before launching on Amlogic, you must copy or rename one of the existing files «u-boot-*» to «u-boot.ext».
For s905 (not X) — used u-boot-s905
For s905x and s912 — used u-boot-s905x-s912
For s905x2 and s922 — used u-boot-s905x2-s922
— Теперь устанавливаем образ на SD карту.
— Открываем BOOT раздел на SD карте и переименовываем файл u-boot-s905x-s912 в файл u-boot.ext(на старых версиях этого делать не требовалось), затем в папке extlinux редактируем файл extlinux.conf (убираем ненужное и раскомментируем нужное). Для своей приставки я использововал meson-gxl-s905x-nexbox-a95x.dtb
— Вставляем SD карту в приставку.
-У меня загрузка начинается сразу, но я использую старый образ. Если загрузчик на приставке не обновлен, то заходим в обновление и выбираем обновление на флешке. После его установки первичная загрузка становится с флешки. Но в новых инструкциях рекомендуют зажать кнопку сброса, которая находится внутри разъема AV и включить питание приставки. После того, как на HDMI пойдет сигнал, отпустить кнопку сброса.
При желании можно установить Linux в приставку и затереть Android, что я успешно и сделал. Если что-то пошло не так, то:
Источник: dzen.ru
Запускаем Ubuntu и смотрим Torrent и Torrent-TV прямиком на Samsung SmartTV
После прочтения комментария от awoland во вчерашней статье Как SmartTV забыли о главном, я сразу полез пробовать получить root-права и telnet/ssh на своем телевизоре. Оказывается, все уже готово для этого, и это проще простого!
Достаточно установить Виджет SamyGo, и он все сделает за вас!
Что дает нам SamyGO?
- Root-доступ на ТВ через Telnet
- Виртуальную флешку, монтирование NFS, Samba, FTP на нее
- Samba, FTP-серверы
- Apache2 с PHP
- rtorrent
- Уйму веселья!
# -*- DISCLAIMER -*-
Все, что вы делаете со своим ТВ, вы делаете на свой страх и риск. Автор этой статьи не несет никакой ответственности за ваш анал.
- Установить Skype на ТВ и запустить его 1 раз
- Скачать инсталлятор виджета SamyGo на флешку
- Запустить его с флешки
- .
- PROFIT!
Как они это сделали, демоны?
Вот как выглядит скрипт инсталлятора :
Скрытый текст
var Main = < >var widgetAPI = new Common.API.Widget(); var tvKey = new Common.API.TVKeyValue(); var runf1=1; var runf2=1; var LabelString=»Log: «; var usbPlugin; var FilePlugin; var nUSBCount; var commonFilePath; Main.onLoad = function() < alert(«Main.onLoad()»); this.enableKeys(); widgetAPI.sendReadyEvent(); Func(); >; Main.onUnload = function() < >; Main.enableKeys = function() < document.getElementById(«anchor»).focus(); >; Main.keyDown = function() < var keyCode = event.keyCode; switch(keyCode) < case tvKey.KEY_RETURN: case tvKey.KEY_PANEL_RETURN: widgetAPI.sendReturnEvent(); break; case tvKey.KEY_RED: if(runf2==1) < runf2=0; Log (» Please Wait 20-30 sec. «); setTimeout(«Func1(commonFilePath);»,3000); >else Log(‘Activated yet!’); break; case tvKey.KEY_ENTER: case tvKey.KEY_PANEL_ENTER: if(runf1==1) < runf1=0; Log (» Please Wait 20-30 sec. «); setTimeout(«Func1(commonFilePath);»,3000); >else Log(‘Activated yet!’); break; default: alert(«Unhandled key»); break; > >; function Log(Str) < var Label = document.getElementById(«LogLabel»); LabelString = LabelString+Str+» «; widgetAPI.putInnerHTML(Label,LabelString); >; function sleep(ms) < ms += new Date().getTime(); while (new Date() < ms)<>>; function Func() < usbPlugin = document.getElementById(«pluginStorage»); FilePlugin = document.getElementById(«pluginObjectFile»); nUSBCount = eval(«usbPlugin.GetUSBListSize()»); var Param; var r1=0; var r2=0; var r3=0; Log(«Found » + nUSBCount + » USB devices»); for (var i = 0; i < nUSBCount; i++) < var nid1 = eval(«usbPlugin.GetUSBDeviceID(«+i+»)»); var nid = parseInt(nid1); var VN + eval(«usbPlugin.GetUSBVendorName(«+nid+»)») + «»; var MN + eval(«usbPlugin.GetUSBModelName(«+nid+»)») + «»; nPartition = eval(«usbPlugin.GetUSBPartitionNum(«+nid+»)»); for (var j = 0; j < nPartition; j++) < var mntPath = eval(«usbPlugin.GetUSBMountPath(«+nid+», «+j+»)»); commonFilePath = ‘/dtv/usb/’ + mntPath; Param = «FilePlugin.IsExistedPath(commonFilePath + ‘/InstallSamygo/data/SamyGO.zip’)»; r1 = eval(Param); Param = «FilePlugin.IsExistedPath(commonFilePath + ‘/InstallSamygo/data/AutoStart’)»; r2 = eval(Param); Param = «FilePlugin.IsExistedPath(commonFilePath + ‘/InstallSamygo/data/libSkype.so’)»; r3 = eval(Param); if (r1 == 1 r2 == 1 r3 == 1) < Log(«The installation files found on USB: » + commonFilePath + VN + MN); return; >else < Log(«Some installation files not found on USB: » + commonFilePath + VN + MN); return; >> Log(«The installation files not found on USB: error»); > >; function Func1(Path) < var r=0; var Param; var str =»; Param=»FilePlugin.Copy (‘»+ Path +»/InstallSamygo/data/AutoStart’,’/mtd_rwcommon/moip/engines/Skype/AutoStart’)»; r = eval(Param); if (r==1) str = ‘OK’; else str = ‘No’; Log(«Step1: » + str) Param=»FilePlugin.Copy (‘»+ Path +»/InstallSamygo/data/libSkype.so’,’/mtd_rwcommon/moip/engines/Skype/libSkype.so’)»; r = eval(Param); if (r==1) str = ‘OK’; else str = ‘No’; Log(«Step2: » + str); if(runf2==1) < Param=»FilePlugin.Unzip(‘»+ Path +»/InstallSamygo/data/SamyGO.zip’,’/mtd_rwcommon/widgets/user/SamyGO/’)»; r = eval(Param); if (r==1) str = ‘OK’; else str = ‘No’; Log(«Step3: » + str); >Log(«Now press exit and restart tv»); >;
Уязвимость в функции FilePlugin.Copy, вызываемой через eval, которая позволяет копировать что угодно куда угодно. Скрипт берет и копирует подмененный libSkype.so, который умеет только запускать другой скрипт, и устанавливает сам виджет SamyGo.
Что же в виджите SamyGo?
Скрытый текст
var Main = < >var widgetAPI = new Common.API.Widget(); var tvKey = new Common.API.TVKeyValue(); Main.onLoad = function() < alert(«Main.onLoad()»); widgetAPI.sendReadyEvent(); document.getElementById(«anchor»).focus(); var FilePlugin = document.getElementById(«pluginObjectFile»); var Param1=»FilePlugin.Copy («/proc/self/cmdline», «$(sh /mtd_rwcommon/widgets/user/SamyGO/data/run.sh)/tmp/cmdline»)»; eval(Param1); >Main.keyDown = function() < var keyCode = event.keyCode; alert(«Main Key code : » + keyCode); switch (keyCode) < case tvKey.KEY_RETURN: break; >>
Ну это вообще пушка! Мы можем выполнять shell-команды из все той же функции, используя $()-синтаксис.
run.sh выполняет инсталляцию busybox и прочей мишуры, монтирует data.xfs, запускает telnetd и nc, который запускает sh при коннекте (если будут какие-то проблемы с /dev/pts и к telnet нельзя будет подключиться), запускает подобия init-скриптов.
Что внутри?
Внутри у нас 2-ядерный процессор с архитектурой ARMv7, с поддержкой NEON, я полагаю, семейства Cortex-A8, видео MALI 400, 512МБ оперативной памяти, ядро 2.6.35.13. В общем, довольно типичный «планшет» 2012 года.
cat /proc/cpuinfo
VDLinux#> cat /proc/cpuinfo Processor : ARMv7 Processor rev 0 (v7l) processor : 0 BogoMIPS : 1794.04 processor : 1 BogoMIPS : 1794.04 Features : swp half thumb fastmult vfp edsp neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0 Hardware : amber3 Revision : 0000 Serial : 0000000000000000
Ядро поддерживает SquashFS, FAT32, XFS, RFS (Самсунговская ФС, FAT32 + журналирование), NTFS (Драйвер tntfs от Tuxera). Есть поддержка модулей, в SamyGo поставляются несколько модулей ФС, FUSE загружается, а, например, ext2/3/4 — нет, т.к. в ядре нет символов для них.
На ТВ запущен самый обычный X-сервер с xf86-video-mali, за весь SmartTV отвечает 125-мегабайтный файл exeDSP (загружался в IDA PRO 17 минут до начала анализа), а вот со звуком интересней: alsa нет, и, похоже, exeDSP общается с /dev/system напрямую.
Что можно делать-то?
Да что угодно. Я лентяй, и стараюсь лишний раз не кросс-компилировать что-либо, поэтому просто взял Ubuntu Core, создал на флешке XFS-раздел, распаковал туда Ubuntu и вставил в ТВ. С armhf-версией были проблемы (всякие unknown instruction, там компилируют с thumb2?), поэтому нашел 12.04 armel.
Остается только вставить флешку в ТВ, подключиться по telnet и сделать:
chroot /dtv/usb/sda1 /bin/bash
И мы получим полноценную убунту 12.04.
mount —bind не работает, поэтому, если вам нужен proc и sys в chroot (а он вам будет нужен), используйте:
mount -t sysfs sysfs ./sys mount -t proc proc ./proc
Первым делом, я, конечно же, поставил mplayer. И знаете, работает! Медленно, конечно, и из выводов только x11 работает, но показывает! Я посмотрел вчерашний опенинг с субтитрами и без звука 😉
Скриншотов, вот, scrot’ом поснимал:
Прошу обратить внимание, разрешение скриншотов я не менял, и, на самом деле, разрешение у ТВ (по крайней мере у X-сервера) 1280×720!
Ну а дальше я решил поставить Ace Stream Engine и AceProxy для просмотра ТВ-стримов и Torrent прямо на ТВ. Для этого нам необходим Python, т.к. именно на нем написаны эти два продукта. Т.к. Ace Stream официально не выпускается для ARM, да и вообще, его разработчики несколько дикие, то мы возьмем распакованную версию для Raspberry PI, ну а AceProxy из моего репозитория
Собственно, нужные пакеты для Ace Stream написаны в ссылке, а для AceProxy нужен только python-gevent. Запускаем все это дело, можно даже открыть страницу статистики AceProxy во встроенном браузере ТВ:
На удивление, Ace Stream не особо грузит процессор (где-то на 15% судя по top), так что его вполне можно использовать на ТВ.
Теперь остается только взять какой-нибудь плеер (nStreamLmod, например) и сделать плейлист для AceProxy.
Что-то еще?
Это все proof-of-concept. Я все это делал чисто из кратковременного интереса и, скорее всего, не буду продолжать дальше. Однако, если кто-нибудь подопнет меня, как происходит работа со звуком, то можно будет смотреть видео с FLAC и Vorbis в MKV, просто запуская их вместе.
Будьте осторожны с SamyGo. По умолчанию, он запускает много сервисов, и доступ по telnet осуществляется без пароля.
Успехов!
Источник: habr.com
Запуск дистрибутива Manjaro ARM Linux 21.04 с SD-карты на ТВ-боксах Ugoos серии AM6
В середине прошлого года в кратком обзоре было показано как превратить Android ТВ-бокс Ugoos семейства AM6 в настольный компьютер Linux с помощью дистрибутива Armbian.
Сегодня в обзоре мы расскажем как запустить дистрибутив Manjaro ARM Linux 21.04 с SD-карты / USB накопителя на ТВ-боксе Ugoos AM6 Plus.
Что нужно для установки:
- Скачать архив *.img.xz содержащий файл образа. Убедитесь, что загрузка завершилась успешно.
- Скачать и установить программу Etcher и записать образ на SD-карту или USB накопитель (8 ГБ или больше).
- ТВ-бокс Ugoos семейства AM6.
Ссылки для скачивания и установка
Сначала нужно скачать архив с образом: Manjaro ARM 21.04 – XFCE или Manjaro ARM 21.04 – KDE Plasma и распаковывать его. В данном случае будет использоваться образ Manjaro ARM XFCE 21.04 (Manjaro-ARM-xfce-am6-plus-21.04.img).
Дальше нужно скачать программу balenaEtcher для записи образа (можно использовать и другую, например Win32 Disk Imager).
Установите программу balenaEtcher.
Теперь запустите программу balenaEtcher, выберите образ, SD-карту (как уже говорилось ранее, можно использовать USB-накопитель) и нажмите Flash.
Обычно после записи образа, нужно изменить параметры запуска в файле extlinux.conf, который находится в папке extlinux, но в данном случае, это делать не надо, поскольку по умолчанию уже выбрана dtb для Ugoos AM6 Plus:
LABEL Manjaro
LINUX / Image
INITRD / initramfs — linux . img
FDT / dtbs / amlogic / meson — g12b — ugoos — am6 — plus . dtb
APPEND root = PARTUUID = 61a254d0 — 02 rootflags = data = writeback rw console = ttyAML0 , 115200n8 console = tty0 no_console_suspend consoleblank = 0 fsck . fix = yes fsck . repair = yes net . ifnames = 0 quiet splash plymouth . ignore — serial — consoles
Теперь вставьте SD-карту / USB накопитель в устройство, подключите питание и чтобы начать загрузку с флешки, удерживайте кнопку «Recovery» в течении 5-6 секунд.
Первый запуск занимает много времени, поэтому наберитесь терпения и следуйте следующим командам на экране, когда они появятся:
- Раскладка клавиатуры
- Имя пользователя
- Дополнительная группа пользователей (необязательно)
- Полное имя
- Пароль для этого имени пользователя
- Пароль для root
- Часовой пояс
- Локализация
- Имя хоста
Затем система установит все эти параметры. Дождитесь появления экрана входа в систему.
Далее вам необходимо ввести пароль пользователя и немного подождать, пока загрузится рабочий стол XFCE.
Как видно в скриншотах ниже, в данной версии работает WiFi, как 5 ГГц, так и 2.4 ГГц, а также Ethernet подключение.
Bluetooth также работает и удалось без проблем найти и подключится к другому ТВ-боксу.
Вот некоторые другие подробности, после запуска дистрибутива XFCE на Ugoos AM6 Plus:
Более подробную информацию, поддержку и проекты для других устройств можно найти на официальном сайте Manjaro Team: www.fkardame.com
Рубрики AMLogic, Linux Метки Armbian, balenaEtcher, Manjaro, Ubuntu, Обзор, ТВ-бокс
Article Rating
Подписаться
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
1 Комментарий
Newest Most Voted
Inline Feedbacks
View all comments
1 год назад
Да, установите manjaro arm на свой ugoos am6 и дальше сидите с этой версией дистрибутива годовой давности еще несколько лет, потому что если вы решите обновиться через менеджер обновлений, то в окружении xfce получите сломанный курсор мыши, залипающий на несколько секунд(возможно из-за драйверов usb). Plasma KDE после обновления у вас вообще не запустится.
Насчет KDE не знаю, им не пользуюсь, по моему мнению оно тяжеловато для ugoos am6. А вот насчет XFCE подскажу. Чтобы не ломался курсор мыши нужно при обновлении пакетов вручную установить пакет linux-vim в исключение обновления и запустить обновление системы, т.е. всех остальных пакетов.
Дождаться завершения, перезагрузится и … радоваться если после перезагрузки все работает У меня работает. Просто при обновлении менеджер ищет в репах пакеты схожие по имени и выбирает более позднюю версию, как бы так и должно быть. И вместо обновления пакета linux-vim, он устанавливает пакет linux или что то похожее, содержащий драйверы для нашего устройства.
Он то(другой пакет) и ломает нормальную работу мыши. Вот так просто можно обновиться до последней версии ОС и не получить нервный срыв из-за залипающего курсора мыши. Всем добра.
Источник: cnx-software.ru