Ставимо Linux на AndroidTV приставку!

Опубліковано 10.11.2025, 17:15 в категорії YouTube

Raspberry Pi

Це - Raspberry Pi. Дуже крутий та потужний одноплатний комп'ютер, ситуаціям використання якого немає меж. В ньому багато пам'яті, в міру потужний процесор, та присутня велика кількість GPIO пінів, і все це буквально вміщається на вашій долоні. Але на противагу всьому цьому, в нього є один суттєвий недолік - ціна. Цей Raspberry Pi з'явився в мене завдяки моєму підписнику - Артему, і якби не він, навряд чи я колись зміг би доторкнутись до цього легендарного одноплатного комп'ютера. Все таки коштують вони ну дууже багато.

Тому сьогодні розглянемо одну альтернативу, подивимось на цікаві проєкти які на ній можна зпустити, та розберемось, чи зможе вона замінити Raspberry Pi.

S905

Мова сьогодні піде про Android-TV приставки на процесорі S905. Колись вони були доволі популярні, адже дозволяли з будь якого телевізора зробити щось на кшталт СмартТВ. Але згодом, СмартТВ дешевшали, люди поступово переставали дивитись телевізор, і так далі, що в решті призвело до того, що ці приставки почали користуватись все меншим попитом.

І на щастя для нас, на приставки з чипом S905 всередині, можна доволі легко встановити Linux, і використовувати як такий собі міні сервер, але давайте про все по порядку.

Перевага №1: Ціна

Першою перевагою такого рішення є звісно ціна. Так як люди перестали ними користуватись, і бажаючих купити їх не так вже й багато, їх доволі часто можна знайти по доволі приємним цінам на OLX. Інколи звісно треба помоніторити сайт певний час, щоб знайти вигідне оголошення, але, хто шукає, той завжди знайде.

Головне перед покупкою впевнитись, що ви купуєте приставку саме на S905 чипі. На деякі інші чипи звісно теж можна поставити Linux, але S905 в цьому плані найменш проблемний, та мабуть найбільш поширений серед наших оголошень.

Оголошення OLX

Я знайшов ось таке ось оголошення за 300 гривень, і замовив його OLX доставкою через УкрПошту, тому разом з доставкою ця приставка обійшлась мені в 320 гривень.

Перевага №2: Комплектація

Наступна перевага - комплектація. Давайте поглянемо, що я отримав за ці 320 гривень.

AndroidTV приставка

По перше це звісно сама приставка. Бонусом до плати, ми отримали ще й корпус, та невеличкий радіатор всередині. У випадку Raspberry Pi, все це треба докупати окремо.

Блок живлення

По друге - блок живлення. Звісно деякі люди лишають його собі, коли продають приставку, але тим не менш, в цьому оголошенні він був, тож це також плюс, адже в комплекті з Raspberry Pi його немає.

Пульт та дріт

Ну і по третє - HDMI дріт, та пульт. В нашому випадку вони не потрібні, але це все одно приємні дрібниці, які можуть бути корисними деінде.

І в цілому на цьому основі переваги закінчуються, і починаються недоліки. Оперативної пам'яті ця приставка має менше (в моєму випадку 1 GB проти 4 GB в Raspberry Pi), не має USB 3.0, та має доволі повільний Ethernet (100 Mbps проти 1000 Mbps в Raspberry Pi).

Але, з такою різницею в ціні, все це можна пробачити.

Давайте поглянемо що нас чекає всередині. Гвинтів тут немає, а отже скористаємось металевою лопаткою щоб відокремити нижню частину корпуса. Плату фіксують 4 гвинти. Виймаючи плату, будьте обережні, бо WiFi антена в AndroidTV боксах зазвичай приклеєна до корпусу. Тут це невеличкий диполь, хоча інколи буває і патч антена, виконана у вигляді шлейфу. А якщо прям пощастить - антена буде на платі у вигляді доріжки.

Плата приставки

Ось така тут гарна плата.

Як я вже казав, Raspberry Pi надає користувачу цілу купу GPIO пінів, серед яких є багато різних шин даних - I2C, SPI, та навіть jTAG організувати можна. s905 теж має купу GPIO, адже на його основі навіть існують повноцінні одноплатні комп'ютери, на кшталт ODROID C2. Але проблема в тому, що плати для ТВ приставок проєктуються зовсім під інші задачі, тому більшість GPIO тут не розведено.

Звісно, якщо мати певний досвід, та дослідити плату, то можна знайти багато цікавого.

Місце під SPI флешку

