raspberry_pi
Как поставить Android TV на Raspberry Pi 3
В данном гайде описывается способ установки на Raspberry Pi 3 рабочего Android и использование малинки в качестве андроид-приставки в связке с видео-сервисами. Такими как HD Videobox, 24h, Kinopub, EdemTV и прочими приложениями, позволяющие смотреть тв, сериалы и фильмы в одном месте.
Сборка Lineage OS 16.0 на базе Android 9 (Pie) вполне сносно работает этой модели мини-компьютера, что можно считать успехом и попробовать попользоваться андроидом, вместо OSMC и Kodi.
Прошивка образа

- Скачиваем образ Lineage OS для Raspberry Pi 3. ставить будем сборку для Android 9 (Pie).
- Прошиваем полученный образ на MicroSD флешку с помощью Etcher: выбираем файл, указываем путь до флешки MicroSD и нажимаем кнопку Flash
- После окончания процесса записи образа, заходим в корень флешки, ищем там файл resolution.txt, меняем значение на разрешение вашего монитора или телевизора. например, 1920х1080, сохраняем файл.
- Также заодно можно поменять настройки самой малинки в файле config.txt, прописав информацию о купленном кодеке и параметры производительности.
Предварительная настройка
- Вытаскиваем флешку из компьютера и вставляем ее в Raspberry.
- Включаем питание малинки и дожидаемся полной загрузки Lineage OS.
- Подключаем мышку к малинке и проходим быстро мастер предварительной настройки установленной системы, можно в настройки не вникать, все равно потом придется их проставлять еще раз после установки Google Apps.
- Заходим в настройки Андроида: О системе -> Номер сборки, жмём 5 раз, чтобы включить возможности разработчика. Далее Система -> Developer Options -> Root Access -> App and ADB, соглашаемся с окном Allow root access?. Включаем локальный терминал в опции Local terminal (нужно передвинуть ползунок).
- Но лучше всё же настройки разрешения и малинки отложить и сделать это после запуска мастера предварительной настройки при первой загрузке системы, так как это позволит избавиться от зависаний и лагов в процессе.
Google Apps
Установка Google Apps замедляет работу системы, поэтому подумайте: может вам хватит возможностей чистого андроида?
- Теперь нужно скачать Google Apps. выбираем платформу ARM, версию 9.0, вариант Pico и жмем кнопку скачивания. Не выбирайте вариант tvstock, он довольно тяжелый и система потом может просто не загрузиться.
- Берем обычную USB-флешку, форматируем ее в FAT32, закидываем туда скачанный Google Apps и recovery2boot.zip, он понадобится для перезагрузки обратно в Lineage OS после TWRP.
- Свайпаем вверх на рабочем столе Lineage OS и запускаем терминал. В запросе на права доступа к файлам отвечаем утвердительно. Набираем сначала команду su для получения прав суперпользователя и нажимаем энтер, соглашаемся выдать рут-права. Далее выполняем команду rpi3-recovery.sh и затем reboot.
- После перезагрузки сразу загрузится рекавери, свайпаем в пункте Swipe to Allow Modifications. Выбираем пункты Install -> Select Storage -> USB-OTG. Запускаем файл open-gapps-arm-9.0-pico-xxxxxxxx.zip и свайпаем кнопку Swipe to confirm flash.
- После завершения установки кликаем в левом верхнем углу на логотип TWRP и переходим в главное меню, затем выбираем пункт Wipe и свайпаем Swipe to Factory Reset для сброса настроек.
- Снова кликаем по логотипу, в этот раз жмём на пункт Install и выбираем на USB-флешке файл lineage-16.0-rpi3-recovery2boot.zip, свайпаем для подтверждения прошивки. TWRP запустит скрипт для восстановления загрузки Lineage OS. После окончания нажимаем кнопку Reboot System
Lineage OS
- В это раз система будет грузиться дольше и после окончания процесса вновь запустится мастер предварительной настройки андроида, теперь можно спокойно выбрать русский язык и поставить все необходимые настройки.
- Если установка зависла на пункте «Проверка обновлений...», то просто нажмите кнопку назад внизу экрана, как на телефоне.
- Мастер попросит вас залогиниться в аккаунт Google, сделайте это если считайте нужным и хотите синхронизировать данные со всех своих гугловских приложений.
- Если вы отказались от установки Google Apps, то в системе отсутствует приложение Play Market и файлы приложений придется устанавливать с флешки, предварительно разрешив установку из неизвестных источников в андроиде. Еще APK-файлы можно скачать с сайта apkmirror.
- Для того, чтобы лаунчер был похож на Android TV, скачиваем с 4PDA или Play Market ATV Launcher и запускаем его
Управление
Для управления с клавиатуры в системе предусмотрены следующие кнопки:
F1 = Домой
F2 = Назад
F3 = Список приложений
F4 = Меню
F5 = Питание
F11 = Уменьшение громкости
F12 = Увеличение громкости
Источники
https://sprosi.pro/questions/14718/raspberry-pi-model-b-3-razgon
https://pcmac.biz/android-tv-on-raspberry-pi-model-b/
https://konstakang.com/devices/rpi3/LineageOS16.0/
https://www.makeuseof.com/tag/build-android-tv-box-raspberry-pi/
Выводим температуру процессора Raspberry Pi 3 в интерфейс Kodi
Понадобилось мне иметь под рукой показания температуры процессора во время воспроизведения. Все дальнейшие действия будут описаны для обложки Estuary медиацентра Kodi на операционной системе OSMC.

