Продолжая тему «что можно сделать из обычной ТВ‑приставки» — можно сделать, например, очень экономичный и компактный десктоп.
В обычной жизни такое может быть никогда и не понадобится, но всякое в жизни бывает...
Питание такого компьютера — всего 5в, его можно подключить к аккумулятору через обычную USB‑автозарядку, в сочетании с 12-вольтовым монитором получится этакий «компьютер для автономщика», если конечно вы дружите с Линуксом.
В общем, идея была собрать максимально недорогой и компактный десктоп, с возможностью питания от аккумулятора.
За основу взят TV‑box на Андроиде, под названием Z8 — внутри него 64-битный ARM процессор, 4 Гб ОЗУ и 32 Гб «диск». Цена этого девайса на тот момент была в районе 1300 рублей.
К нему подошла прошивка Armbian‑unofficial_24.5.0-trunk_Transpeed-8k618-t_bookworm_edge_6.7.12_xfce_desktop.img, это основанная на Дебиане ОС, в данном случае с поддержкой Xfce.
Я сейчас специально не уточняю где именно ее можно скачать, потому что китайские ТВ‑приставки известны своей непредсказуемостью, и то, что подошло у меня — может не подойти у кого‑то другого, тут нужно только понимать направление поисков, а искать все равно придется самому.
Для других моделей, например X88mini13 — соотвественнно, нужна будет другая прошивка, например со словами «Hinlink‑h28k» в названии — но принцип все тот же, внутри АРМ 64-битный с 4 Гб ОЗУ.
Компьютеру нужна клавиатура и мышь. Как оказалось, удобно использовать беспроводную.
У меня когда‑то был старый комплект, Genius, с коробочкой‑ресивером на проводе, где клавиатура постоянно отваливалась, не хотела работать дальше метра от ресивера, терялись нажатия и т. д., в общем, всё плохо.
Но сейчас появились новые модели, где ресивер — небольшая «заглушка» в USB‑порт, дальность до 10 метров, все стабильно и хорошо.
Есть полноразмерные, но поскольку цель «максимально недорого и компактно» — взял вот такую (пульт для сравнения размеров):
Стоимость этой клавиатуры менее 400 р. Работает прекрасно, имеет подсветку кнопок, тачпад, без которого мне уже сложно представить комфортную работу, USB‑зарядку.
Хотя, конечно, мелкая — но так и было задумано.
Остается монитор. Вот тут, к сожалению, у меня ничего подходящего, кроме телевизора, не нашлось. Разрешение экрана 1920×1080, FullHD, вход HDMI.
Пожалуй, в заданной концепции монитор — самая дорогая и самая энергоёмкая деталь, 12-вольтовые модели есть, но их надо будет еще купить.
Ок, устанавливаем прошивку, точнее даже — создаем LiveSD, записывать на внутреннюю память необязательно, флеш‑карты на 64Гб сейчас недороги.
И вот на экране — графическая оболочка, Xfce, браузер, можно установить Gimp, Office — в общем всё работает, весь привычный софт. Можно смотреть фильмы — звук идет через HDMI на телевизор, именно поэтому ТВ удобнее. Даже в игры через DOSBOX играть можно.
В целом цель почти достигнута (осталось найти монитор с динамиками или мини‑ТВ с хорошим экраном).
А вот дальше — некоторые особенности настройки Xwindow
Дело в том, что по умолчанию размер экрана, на который настроены там Иксы — 1024×768.
Точнее даже так, они НЕ настроены, этот режим у них идет по умолчанию. А телевизор, как я уже говорил, 1920×1080.
Причем телевизор с претензией на «умность», поэтому пытается адаптироваться, подстраивая свое разрешение, но не всегда — слетает при переключении источников ввода.
По этой причине картинка в разное время то занимает весь экран, то уменьшается и располагается по центру, ну и вообще маловато как‑то 1024×768.
Есть как минимум два способа настроить большее разрешение:
Можно использовать команду xrandr.
Если запустить ее без аргументов — она выведет на экран список доступных режимов, можно выбрать нужный, например так:
xrandr -s "1024х768"
Но нам нужен 1920х1080, а его нет. Добавляем, для этого надо доустановить еще одну программу:
apt install xcvt
cvt 1920 1080
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
Мыполучили строку Modeline, в данном случае «1920×1080_60.00» это название режима, а остальное — описание параметров. Название можно сократить до «1920×1080» для удобства.
Теперь нужно посмотреть, какие устройства вывода есть:
xrandr --listmonitors
0: +HDMI-1 1920/508x1080/286+0+0 HDMI-1
Есть монитор HDMI-1. Запомним, и добавим режим:
xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode HDMI-1 "1920x1080"
xrandr -s 1920x1080
Создали новый режим, добавили его к монитору HDMI-1 и переключились на него. Всё хорошо, теперь эти команды можно куда‑нибудь записать, чтобы они выполнялись при запуске Xwindow.
Например, есть такой каталог /etc/X11/Xsession.d, в нем лежат скрипты, которые выполняются при запуске X‑сессии. Если создать там свой скрипт с этими тремя командами — после логина в систему они будут выполняться, создавая нужный режим и переключаясь в него.
Но это не совсем правильно, потому что, во‑первых, они будут выполняться при каждом входе в систему, каждый раз создавая режим заново даже если он только что был создан, а во‑вторых потому, что есть еще «графический логин», процесс который стартует раньше и выводит окно запроса пароля, display manager — он ничего не знает о новом режиме, и вот тогда‑то и будет показывать то на весь экран, то в центре прямоугольником.
В данном случае display manager — lightdm. Это можно увидеть, посмотрев скрипты запуска в /etc/init.d/
Он сам запускает Xorg, который еще ничего не знает про новые режимы и по прежнему работает «по умолчанию».
Поэтому правильный вариант — использование xorg.conf
Файлы конфигураций xorg.conf содержат секции, описывающие устройства ввода‑вывода, с которыми работает X‑сервер, обычно они лежат где‑то в /etc/X11/ или /usr/share/X11/, в данном же случае есть специальные каталоги /etc/X11/xorg.conf.d/, в которых лежат отдельные файлы конфигурации — но нужного нам там нет, и его надо создать.
Для начала нужно зайти по сети, чтобы спокойно работать, независимо от работы X‑сервера.
Затем убить процесс display manager:
/etc/init.d/lightdm stop
При этом выключится X-сервер, на экране будет пустота, а мы будем создавать конфигурационный файл.
Для начала можно попробовать команду:
X -configure :0
В идеале она должна создать в текущем каталоге файл-заготовку, которую затем можно скопировать в /etc/X11/xorg.conf.d/, но в нашем случае оно ругается на ошибку:
List of video drivers:
modesetting
fbdev
No devices to configure. Configuration failed
Это не плохо. Мы получили названия двух имеющихся видеодрайверов, и можем создать конфигурацию вручную:
Section "Device"
Identifier "dev1"
Driver "modesetting"
#Driver "fbdev"
EndSection
Section "Monitor"
Identifier "mon1"
Modeline "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
#Modeline "1024x768" 60.80 1024 1056 1128 1272 768 768 770 796
#Modeline "800x600" 38.21 800 832 976 1008 600 612 618 631
#Modeline "640x480" 24.11 640 672 760 792 480 490 495 50
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "mon1"
Device "dev1"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1920x1080"
#Modes "1024x768" "800x600" "640x480"
EndSubsection
EndSection
Что здесь происходит:
Создаются три секции:
Device — описание видеовыхода, в данном случае два возможных варианта драйверов, один из них закомментирован, и идентификатор.
Monitor — описание монитора. Это именно монитор, с указанием режимов работы которые он поддерживает. Исторически, для CRT‑мониторов тут можно было выставлять настройки синхронизации развертки, точно настраивать позицию на экране и прочее — сейчас нам это все не нужно, просто вставляем строку Modeline, полученную ранее (остальные чисто для примера, закомментированы)
Screen — экран, тут указывается, с какой видеокартой и каким монитором он работает, глубина цветности, доступные режимы и т. д.
Нам нужен единственный выдеовыход, единственный монитор и один режим.
Теперь этот файл нужно сохранить в /etc/X11/xorg.conf.d/, и можно проверять.
От рута запускаем:
X :0
Программа запускается, не вылетает, ошибок не пишет, но на экране пустота — так и должно быть.
Вот теперь можно запустить обратно display manager — он должен работать уже в режиме 1920×1080.
Можно перезагружаться — всё должно работать.
Остается последняя проверка: зайти юзером через графический интерфейс и написать:
xrandr
Эта команда должна вывести список доступных режимов, и среди них «1920×1080», отмеченный как текущий.
Кстати, если попробовать выбрать другой драйвер, fbdev — будет доступен единственный режим «1024×768», то есть тот драйвер здесь не подходит.
Ах да, остался русский язык ввода. Это просто — нужно выполнить под юзером команду:
setxkbmap -layout us,ru -option grp:caps_toggle
Теперь Caps_lock переключает клавиатуру Рус/Лат.
А обычное поведение Caps_lock, фиксация БОЛЬШИХ БУКВ — Shift+Caps_lock
Ну, или кто предпочитает другие сочетания — alt_shift_toggle, ctrl_shift_toggle...
Поместить эту команду можно хоть в ~/.profile, хоть в /etc/X11/Xsession.d/xxx
Работает независимо от используемого DE.
Но зачем? Есть же ноутбук!
Конечно есть. Причем работающий от тех же 12 вольт, которые, предположительно, есть от аккумулятора, и с тем же Линуксом.
Просто потому что так — тоже можно. Для чего‑то же десктопы используют до сих пор...
Комментарии (13)
4chemist
21.01.2025 18:16Была идея сделать из андроид приставки подобие AirPlay. Подключал оптический выход приставки к оптическому входу ресивера с акустикой. Дебиан запускал с microSD и настраивал там PulseAudio для получения аудиопотока из сети и трансляцию его на оптический выход. Трансляция аудио с другой линукс машины без вопросов. С windows куча приседаний начиная от виртуальной звуковой карты, либо портированного PulseAudio, еще какой-то софт с гитхаба пробовал, всё не понравилось. Преследовали щелчки если буферизацию маленькую ставил, отставание звука от видео, отваливались клиенты если транслировал с двух источников, приставка не справлялась с передискретизацией аудио, и другие "прелести". Тогда отложил эту идею в долгий ящик, даже не опробовав трансляцию со смартфона. Ваша статья пробудила воспоминания, надо будет опять изучить вопрос.
Grey83
21.01.2025 18:16Я сейчас специально не уточняю где именно ее можно скачать
Да в принципе особо без разницы откуда armbian качать: там основная проблема – работающий dtb-файл, с которым всё железо определяется.
Мне, например, пришлось под свой бокс из 2 файлов собирать, чтобы и фронтальный дисплей с синезубом, и wi-fi работали.Для начала нужно зайти по сети, чтобы спокойно работать, независимо от работы X‑сервера.
Затем убить процесс display manager:А можно просто открыть консоль и вбить в ней
sudo thunar
, затем перейти в нём в нужный каталог, открыть файл конфигурации и отредактировать его в текстовом редакторе, а потом сохранить.JBFW Автор
21.01.2025 18:16Не всё так просто: конкретно у Z8 используется DDR3, для инициализации которой нужен правильный SPL, то есть еще до того как вы подберете dtb. Иначе у нее просто памяти не будет, не определится RAM.
Ну и смотря что нужно - тут вот тоже фронтальный дисплей не определился, да и "не нужОн!".А можно просто открыть консоль и вбить в ней
sudo thunar
, затем перейти в нём в нужный каталог, открыть файл конфигурации и отредактировать его в текстовом редактореЭто если вы уже знаете что именно там редактировать. Предположим что не знаете - потому что "старого" нет, какой драйвер - неизвестно, и любой косяк приведет к тому что вместо "sudo thunar" получим тот самый черный экран нестартовавших Иксов, и все равно придется лезть по сети разбираться. Ну или к serial консоли припаивать проводки.
Grey83
21.01.2025 18:16Не всё так просто: конкретно у Z8 используется DDR3, для инициализации которой нужен правильный SPL, то есть еще до того как вы подберете dtb.
Что neofetch показывает, кстати? Он в армбиан идёт в комплекте (как и MC).
JBFW Автор
21.01.2025 18:16Кстати, я бы ему особо не верил. Вот вывод с машинки X88mini13:
Host: Rockchip RK3528 X88PRO DDR4 V10 Board
Вот это неправда, точнее, там DDR3, и SPL с поддержкой DDR3, а вот сама ОС с dtb - от другого образа, с SPL без поддержки DDR3, поэтому тут оно пишет про DDR4....
Тому, что писало в консоли, всё-таки больше верю, из-за этих DDR пришлось выпаивать чип памяти с некорректным загрузчиком
Grey83
21.01.2025 18:16Вообще, как оказалось, основная проблема устройств на arm с линухом на борту - малое количество доступного софта под эту архитектуру.
И box86/64 тут не всегда поможет: у меня, например, не стартуют клиенты телеги из-за отсутствия необходимых инструкций (их там с десяток таких), хотя котатограм из флэтпака запускал как-то.Ну и в качестве браузера Thorium из deb-пакета нормально работает (Min, Falkon и Dillo так себе юзать оказалось, потому попробовал и снёс).
Grey83
21.01.2025 18:16Ну и ещё можно поставить Manjaro ARM как на флешку, так и на eMMC.
Но опять же нужно найти рабочий dtb под свой бокс. Этот файл должен подойти как к armbian, так и к Manjaro, главное его в стартовый конфиг прописать.
Ну и можно в этом конфиге менять строчку с этим dtb, пока не найдёшь наиболее подходящий. Если его на форуме 4pda/armbian/etc сразу не узнаешь, конечно.
Worky
Не, проще Хром\Бук-Бокс купить и обычный х86-64 иметь со всеми вытекающими.
JBFW Автор
Это неспортивно )
serega404
Согласен, я вот ещё из спортивного интереса поставил proxmox на ТВ приставку (rk3318 1.1ghz)... А после чего вернул android и избавился от устройства, поняв то что такой процессор не подойдёт даже для каких либо серверных нужд.
JBFW Автор
Ну и напрасно. Подобные у меня сейчас:
- универсальный гейт (прокси и прочее) - ок
- мини-вебсервер для "умного дома" (просто не HA - тот тормоз конечно) - ок
- детектор объектов для видеонаблюдения - ок
- сервер автоматизации - ок
А вот такое:
ну это как бы немного перебор )