Наприклад сюди скоріш за все запаюється флешка яка містить в собі Bootloader, а отже звідсіля можна дістати шину SPI. Флешка до речі відсутня, бо Bootloader скоріше за все зашитий в eMMC пам'ять розпаяну поруч з процесором.

Місце під DS1307

Ось тут, судячи по компонуванню, повинна бути мікросхема яка рахує час - DS1307, або щось схоже. Розпіновка збігається, і можна побачити місце під кварц, діод по живленню, та коннектор для батарейки резервного живлення. А отже сусідні два резистори, це резистори підтяжки по лінії I2C, і з них можна дістати шину I2C для власного використання.

Світлодіод

Ось цей ось світлодіод керується за допомогою GPIO, тож якщо випаяти його, можна отримати пару вільних GPIO пінів під свої задачі.

UART шина

Ну а ось тут можна побачити UART шину.

Тобто як бачите, здавалось би і тут всього вдосталь, але по перше все це доволі ситуативно - різні приставки мають різні плати, тому десь будуть піни SPI та I2C, а десь не будуть. А по друге - ну це навіть смішно порівнювати з Raspberry Pi - в той час як в Raspberry Pi ми маємо зручну колодку, до якої легко приєднати дроти, на платі приставки нам доведеться припаюватись до крихітних резисторів. Тому в цьому плані перевага беззаперечно за Raspberry Pi.

Встановлюємо Linux


Armbian


Гаразд, давайте нарешті встановлювати Linux. Для цього нам знадобиться карта пам'яті, бажано хоча б 8 ГБ або більше, та якийсь картридер, щоб підключити її до комп'ютера. Ставити ми будемо Armbian - це спеціалізовані збірки Linux під різні одноплатні комп'ютери на основні Ubuntu та Debian. Хоча за бажанням на цю приставку можна і Arch Linux ARM поставити.

І так, переходимо на сайт Armbian, та знаходимо тут розділ з приставками на цьому процесорі, відкриваємо, трохи скролимо вниз, і бачимо тут різні образи системи.

Desktop образи

Desktop образи являють собою повноцінні образи системи з графічним середовищем та різними програмами. Щось типу Raspberry Pi Os, якщо проводити паралель. Так як ресурсів в цієї платки і так не багато, раджу вам відмовитись від Desktop образів, і зробити собі так званий Headless Сервер, тобто сервер, який не містить графічного серверу, і налаштовується через термінал, або через SSH.

Server образи

Для цього нам потрібен образ Server. Обираєте цікавлячий вас дистрибутив, та завантажуєте. Я оберу Debian.

Після завантаження, ви отримаєте архів з образом який треба записати на SD картку. Для цих задач вікі Armbian-a радить нам використати програму USBImager. Переходимо в репозиторій, і завантажуємо програму під наявну в вас операційну систему. Я завантажую під Linux.

USBImager

Запускаємо програму, та відкриваємо тут архів з образом (1), після чого обираємо SD картку (2), натискаємо кнопку Write (3), та чекаємо. Якщо у вас програма не може відкрити SD карту, впевніться що користувач належить до групи disk. Подивитись групи до яких належить користувач можна за допомогою команди:

groups

Якщо там немає групи disk, можете додати її наступною командою:

sudo usermod -aG disk $USER

Після цього треба буде перелогінитись, щоб Linux отримав інформацію про нову групу.

А більш досвідчені лінуксоїди можуть записати образ використовуючи команду dd - вказати образ як input file, а SD карту - як output file. Перед цим звісно архів треба розпакувати. Щось типу:

xz -d Armbian_community_25.11.0-trunk.395_Aml-s9xx-box_trixie_current_6.12.56.img.xz
dd if=Armbian_community_25.11.0-trunk.395_Aml-s9xx-box_trixie_current_6.12.56.img of=/dev/sdX status=progress

Так на мою думку набагато зручніше та легше, але треба розуміти що ви робите, бо якщо вказати неправильний output file, то ви втратите свої дані, так як запишете образ наприклад поверх вашого системного диску.

Трохи почекавши, отримуємо SD карту з встановленим на неї Armbian-ом. Тепер треба підготувати її до запуску. На карті пам'яті в нас з'явилось два розділи:

  • armbi_root
  • armbi_boot

Відкриваємо armbi_boot. Перш за все, нам треба обрати правильний Bootloader, в залежності від того, яка саме ревізія процесора встановлена у вашій приставці. В корні розділу лежить купка файлів:

  • u-boot-s905
  • u-boot-s905x2-s922
  • u-boot-s905x3
  • u-boot-s905x3-ugoosx3
  • u-boot-s905x-s912

Наприклад в мене стоїть звичайний s905, відповідно мені потрібен файл u-boot-s905. Треба зробити його копію, і перейменовувати в u-boot.ext - Bootloader обрано.