Все дополнения Kodi находятся в этом каталоге:
cd /usr/share/kodi/addons/
Каталоги с файлами обложек начинаются со слова «skin.», шаблоны лежат в папке «xml»
cd skin.estuary/xml
Так как я хотел вывести температуру процессора рядом со временем, я просто поискал по соответствующей строке «System.Time». Весь список подобных информационных меток можно найти на вики-ресурсе Kodi.
grep "System.Time" *.xml --color=auto
Нашлось два файла, Custom_1109_TopBarOverlay.xml — файл верхней панели, которая появляется при воспроизведении и Includes.xml, который отвечает за внешний вид, размер и расположение элементов управления по умолчанию, метка времени из этого файла отображается на домашней странице.
Для того, чтобы было интереснее выведем рядом в температурой процесса текущий FPS.
sudo nano Custom_1109_TopBarOverlay.xml
Нажимаем Ctrl+W и ищем метку System.Time

Отлично, вот здесь ниже и добавим наши новые элементы. Для экономии места сгруппируем их в горизонтальную группу.
<control type="group">
<!-- Часы -->
<visible>!Window.IsVisible(extendedprogressdialog)</visible>
<animation effect="fade" time="150">VisibleChange</animation>
<control type="label">
<font>font_clock</font>
<shadowcolor>text_shadow</shadowcolor>
<top>0</top>
<right>20</right>
<height>200</height>
<width>600</width>
<align>right</align>
<label>$INFO[System.Time]</label>
</control>
<!-- НАШ КУСОК КОДА -->
<control type="grouplist">
<!-- Группа будет горизонтальной -->
<orientation>horizontal</orientation>
<!-- Использовать координаты элемента управления в качестве местоположения -->
<usecontrolcoords>true</usecontrolcoords>
<!-- Отступ справа -->
<right>24</right>
<!-- Отступ сверху -->
<top>130</top>
<!-- Выравнивание -->
<align>right</align>
<!-- Ширина -->
<width>500</width>
<!-- Высота -->
<height>100</height>
<!-- Промежуток между элементами в списке -->
<itemgap>15</itemgap>
<!-- Надпись -->
<control type="label">
<width>auto</width>
<height>100</height>
<!-- Текст -->
<label>FPS: $INFO[System.FPS]</label>
<!-- Размер шрифта -->
<font>font12</font>
<!-- Тень от текста -->
<shadowcolor>text_shadow</shadowcolor>
</control>
<control type="label">
<width>auto</width>
<height>100</height>
<label>CPU: $INFO[System.CPUTemperature]</label>
<font>font12</font>
<shadowcolor>text_shadow</shadowcolor>
</control>
</control>
<!-- // НАШ КУСОК КОДА -->
<!-- Информация о времени окончания воспроизведения -->
<control type="grouplist">
<right>24</right>
<top>90</top>
<width>800</width>
<height>100</height>
<align>right</align>
<itemgap>5</itemgap>
<orientation>horizontal</orientation>
<usecontrolcoords>true</usecontrolcoords>
<control type="label">
<label>$INFO[Player.FinishTime,$LOCALIZE[31080]: ]</label>
<shadowcolor>text_shadow</shadowcolor>
<height>100</height>
<width>auto</width>
<visible>!String.isempty(Player.Duration)</visible>
<visible>Player.HasVideo</visible>
<visible>!VideoPlayer.Content(LiveTV) | VideoPlayer.HasEpg</visible>
</control>
<control type="image">
<top>2</top>
<left>0</left>
<width>60</width>
<height>40</height>
<fadetime>300</fadetime>
<aspectratio aligny="center" align="right">keep</aspectratio>
<texture>dialogs/volume/mute.png</texture>
<visible>Player.Muted</visible>
</control>
</control>
</control>
Жмём Ctrl+X, затем вводим Y для сохранения, потом Enter и перезапустим Kodi для применения сделанных изменений:
sudo systemctl restart mediacenter
Смотрим, что получилось:

Дело сделано!
По аналогии можно также добавить любые необходимые элементы на главный экран через файл Includes.xml.
RSS + Transmission на OSMC и Raspberry Pi 3
Как решить задачу автозакачки торрентов на Raspberry Pi 3 и операционной системе OSMC?
- Ставим в App Store OSMC торрент-клиент Transmission.
- Настраиваем его согласно этой статье на Хабре, указываем папку для загрузки и включаем удаленное управление.
- Устанавливаем скрипт для закачки торрентов по RSS.
- Регистрируемся на сервисе litr.cc, добавляем раздачи для отслеживания обновлений.
- Копируем адрес RSS для закачки в настройки скрипта, в секцию FEED_URLS_AND_DIRS.
- Добавляем скрипт в планировщик, как указано в статье о нём.
Выгода!
OSMC, Raspberry Pi 3 — ТВ, телепрограмма и значки каналов
Ссылки
Настройка телепрограммы EPG
Домашний медиаплеер из Raspberry Pi
Дисклаймер
Кратко о том, как настроить телевещание и телепрограмму на Raspberry Pi + OSMC.
Около двух сотен каналов за 1$/месяц, неплохо, правда?
Телеканалы
- Регистрируемся на Edem.TV, запускаем мастер настройки.
- Оплачиваем, формируем плейлист. Я выбрал все галочки, кроме армянских и украинских телеканалов.
- Система -> Настройки -> Дополнения -> Мои дополнения -> Клиенты PVR -> PVR IPTV Simple Client -> Установить.
- Жмакаем настройку PVR клиента, указываем в поле «Ссылка на M3U» ссылку на плейлист без авторизации со страницы https://edem.tv/playlist
- Переходим на вкладку «Логотипы каналов», поле «Логотипы каналов из XMLTV» — предпочтительно XMLTV.
- Система -> Настройки -> ТВ -> Общие -> Включить
Телепрограмма
- Переходим на вкладку EPG, указываем в поле «Ссылка на XMLTV» адрес: http://www.teleguide.info/download/new3/xmltv.xml.gz
- Телепрограмма формируется по московскому времени. Поэтому считайте: если вы живёте в часовом поясе +2 к Москве. то в поле «Сдвиг по времени для EPG (часов)», нужно указать —2.00.
- Установить галочку «Применять сдвиг по времени для всех каналов».
Логотипы каналов
Скачиваем логотипы каналов:
wget http://shtyrlyaev.ru/uploads/rpi/channels.zip
sudo unzip channels.zip
Переходим в Система -> Настройка -> ТВ -> Меню/OSD -> Папка со значками каналов, указываем папку с логотипами каналов, жмакаем «Искать недостающие значки». Перезапускаем малинку и наслаждаемся жизнью без смарт-тв.
И что мы таки имеем, Сара?
Хуева туча каналов, есть HD-каналы, фильмы, сериалы, музыка, научпоп, эротика, кулинария. Работает ничуть ни хуже среднестатистического телека, если ты конечно пульт настроил. Телепрограмма в удобном виде, опять же. Доллар в месяц, сущие копейки. Нужен только интернет и немного свободного времени для настройки.
OSMC, Raspberry Pi 3 и удалённое управление пультом
Ссылки по теме
Как сделать медиаплеер на основе Raspberry Pi 3
Медиаплеер из содержимого кладовки
Infrared Remote for Raspberry Pi Mediacenter
Дистанционное управление в Linux
Зачем тебе пульт?
Приложения Kodi или Yatse для удалённого управления медиацентром XBMC конечно хороши, но нет главного — нельзя пользоваться ими вслепую как пультом от телевизора, кнопки то тактильно не ощущаешь. Да и включать постоянно приложение, искать телефон — ну его нафиг, лучше искать пульт, по старой русской традиции, предварительно обернув его в плёночку.
Поэтому берём какой-нибудь ненужный пульт и идём обучать малинку работать с него. Желательно, чтобы у пульта были кнопки регулирования громкости, воспроизведения/паузы, кнопка выключения и самое главное — джойстик с кнопкой ОК. Отлично подойдет пульт от DVD-плеера, например, BBK RC-026-01, который стоит около 300 рублей:

Нам понадобится:
- ИК-приёмник, например TSOP382
- Пульт от телевизора
- Putty, для доступа по SSH
Подключение
Распиновка с лицевой стороны инфракрасного приёмника:


Подключаем или припаиваем контакты ИК-приемника:
GPIO 18 — к контакту GPIO 18 на малинке, жёлтый контакт на схеме с числом 18
GND — к любому контакту Ground (земля) на малинке, черный контакт на схеме, любой
+3.3V — к контакту 3.3V на малинке, оранжевый контакт на схеме, их всего 2 шт.
Если вы хотите включать и выключать малинку по кнопке POWER c пульта, то дополнительно припаяйте контакт GPIO 18 ИК-приёмника к GPIO 3 малинки, при замыкании этого контакта на землю, происходит вкл./выкл. платы.
Проверяем контакты на всякий случай и включаем малинку в сеть.
Настройка
Первым делом нужно включить LibRC в настройках OSMC:
Система -> Настройки -> My OSMC -> Pi Config -> Hardware Support (логотип малинки)
Включаем параметр Enable LIRC GPIO support и выставляем gpio_in_pin — 18.
Перезагружаем малинку и подключаемся к ней по SSH c помощью Putty (прописываем IP малины и порт 22).
Рекомендую в своем домашнем роутере выставить фиксированный IP-адрес для малины, чтобы всегда можно было зайти по одному и тому же айпишнику. Логин-пароль: osmc/osmc.

Установим стандартный пакет для управления процессами
sudo apt-get update && sudo apt-get install psmisc
Теперь можно приступать к обучению пульта, убьем процесс LibRC и запустим получение данных с пульта:
sudo killall lircd
mode2 -d /dev/lirc0
Теперь, если посветить пультом в ИК-приемник, в терминале будут отображаться принятые сигналы:

Если вдруг уже идут сигналы без нажатия кнопок на пульте, то это могут быть помехи от китайских блоков питания, ртутных ламп и пр. Итак, если сигналы идут, значит ИК-приемник мы подключили правильно и сигналы принимаются малинкой.
Начнем выставлять соответствия кнопкам пульта, для обучения существует специальная утилита irrecord:
irrecord -d /dev/lirc0 lircd.conf
Нажимаем два раза Enter и начинаем зажимать подряд все кнопки на пульте, пока утилита не сообщит нам о том, что она получила паттерн. Затем утилита попросит еще раз понажимать кнопки на пульте, зажимая их на 1 сек. После этого, irrecord предложит нам ввести название кнопок и записать их сигнал. Весь список кнопок выложен тут или его можно получить по команде:
irrecord --list namespace
Список самых необходимых кнопок (наглядная картинка расположения кнопок на пульте):
KEY_POWER | Выключение/включение платы |
KEY_MUTE | Выключение звука |
KEY_VOLUMEDOWN | Убавление громкости |
KEY_VOLUMEUP | Добавление громкости |
KEY_PLAY | Воспроизведение |
KEY_PAUSE | Пауза |
KEY_PLAYPAUSE | Совмещённая кнопка Воспроиз./Паузы |
KEY_STOP | Остановка воспроизведения |
KEY_LEFT | Кнопка влево |
KEY_RIGHT | Кнопка вправо |
KEY_DOWN | Кнопка вниз |
KEY_UP | Кнопка вверх |
KEY_OK | Кнопка ОК/Enter |
KEY_EXIT | Выход/Отмена |
KEY_INFO | Краткая информация о проигрываемом файле |
KEY_EPG | Телепрограмма |
KEY_SUBTITLE | Субтитры |
KEY_AUDIO | Переход в раздел «Музыка» |
KEY_PREVIOUS | Предыдущий трек |
KEY_NEXT | Следующий трек |
KEY_0 ... 9 | Цифровые кнопки от 0 до 9 |
KEY_HOME | Вернуться на главный экран |
KEY_TITLE | Техническая информация о проигрываемом файле |
KEY_CONTEXT_MENU | Контекстное меню |
KEY_REWIND | Перемотка назад |
KEY_FORWARD | Перемотка вперёд |
Вводим название кнопки в терминал, жмакаем ее на пульте и ждем ответа от утилиты:

После того, как обучили все нужные кнопки, утилита попросит проверить битовую маску, для этого нужно быстро понажимать на каждую кнопку несколько раз.
Как будет написано, что файл конфигурации записан — идём опять в My OSMC, в раздел Remote. Выбираем наш файл конфигурации (по кнопке Browse), применяем, перезагружаем плату и начинаем управлять малинкой как белые люди — пультом!