Наступна задача - обрати необхідний Device Tree Blob файл. Вони знаходяться в папці dtb/amlogic. Це бінарні файли, які містять в собі інформацію про плату та компоненти на ній, щоб Linux міг з цим всім взаємодіяти. Це мабуть найскладніша задача, адже вам доведеться ледь не вгадувати, який з цих файлів підійде для вашої приставки.

Можна спробувати пошукати інформацію в інтернеті стосовно вашої приставки, гуглити фотографії приставок по назвам dtb файлів, або просто обирати навмання. Трішки заморочено звісно, але така вона плата за економію. Якщо ви вже стикались з цим, можете в коментарях під відео версією статті написати назву приставки, та який dtb файл для неї підійшов, я додам це сюди, в кінець статті. Можливо комусь це трішки спростить життя.

Мені повинен підійти ось цей dtb файл, - meson-gxbb-vega-s95-pro.dtb якщо прогуглити його назву, то можна знайти приставки 1 в 1 схожі на мою, хіба що з іншим логотипом. І SATA роз'ємом. І більшою кількістю пам'яті. Шось вже не дуже схоже))0 Але тим не менш, він працює.

Копіюємо назву файлу, та повертаємось в корінь розділу. Відкриваємо папку extlinux, та будь яким текстовим редактором модифікуємо файл extlinux.conf - саме тут треба вказати обраний dtb файл, на 4му рядку, хоча для почату можете спробувати і стандартний. Заміняємо назву Device Tree Blob-а в цьому рядку на необхідний, зберігаємо файл, і на цьому SD карта готова до запуску. Ось так в мене виглядає extlinux.conf:

label Armbian_community
  kernel /Image
  initrd /uInitrd
  fdt /dtb/amlogic/meson-gxbb-vega-s95-pro.dtb
  append root=UUID=a76e06fd-7ea0-45ef-84ed-dd7cbd72131b rootflags=data=writeback console=ttyAML0,115200n8 console=tty0 rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles

Але не поспішаємо включати приставку. Спочатку, нам треба знайти на платі певну кнопку, яку треба буде затиснути перед включенням. Конкретно на цій приставці, кнопка знаходиться внизу плати, і в корпусі під неї є спеціальний отвір.

Кнопка на нижній стороні плати

Також інколи кнопку встановлюють навпроти 3.5мм роз'єму під аудіо/відео, якщо він є. Її можна натиснути чимось діелектричним, наприклад зубочисткою.

Кнопка навпроти AV

Цю кнопку треба буде затиснути перед включенням, щоб приставка запустилась з SD карти. Також, так як система за замовчуванням не знає параметрів вашої WiFi мережі, її треба підключити до вашої локальної мережі через Ethernet, щоб можна було провести первинні налаштування, і наприклад підключитись до WiFi, якщо вас не влаштовує вита пара.

Включаємо!

Тож тепер вставляємо карту пам'яті в приставку, підключаємо Ethernet кабель, затискаємо кнопку, і подаємо живлення. Чекаємо секунд 5, і відпускаємо кнопку. Тепер слід почекати хвилин 5, щоб все налаштувалось, пройшла ініціалізація, та запустився Linux. Перший запуск може тривати довше ніж зазвичай. Через час заходимо в налаштування роутера, і дивимось який IP було видано для приставки.

IP адреса

За бажанням можете зробити цей IP статичним, щоб він не змінювався.

І відповідно за цим IP можна підключитись до приставки по SSH, та взаємодіяти з нею, наприклад:

ssh root@192.168.1.146

Підключаємось як root, ввівши пароль 1234. Проводимо первинні налаштування, такі як встановлення пароля, створення користувача, вибір локалі, і так далі, і, я вас вітаю, на приставку встановлено Linux! Ну, точніше не зовсім встановлено, адже вона поки просто запустилась з SD карти, але за допомогою спеціальної команди ви можете перезаписати наявний в ній Android на Armbian. Це не тільки підвищить швидкість пам'яті, а й дозволить використовувати SD карту для інших цілей.

fastfetch

Але, це ми розглянули ідеальну ситуацію, коли ви вгадали Device Tree, та все запрацювало з першого разу. Якщо вам не пощастило, і ви не вгадали, цілком можуть виникнути помилки. І щоб не чекати кожного разу по п'ять хвилин, нам треба якимось чином дивитись логи запуску і Linux, і бажано Bootloader-а. Покладатись на відео вихід не варто, адже там не відображається і половина потрібних логів.

Тому тут в гру вступає UART шина, про яку я розповідав раніше. За допомогою ось такого недорогого адаптера на мікросхемі CH340, можна легко підключитись до неї, і не тільки читати логи, а й керувати як Bootloader-ом, так і Linux-ом на приставці.

USB to TTL на мікросхемі CH340

Про UART шину в мене є ціле окреме відео, а також стаття тож якщо для вас це щось нове, раджу обов'язково ознайомитись - там ви дізнаєтесь багато цікавого. Якщо вам пощастило, то контакти будуть підписані. Якщо не пощастило, то доведеться визначати їх самотужки. На щастя це не складно, і це можна зробити як візуально, так і за допомогою мультиметра. Більш детально про це я розповідав у відповідних відео та статті.

Приклад візуального розпізнавання контактів

Звідси нам потрібна земля, та Rx/Tx. Підключаємо землю до землі перехідника, а Rx/Tx - хрест навхрест.

Далі підключаємо все це до комп'ютера, і запускаємо будь який емулятор послідовного порту. Я використовую picocom. Швидкість доведеться підбирати, але скоріше за все вона буде стандартна - 115200:

picocom /dev/ttyUSB0 --baud 115200

Подаємо живлення на приставку, і можемо спостерігати логи запуску як бутлоадера, так і самого лінукса через певний час.

Логи по UART

Тож тепер ви знаєте і як встановити Linux на такі приставки, і як їх якщо що дебажити! А якщо ви не знаєте навіщо все це треба, то я як раз підготував для вас деякі приклади використання такого міні сервера. Давайте поглянемо.

Блокувальник реклами


Pi-Hole


Я думаю багато хто чув про проєкт під назвою Pi-Hole. Це мережевий блокувальник реклами, який блокує рекламу на рівні DNS запитів. Тобто щоб реклама зникла, вам не треба нічого встановлювати в браузері, або на телефон, все буде опрацьовуватись на вашому міні сервері - він сканує DNS запит, і якщо розуміє що це реклама - блокує його. Якщо не реклама - то пропускає далі, на реальний DNS сервер, який повертає необхідне доменне ім'я.

Таке рішення ніяк не навантажує ваш основний девайс, та не впливає на швидкість інтернету, і дозволяє блокувати рекламу навіть на пристроях, на яких встановлення блокувальника реклами або дуже складне, або навіть неможливе. І все це ще й з прикольним веб-інтерфейсом, який відображає різну статистику, та надає змогу зручно налаштовувати PiHole, та блокувати запити якщо реклама десь таки пролізла.

Веб-інтерфейс Pi-Hole

Ну і бонусом, тут ще й можна трішки проаналізувати, що коїться у вашій домашній мережі.

Не дивлячись на назву, PiHole можна встановити ледь не на будь що, де є Linux, і наш міні сервер не є виключенням. Гарне відео на тему PiHole було на каналі Red Sneakers Production, тож можете переглянути по цьому посиланню.

Торрент сервер

Наступний приклад використання - невеличкий торрент сервер, або ж seedbox. Хоч дана приставка і не може похвалитись швидким Ethernet-ом, та потужними обчислювальними здатностями, вона все одно буде непоганим торрент сервером, адже вона буде працювати 24 години на добу, на відміну від вашого комп'ютера, який ви я сподіваюсь хоч інколи вимикаєте))0

І торрент це не обов'язково про піратство! Наприклад Armbian, та інші Linux дистрибутиви часто розповсюджуються за допомогою торренту, адже це просто швидкий, зручний, та надійний децентралізований протокол для обміну файлами. Нещодавно до речі Олександр Мілюхін, дуже крутий чувак, переклав та озвучив одне доволі цікаве есе, і розповсюджує він його в тому числі і за допомогою торренту.

В мене, на дуже схожій AndroidTV приставці стоїть сервер qBittorrent. Він має вебінтерфейс, який 1 в 1 схожий на звичайну декстопну програму, тому користуватись ним дуже легко та інтуїтивно.

Веб-інтерфейс qBittorret

qBittorrent навіть написали круту інструкцію по встановленню сервера, тому раджу ознайомитись з нею по посиланню.

Власний WebSDR

OpenWebRX це дуже крутий проєкт, який дасть вам змогу використовуючи будь який SDR приймач, створити свій власний WebSDR!

WebSDR - це сервер, який дозволить зручно та віддалено користуватись можливостями вашого SDR. Тобто відкривши IP адресу сервера в браузері, та налаштувавшись на потрібну частоту, ви зможете чути радіосигнал прямо в браузері.

Веб-інтерфейс OpenWebRX

Та і не тільки чути, адже OpenWebRX має купу вбудованих декодерів, і дозволяє без проблем декодувати штуки типу FT8, APRS, та навіть DMR, і ще купу іншого.Бонусом, більшість сигналів ще й на мапі відображати можна, адже в них присутній QTH (або Mainhead локатор) радіоаматора.

Штука дуже цікава, і має ряд переваг порівнюючи з умовним rtl_tcp, адже дозволяє використовувати різні SDR, ще й з будь якого пристрою, де є браузер, хоча і rtl_tcp теж має свої переваги. До речі ще є форк, OpenWebRX+, в якому ще більше всяких приколів, декодерів (наприклад SSTV), і так далі, але я поки з ним ще не розбирався.

Повноцінним WebSDR це звісно складно назвати, адже з коробки він доступний лише в вашій домашній локальній мережі, але наступний проєкт як раз дозволить це виправити.

VPN


Wireguard


Багато хто сприймає VPN як просто штуку для обходу різних блокувань. А дарма! Адже VPN, Virtual Private Network, це технологія в першу чергу для побудови захищених віртуальних мереж. І ці віртуальні мережі, дозволять вам наприклад підключитись до вашої домашньої мережі з будь якої точки світу, та отримати доступ до всього, що хоститься у вас вдома. Будь то розглянуті до цього PiHole, торрент сервер, та WebSDR, або навіть щось інше, що хоститься на іншому домашньому сервері.

Приклад структури VPN

Прикладом гарного VPN з відкритим кодом є Wireguard. Його доволі легко встановити, та налаштувати, на сайті є дуже детальна інструкція. Бонусом є те, що така VPN мережа не залежить від сторонніх серверів, і з'єднується напряму з вашим сервером, якщо таке звісно дозволяє провайдер. Це і безпечно, і надійно.

А разом з якимось Dynamic DNS, наприклад FreeDNS, вам навіть не треба буде знати ваш домашній IP, адже можна буде підключитись за безкоштовним доменом. І цей же міні сервер буде оновлювати запис в Dynamic DNS в разі зміни вашого IP.

Висновки

Тобто ось настільки багатий функціонал має ця невеличка коробочка яка обійшлась мені всього в 320 гривень! Звісно це лише маленька частина того, що на ній можна реалізувати, можна хоч сайт хостити, все обмежується лише вашою фантазією, ну і трохи залізом, все ж таки воно тут не супер потужне.

Тож відповідаючи на питання з превью статті - повноцінною заміною Raspberry Pi цю штукенцію звісно назвати не можна, особливо якщо для вас важливо мати GPIO піни. Але і грошами на вітер вона уж точно не являється! Це дуже гарна та бюджетна альтернатива, якщо ви готові до певних челенджів. Є безліч ситуацій, коли застосувати такий міні сервер буде більш доцільно, ніж Raspberry Pi.

Я саме так зараз і роблю, в мене на AndroidTV приставці хостяться деякі штуки, а Raspberry Pi в мене використовується для різних експериментів, включаючи ті, що ви могли бачити в попередніх відео та статтях.

Хоча якщо треба буде хостити щось більш важке, то я таки використаю Raspberry Pi, бо вона в мене вже є :))

ТВ приставка та Raspberry Pi

Post Scriptum

Це текстова версія мого відео, доступного за посиланням.

Таблиця з DTB файлами

Я поки стикався лише з двома приставками, відповідно знаю лише два dtb файли. Тому був би радий, якщо ви в коментарях під відео поділитесь власним досвідом, та надасте приклади інших приставок, та підходящих для них dtb файлів!

Дякую Vanyaperyan за інформацію про X96 mini, а також Вадиму Старченко за інформацію про Gi Lunn 18!

За інформацію про Mini M8S Pro вдячний old_linux_user!

За інформацію про Mecool KM9 Pro Honour з ревізією плати 1.2 вдячний Юрію Кузьменко!

Якщо у вас на приставці OzoneHD 4K не працюють USB - спробуйте обрати meson-gxl-s905x-nexbox-a95x.dtb. Дякую itz-me-zappex за інформацію!

Назва приставки dtb файл
OzoneHD 4K (S905, 1/8 GB) meson-gxl-s905x-p212.dtb
meson-gxl-s905x-nexbox-a95x.dtb
Victsing VITV-1 (S905, 1/8 GB) meson-gxbb-vega-s95-pro.dtb
X96 mini (S905W, 2/16) meson-gxl-s905w-tx3-mini.dtb
Gi Lunn 18 (клон Mecool m8s) meson-gxl-s905w-p281.dtb
Mini M8S Pro meson-gxm-q201.dtb
Mecool KM9 Pro Honour (1.2) meson-g12a-sei510.dtb