Домашний Медиа-плеер: Raspbian + Kodi + плагин Plex на Raspberry Pi 3 B+

rasp-main-done
Приветствую Вас, уважаемые читатели!

В этой статье я бы хотел поговорить с Вами про улучшение старенького телевизора без популярных нынче SMART возможностей и уж тем более без Android TV(OS)
С пониманием того, что телевизор мы поменяем пока не скоро, я искал возможности расширить функционал сторонними средствами. Благо в телевизоре виднелись два HDMI порта.
Очень хотелось смотреть домашнюю медиатеку на базе Plex Media Server с помощью Plex Client приложений на крупном экране всей семьей.

Содержание статьи:
1. Мы рассмотрим как подготовить SD карту для установки Операционной системы
2. Установим саму операционную систему и настроим её для работы на Raspberry Pi 3 B+, чтобы она пожила больше чем 2-3 месяца
3. Далее установим медиа-пакет KODI и подключим к нему плагин Plex, проверим воспроизведение видео файла с сервера Plex Media Server
И наконец на самое вкусное:
4. Добавим Raspberry Pi 3B+ в систему мониторинга MikroTik «The Dude» и научимся получать по SNMP вывод скриптов, а именно температуру процессора Raspberry.

Располагайтесь поудобнее и мы приступаем!

Предисловие

После недолгого сканирования тырнета, стало понятно… Нужно делать свой медиаплеер.
Покупать готовый не хотелось т.к. готовые медиа плееры в дальнейшем не получится использовать в сторонних целях.

И решился я на покупку популярной у энтузиастов железки (а чем я не энтузиаст (: ) — RASPBERRY PI 3 B+
Да, да. На дворе 2018 и малинка обновилась (мальца) до Wi-Fi 5GHz и чуть разогнанного проца на 200MHz(1.2GHz -> 1.4GHz)
Ну и еще некоторые ТТХ стали получше. Более подробно ищите в обзорах на просторах сети.

rasp-1
Всем известная малина

Заказывал я малинку у нас в России, а не на Алибабайных сайтах, хотя без него тоже не обошлось.
Мне удалось найти магазин в котором модель B+ была дешевле чем в любых других местах.
До кучи я заказал блок питания к нему 5V-3A, чтобы он не чувствовал недостатка в питании.

Нашел SD карту на 16Гб(Class 10), которая лежала давно без цели к существованию. Теперь ей будет найдено применение.

Корпус пришлось искать на Али т.к. цены демократичны. Выбрал этот, как самый эффективный по охлаждению и без вентиляторов

rasp-3
 

Еще понадобился HDMI кабель, ну и в принципе все…
Хотя нет. Нужна еще мышь и клавиатура… Ну или просто беспроводной клавиатуры будет вполне достаточно.
С этим Вы решите для себя сами, что лучше всего использовать. Это уже дело каждого.
Можно найти что-то на подобие Air Mouse со встроенной клавиатурой.

Предлагаю дальше не разглагольствовать и приступить собственно к процессу создания медиаплеера!

 

Установка Операционной системы на SD карту

Для начала я взял нетбук с установленной на нем Lubuntu. Но можно использовать вариант Live загрузки с USB2.0(3.0) флешки.
Например применить Lubuntu или Linux Mint

Для тех, кто хочет записать Образ из под Windows, в интернете очень много информации, как это сделать. Ищите по словам Win32 Disk Imager + Raspbian
Для разметки SD карты нам потребуется утилита DD для записи .img образа на SD карту.
DD это базовая утилита. Она есть практически всегда и в любом Linux, если в Вашем Linux дистрибутиве её нет, устанавливайте, либо ищите тот в котором есть.

Перед тем, как начать установку ОС на SD карту, эту самую ОС нужно где-то достать.
Я не мудрствуя лукаво, решил использовать стандартную для Raspberry Pi 3 B+ без графического интерфейса, он нам не понадобится.
RASPBIAN STRETCH LITE

raspbian-1
 

Для меня этот выбор был ожидаем, но сделаю небольшое отступление.
а) «А почему ты не захотел использовать например OpenELEC» — спросите Вы ?
OpenELEC (Open Embedded Linux Entertainment Center) — дистрибутив операционной системы GNU/Linux для организации домашнего кинотеатра на базе ПК, основанный на медиаплеере Kodi (ранее известном как XBMC).
А вот почему: После записи образа на SD карту и попытке запустить сие действо именно на модели 3B+ появился разноцветный экран и … все… т.е. на лицо не совместимость из коробки.
Углубляться в попытки решить эту проблему я не стал. Пока =)
На самом деле это странно, т.к. процессоры почти одинаковые, что на обычном 3B, что на новом 3B+
3B: Quad Core 1.2GHz Broadcom BCM2837 64bit CPU
3B+: Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz

Также Вы можете опробовать LibreELEC (Libre Embedded Linux Entertainment Center) — дистрибутив операционной системы GNU/Linux для организации домашнего кинотеатра на базе ПК, основанный на медиаплеере Kodi (ранее известном как XBMC).

б) Также я попытался установить Android TV, но у меня также ничего не получилось, тупо темный экран говорит, что зеленый робот не взлетает.

Android TV — версия операционной системы Android разработанная для телевизоров и мультимедийных приставок.

!!!
Если Вам удалось запустить Android TV на новом Raspberry Pi 3 B+, то сообщите в комментарии.
Мне и нашим читателям, будет очень любопытно изучить этот процесс.
Из Android у меня заработал только LineageOS 16, но там отсутствует аппаратная обработка.

Поэтому продолжим работать с Raspbian.

sudo wget https://downloads.raspberrypi.org/raspbian_lite_latest
Распознаётся downloads.raspberrypi.org (downloads.raspberrypi.org)... 46.235.227.11, 93.93.128.133, 93.93.128.211, ...
Подключение к downloads.raspberrypi.org (downloads.raspberrypi.org)|46.235.227.11|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 302 Found
Адрес: https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-04-19/2018-04-18-raspbian-stretch-lite.zip [переход]
--2018-04-24 14:13:36--  https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-04-19/2018-04-18-raspbian-stretch-lite.zip
Подключение к downloads.raspberrypi.org (downloads.raspberrypi.org)|46.235.227.11|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 302 Found
Адрес: http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-04-19/2018-04-18-raspbian-stretch-lite.zip [переход]
--2018-04-24 14:13:36--  http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-04-19/2018-04-18-raspbian-stretch-lite.zip
Распознаётся director.downloads.raspberrypi.org (director.downloads.raspberrypi.org)... 93.93.128.230, 93.93.130.39, 93.93.130.104, ...
Подключение к director.downloads.raspberrypi.org (director.downloads.raspberrypi.org)|93.93.128.230|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 366646269 (350M) [application/zip]
Сохранение в каталог: ««raspbian_lite_latest»».
raspbian_lite_latest      100%[=========================================>] 349,66M   529KB/s    in 18m 18s
2018-04-24 14:34:00 (326 KB/s) - «raspbian_lite_latest» сохранён [366646269/366646269]

Запускаем скачивание операционной системы Raspbian и смотрим за процессом

sudo unzip raspbian_lite_latest
Archive:  raspbian_lite_latest
  inflating: 2018-04-18-raspbian-stretch-lite.img
ls -l
-rw-r--r-- 1 root root 1862270976 апр 18 02:08 2018-04-18-raspbian-stretch-lite.img

После скачивания, распаковываем архив с операционной системой

Кстати слово stretch в названии образа говорит нам о том, что базой для операционной системы послужила операционная система Debian 9.X Stretch
Debian 9.4 был выпущен 10 Марта 2018. Debian 9.0 изначально был выпущен 17 Июня 2017.
Новость о выпуске 9 версии Debian
Именно поэтому название операционной системы состоит из слов Raspberry(Rasp) и Debian(bian)
Вставляем в разъем для SD карт искомую SD карту

sudo dmesg | grep usb
[  258.480087] usb 1-5: new high-speed USB device number 8 using ehci-pci
[  258.617658] usb 1-5: New USB device found, idVendor=058f, idProduct=6366
[  258.617673] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  258.617683] usb 1-5: Product: Mass Storage Device
[  258.617691] usb 1-5: Manufacturer: Generic
[  258.617730] usb 1-5: SerialNumber: 058F63666433
[  258.619967] usb-storage 1-5:1.0: USB Mass Storage device detected
[  258.624660] scsi host7: usb-storage 1-5:1.0
ls -l /dev | grep sdb
brw-rw----  1 root disk      8,  16 май  7 21:23 sdb

Смотрим определилась ли SD карта и находим её в устройствах
У меня в Lubuntu, SD карта имеет имя sdb именно с этим именем я буду работать дальше

Начнем запись скачанного образа на SD карту с помощью утилиты DD

sudo dd if=2018-04-18-raspbian-stretch-lite.img of=/dev/sdb bs=4M

Выполните команду, приведённую выше, предварительно заменив параметры if= и of= на свои
Остается только ждать завершения процесса.
Нетбук в этом плане удобен тем, что если в доме или квартире пропадет питание процесс не придется начинать заново =)

Все, операционная система записана, вытаскиваем SD карту и вставляем её в Raspberry
Подключаем HDMI, Bluetooth клавиатуру и подаем питание через microUSB
Если все хорошо (а у нас по другому не бывает) Вы увидите процесс загрузки с тремя малинками вверху экрана

Увидим приглашение:
Login: вводим имя пользователя — pi
Password: вводим базовый пароль — raspberry

Теперь приступим к настройке операционной системы

 

Настройка Raspbian для работы в Raspberry Pi 3B+

Изменение пароля базового пользователя

passwd

Меняем пароль пользователя Pi
В принципе если Вы хорошо разбираетесь в Debian и системах на его базе, то можете создать своего пользователя, а базового удалить (режим Параноика — ВКЛ)

Настройка Wi-Fi соединения

Я настроил Wi-Fi обычным способом, через файл /etc/network/interfaces

wpa_passphrase SSID Wi-Fi password
network={
        ssid="SSID"
        #psk="Wi-Fi password"
        psk=198e8b3c8ecd59d65e854e72bc78e4bf0e2acbd5317fd9aa1d1f9f2f5c602f2a
}

Шифруем наш пароль для подключения к домашнему Wi-Fi.
Замените SSID на имя вашей Wi-Fi сети и Wi-Fipassword на пароль от нее.
Скопируйте полученный пароль в строке psk=

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=RO

Редактируем файл /etc/wpa_supplicant/wpa_supplicant.conf
У меня используется регион Румынии =) Вы можете установить свой. Лучше ставить тот, который используете в роутере.
Больше в этом файле ничего менять не нужно

sudo nano /etc/network/interfaces
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet dhcp
        wpa-ap-scan 1
        wpa-essid SSID
        wpa-psk 198e8b3c8ecd59d65e854e72bc78e4bf0e2acbd5317fd9aa1d1f9f2f5c602f2a

Редактируем файл сетевых интерфейсов /etc/network/interfaces

sudo reboot

Перезагружаем систему

sudo ifconfig
lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 7  bytes 575 (575.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7  bytes 575 (575.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163  mtu 1500
        inet 192.168.88.15  netmask 255.255.255.0  broadcast 192.168.88.255
        inet6 fe80::ba27:ebff:fe4c:2de2  prefixlen 64  scopeid 0x20
        ether b8:27:eb:4c:2d:e2  txqueuelen 1000  (Ethernet)
        RX packets 236021  bytes 336810636 (321.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24660  bytes 2790643 (2.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.88.1    0.0.0.0         UG    0      0        0 wlan0
192.168.88.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0
ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=5.57 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=3.57 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=3.46 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=55 time=4.16 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=55 time=4.36 ms
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 3.460/4.228/5.579/0.760 ms

После перезагрузки проверяем работу Wi-Fi и наличие интернета

Обновление системы

sudo apt update && sudo apt full-upgrade

Обновляем репозитории и сразу обновляем систему

sudo rpi-update

Не обязательно, но можно обновить загрузчик самой малинки

Дополнительные настройки

Перед тем, как заниматься плеером, давайте приведем в порядок операционную систему. Уменьшим количество операций производимых с SD картой.
Ставим iotop для проверки запросов к SD карте

sudo apt install iotop
sudo iotop -o -a

Смотрим обращения к накопителю

Важное замечание по уменьшению операций чтения/записи на SD карту
У флеш-накопителей есть ограниченное количество циклов записи. Значит если linux будет постоянно что то на неё писать — она может выйти из строя раньше времени. Жёсткие диски работают по другому принципу. Но для них мелкие операции чтения/записи тоже не особо полезны. Головка жёсткого диска может парковаться если он не используется определённый промежуток времени, это может делать система, а так же может быть заложенно в железе. В случае мелких операций чтения/записи, жёсткий диск постоянно не может запарковать головку (не критично) или паркует головку, и тут же начаинает что то читать/писать (вот это уже хуже).

Информация пишется страницами. Обычный размер страниы 4 кБ. Так что если мы хотим записать один байт, то или он поместится в буфер, или будет записанно 4 кБ. Если буфер заполнен, то страница записывается и дальнейшая запись идёт в следующую страницу, которая находится в ОЗУ.

Запись маленьких порций информации используется при журналировании файловой системы (даёт возможность не потерять информацию при сбое, например выключении питания), а так же функции логирования (сохрняют информацию о тех или иных системных событиях, или событиях программ). В raspberry логирование выполняет rsyslog

В Raspbian есть два демона, которые можно отключить для уменьшения нагрузки на корневой носитель информации. Отключив их можно выиграть в операциях записи, но проиграть в надёжности и возможности востановления. Это демон журналирования файловой системы и rsyslog. Так что если есть ценные данные которые будут храниться в корневом диске, то службу журналирования лучше не отключать. Если же raspberry используется как игрушка или есть возможность быстро заменить основной диск, то журналирование файловой системы можно отключить. Насчёт логирования аналогично, если вы не знаете зачем оно нужно, то достаточно сказать что если что то не работает, то неисправность нужно искать изначально в логах. Если захотите задать вопрос кому то на форуме, то скорее всего попросят скинуть логи. Так что если всё работает или вам проще переустановить систему чем разбираться что «посыпалось» — можете смело отключать логи.

Информация из источника: Уменьшение операций чтения/записи на Raspberry Pi

sudo nano /etc/rsyslog.conf
#module(load="imuxsock") # provides support for local system logging
#module(load="imklog")   # provides kernel logging support

Отключаем логирование
Комментируем две строки в секции MODULES
После перезагрузки система прекратит логирование

Далее нам необходимо отключить журналирование файловой системы ext4
Перед этими действиями Raspberry необходимо выключить и вытащить из него SD карту т.к. дальнейшие операции необходимо производить на отмонтированном разделе
Подключаем SD карту к другому ПК также, как это делали для записи на неё Операционной системы

sudo umount /dev/sdb2
sudo tune2fs -O ^has_journal /dev/sdb2
sudo e2fsck -f /dev/sdb2

Отмонтируем раздел с операционной системой, у меня это sdb2
И отключим ему журналирование

sudo nano /boot/config.txt
start_x=1

Не забудем добавить параметр «start_x=1» в /boot/config.txt, чтобы Raspberry Pi загрузил дополнительную прошивку /boot/start_x.elf.
Эта прошивка поможет в декодировании видео с использованием графического процессора, например файлов, закодированных в формате VP8.

 

Установка плеера Kodi и плагина Plex

Начнем установку нашего виновника торжества. Медиа плеера Kodi

sudo apt install kodi

Дожидаемся установки плеера.

И теперь небольшое отступление. Возможно если Вы начнете искать статьи в интернете, то увидите, как Kodi запускается через /etc/init.d/kodi
Но я обнаружил отсутствие данного файла по этому пути. Т.е. после установки мы имеем просто установленный плеер без автозапуска.
Можем запустить его в ручную командой sudo kodi-standalone. Только это не удобно. После пропадания питания или вдруг какая ошибка. Опять придется заходить в командную строку и повторять заново. Это мягко говоря не удобно. И у меня получилось найти очень изящный способ с помощью используемого по умолчанию во всех последних Debian операционных системах менеджера SystemD

systemd — системный менеджер, демон инициализации других демонов в Linux, пришедший на замену используемого ранее SysV. Его особенностью является интенсивное распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить запуск операционной системы. Название происходит от принятого в Unix добавления суффикса «d» к демонам.
И скажу Вам получилось изящно и просто.

sudo nano /lib/systemd/system/kodi.service

Создаем файл сервиса kodi

[Unit]
Description=Kodi Media Center
After=remote-fs.target network-online.target
Wants=network-online.target

[Service]
User=pi
Group=pi
Type=simple
ExecStart=/usr/bin/kodi-standalone
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

Содержание файла kodi.service
Строка Restart=always будет всегда перезапускать плеер. Т.е. если выйти из плеера или закрыть его, он все равно запуститься службой через 15 сек (RestartSec=15)

sudo systemctl enable kodi
sudo systemctl start kodi

Активируем сервис и запускаем его

После запуска сервиса, у Вас на телевизоре (или к чему там у Вас подключен Raspberry) должна отобразиться заставка медиа плеера

kodi-17-featured
Картинка взята из интернета, не смог зафиксировать свою, очень уж быстро загружается. Но суть одна, разве что у меня версия 17.6

 

Настройка Kodi

Заранее скажу, что детально разбирать настройку я не буду, просто потому, что все меню достаточно простое и разобраться в нем не составит большого труда.
Загрузка происходит достаточно быстро и мы должны увидеть интерфейс приложения

kodi-1
 

Давайте посмотрим, на параметры подключения и загруженность системы

kodi-2
 

Теперь можно зайти в левое меню в раздел Дополнения и выбрать пункт Установить из Репозитория
Выбираем Видеодополнения и листаем до тех пор, пока не найдем Plex

kodi-3
 
kodi-4
 

После установки возвращаемся в главное меню, заходим в Дополнения, выбираем и запускаем Plex

kodi-5
 
kodi-plex-1
 

Тут Plex выдаст Вам код для привязки данного устройства(приложения) к Вашей учетной записи.
Для этого Вам нужно быть зарегистрированным на сайте Plex, кстати без этого Вы не сможете пользоваться Plex Media Server! Так что подразумеваем, что учетная запись у Вас уже есть.
А если нет, то Регистрируемся и переходим на страницу привязки для разрешения Kodi подключаться к серверу.
Вводим 4 символа, которые сгенерировал нам Kodi-Plex и вуаля

plex-link
 

Если у Вас запущен Plex Media Server и он находится в одной локальной сети с Raspberry Pi, то приложение без труда найдет Ваш сервер и подключится к нему.
Вот так у Меня выглядит приложение Plex в Kodi на Raspbian (Raspberry Pi 3B+)

kodi-plex-2
 
kodi-plex-3
 

Ну вот и все, можно наслаждаться просмотром всяческих фильмов на «большом» экране.
Этот пункт мог бы быть последним в этой статье, но это не про нас с Вами =)
Я любитель прикручивать всяческие дополнительные возможности к своим девайсам. Вот и тут, благодаря тому, что мы выбрали Raspbian, который основан на Debian, у нас есть возможность отслеживать работу нашего медиа-плеера. Чем далее и займемся!

 

Мониторинг Raspbian (SNMP, The Dude)

На вкусное хочу показать Вам, как я слежу за работой малинки-плеера через систему мониторинга The Dude и SNMP протокола

sudo apt update
sudo apt install snmpd snmptrapd snmp-mibs-downloader

Устанавливаем SNMPD, SNMP трап, и MIB базы

sudo nano /etc/snmp/snmptrapd.conf
authCommunity log,execute,net public
sudo nano /etc/default/snmptrapd
TRAPDRUN=yes

Настраиваем SNMPTRAPD
Раскомментируем строку authCommunity

sudo nano /etc/snmp/snmpd.conf
agentAddress  udp:127.0.0.1:161
agentAddress  udp:192.168.88.15:161

rocommunity public  default

sysLocation    Home
sysContact     myname@mydomen.com

trapsink     localhost public
trap2sink    localhost public

Настраиваем SNMPD
Редактируем только указанные строки

extend cputemp /home/pi/scripts/cputemp.sh
extend cpufreq_1 /home/pi/scripts/cpufreq.sh 1
extend cpufreq_2 /home/pi/scripts/cpufreq.sh 2
extend cpufreq_3 /home/pi/scripts/cpufreq.sh 3
extend cpufreq_4 /home/pi/scripts/cpufreq.sh 4

Также добавляем в snmpd.conf вот такие строки. Далее мы создадим файлы скрипты для получения и вывода температуры и частоты ядер процессора.

sudo nano /etc/default/snmpd

export MIBS=/usr/share/snmp/mibs/

Указываем SNMPD, где брать MIB библиотеки

sudo apt install bc
mkdir /home/pi/scripts
nano /home/pi/scripts/cputemp.sh
#!/bin/bash

# Скрипт считывания температуры процессора Raspberry Pi 3
# Необходимые пакеты: bc
# Нужно создать символическую ссылку на данный скрипт
# Команда:
# ln -s /home/pi/scripts/cputemp /usr/bin/cputemp

# Получаем температуру в миллиградусах
# Пример получаемого значения: 52616
CPUTEMPMINI=$(cat /sys/class/thermal/thermal_zone0/temp)

# До каких долей выводить значения
SCALE=1

# Функция обработки до обычных градусов цельсия
# Пример передачи значений:
# reform [TEMP] [SCALE]
function reform() {
        echo "scale=$2; $1 / 1000" | bc
}

# Получаем температуру
CPUTEMP=$(reform $CPUTEMPMINI $SCALE)

# Выводим значение температуры
echo $CPUTEMP

exit 0;
chmod +x /home/pi/scripts/cputemp.sh
sudo ln -s /home/pi/scripts/cputemp /usr/bin/cputemp

Пишем скрипт получения температуры и добавляем его в пользовательское окружение
Важно установить утилиту BC

cputemp
66.6

Проверяем работу скрипта

Еще я создал скрипт, которым можно получить частоту с которой работает каждое ядро процессора

nano /home/pi/scripts/cpufreq.sh
#!/bin/bash

# Скрипт считывания частоты процессора Raspberry Pi 3
# Необходимые пакеты: bc
# Нужно создать символическую ссылку на данный скрипт
# Команда:
# ln -s /home/pi/scripts/cpufreq.sh /usr/bin/cpufreq

# Получаем частоту работы процессора
# Выбрать ядро можно передав значение 1, 2, 3, 4
# Пример получаемого значения: 600000
case $1 in
        1)
        CORE="cpu0"
        ;;
        2)
        CORE="cpu1"
        ;;
        3)
        CORE="cpu2"
        ;;
        4)
        CORE="cpu3"
        ;;
        *)
        echo "0"
        exit 0;
        ;;
esac
CPUFREQ=$(cat /sys/devices/system/cpu/$CORE/cpufreq/scaling_cur_freq)

# До каких долей выводить значения
SCALE=1

# Функция обработки до обычных мегагерц
# Пример передачи значений:
# reform [FREQ] [SCALE]
function reform() {
        echo "scale=$2; $1 / 1000" | bc
}

# Получаем частоту
CPUFREQM=$(reform $CPUFREQ $SCALE)

# Выводим значение частоты CPU
echo $CPUFREQM

exit 0;
chmod +x /home/pi/scripts/cpufreq.sh
sudo ln -s /home/pi/scripts/cpufreq.sh /usr/bin/cpufreq

Пишем скрипт получения частоты и добавляем его в пользовательское окружение

cpufreq 1
1400.0
cpufreq 2
600.0
cpufreq 3
600.0
cpufreq 4
1400.0

Проверяем работу скрипта

sudo service snmptrapd restart
sudo service snmpd restart

Перезапускаем сервисы snmpd и snmptrapd

Заходим в The Dude и добавляем новое устройство по его IP адресу.
У меня все устройства висят на Make Static адресах. У Raspberry Pi в моей сети, адрес 192.168.88.15

Запускаем SNMPWALK

raspdude-1
 

Опытным путем удалось найти необходимую ветку, куда складываются все expand из SNMPD.config файла
Это iso.3.6.1.4.1.8072.1.3
Подставляем в суб дерево snmpwalk и нажимаем Stop потом Start и смотрим за появляющимися значениями

raspdude-2
 

Для того, чтобы получить искомый OID правой кнопкой пытаемся создать Probe, но по факту не создаем его. Он нам нужен только для получения OID!

raspdude-3
 

Копируем нужный OID и идем в функции

raspdude-4
 

Создаем новую функцию с нашим OID и идем в Probes

raspdude-5
 

Создаем новый зонд и идем обратно на карту устройств

raspdude-6
 

Открываем Raspberry и добавляем опрос зонда температуры

raspdude-7
 
raspbian-dude
Так выглядит малинка у меня в The Dude
raspdude-8
А так выглядят графики параметров
raspdude-9
График повышения частот ядер

Конечно Вы можете создать кучу своих скриптов, которые будут выводить важные Вам параметры и транслировать их в The Dude, настроить Notification по каким-либо событиям.
Но мне оповещения пока не нужны.

Заключение

После настройки Wi-Fi на 5GHz/ac я получил вот такие показатели в своем MikroTik hAP ac

rasp-speed
 
На практике из-за того, что разрешение телевизора далеко не Full-HD, скорость потока кодированного медиатрафика не превышает 5 Мбит/сек
rasp-speed-2
 
Работает Kodi вот в таком ритме пока домашние смотрят фильм
rasp-htop
 

На этом предлагаю закончить разбор медиа-плеера на базе Raspberry Pi 3B+
У меня получилось именно то, что мне было нужно. Теперь я могу смотреть фильмы с медиа сервера, контролировать работу малинки и все это практически не вставая с дивана!

Надеюсь Вам было интересно и познавательно!
Если у Вас есть замечания, дополнения или просто интересная информация, прошу в комментарии =)

Список всех статей в хронологическом порядке: История статей

Поддержка блога
Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать проще простого =)
Хочешь получать уведомления о выходе новых статей?
Loading
GregoryGost

Мир интересен, если вы достаточно любопытны!!!

Оцените автора
GREGORY GOST
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  1. Дмитрий

    Gregory, Вы псих! Ну, в хорошем смысле этого слова.)))

    Ответить
  2. Андрей М

    Тут что-то с разметкой, видимо, случилось — строки кода скриптов показываются как неформатированный текст.

    Ответить
    1. GregoryGost автор

      Андрей, спасибо!
      Поправил разметку кода

  3. Орик

    ищу решение может поможешь:
    несколько филиалов в разных городах
    имеется 1-2 фотографии и 1-2 видео что бы добавили один раз и обновилось во всех филиалов.. (фото и видео показывал на мониторе)

    но что бы это не грузило интернет добавил новую фотографию обновился на всех филиалов и все. если даже проподет интернет фотография так же должно показываться.

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Если честно, мало что понял из вашего сообщения.
      Вам нужен NAS и нормальный системный администратор для настройки всего этого. И будет счастье 🙂

    2. Den

      Это из разряда digital signage. Работал с плеерами spinetix HMP200, они как раз с такой задачей справляются. Загружаешь на них нужный контент удаленно и они прокручивают его бесконечно или по расписанию без интернета. Есть ли такое решение на Малинке не знаю.

  4. Игнат

    Здравствуйте!Может и не особо по адресу,однако когда открываю файл просит пароль,выбираю рут и вводу пароль соответственно,однако позже пишет не удалось загрузить пакеты,проверьте подключение к сети,а оно есть

    Ответить
    1. GregoryGost автор

      Приветствую,
      Опишите более подробно где что выбираете, пока непонятно что, к чему относится.

  5. Сердж

    Привет!Пытаюсь поставить рут пароль,прописываю стандартную программу sudo passwd root
    Пишет мол пропишите новый пароль,но ничего не пишет,Клава работает точно))))

    Ответить
    1. GregoryGost автор

      Приветствую,
      При вводе пароля никакие символы не отображаются. Это специфика Linux. Просто вводите нужный пароль и жмите Enter, ну а далее confurm и т.д.

  6. Дмитрий

    Здравстуйте, столкнулся с проблемой при установке Plex идет установка 0% и все…при выборе любой другой программе когда нажимаю на нее зависает и все.

    Ответить
    1. GregoryGost автор

      Дмитрий, здравствуйте,
      Подскажите, какая операционная система? Какая версия Kodi? Ставите из плагинов или как-то иначе?
      Постарайтесь описать свой вопрос более подробно, если шли по руководству, то на каком пункте появилась проблема?

  7. Виктор

    Огромное, человеческое, спасибо за статью. Настроил, все получилось. Подскажите как теперь остановить загрузку KODI. Заранее спасибо.

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Благодарю за отзыв!
      Что означает остановить загрузку? Вы имеете в виду автоматический запуск приложения KODI?

  8. btrvodka

    Долго ломал голову, почему 1080p видео не воспроизводятся. Решением оказалось увеличить Memory Split, то-есть для видео подсистемы выделить больше ОЗУ.
    Сделать это можно в:
    sudo raspi-config
    Advanced Options
    Memory Split

    Либо можно в файла /boot/config.txt изменить параметр gpu_mem
    Мне хватило 256, но думаю можно и больше, если 4К воспроизводить.

    Ответить
  9. Александр

    Может поможете разобраться с автомонтированием и демонтированием usb hdd. Я только столкнулся с Линуксом и не все пока понимаю. Кое что читал пробовал делать, но не работает монтирование. Не появляется устройство в папке /media как это сделано в системе OSMC. Есть ли подводные камни с NTFS разделами? Уже завтра буду смотреть разницу в установленных пакетах, может как то наведет на мысль. Заранее спасибо.

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      На самом деле это одна из простых операций.
      Для начала убедитесь что установлена поддержка NTFS
      sudo apt install ntfs-3g

      Устройство не появится в папке media само по себе. Сначала Вам нужно создать папку для него и потом в неё монтировать HDD.

      Создайте дирректорию, как пример
      sudo mkdir /media/usbhdd

      Установите права на запись, чтение и др.
      sudo chmod 777 /media/usbhdd

      А вот дальше нужно отредактировать файл /etc/fstab, чтобы HDD монтировался автоматически
      открывайте редактором и добавляйте в самый конец файла:
      /dev/sda1 /media/usbhdd ntfs-3g defaults,rw 0 1
      Тут /dev/sda1 это Ваш HDD. У Вас он может иметь другой путь /dev/sda1, /dev/sda2, /dev/sdb1 и т.д. Вам нужно это проверить.

      Ну и для применения всех изменений, и монтирования HDD, перезагрузим малину
      sudo reboot
      После этого все должно быть ОК.

      P.S.
      Через fstab можно еще автоматически монтировать расшаренные сетевые папки на других ПК 🙂

  10. Александр

    Прекрасная статья. Вопрос следующий. Как в Kodi можно отключить вообще малинку, а то присутствует только опция выйти. И можно ли как то по присутствии сигнала на HDMI (телевизор включен) запустить сам Kodi, а по умолчанию, что бы он не запускался?

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      1. Raspbian из Kodi нельзя выключить. По крайней мере из стандартных билдов. Скорее всего нужно править исходники или искать такую сборку на просторах интернета.
      Как вариант LibreELEC в нем уже должна быть эта поддержка.

      2. Состояние можно получать командой из консоли
      /opt/vc/bin/tvservice -s
      state 0x12000a [HDMI DMT (22) RGB full 15:9], 1280x768 @ 60.00Hz, progressive
      Вот примерный список состояний, которые могут быть в выводе
      0x40001 = VC_SDTV_NTSC, VC_HDMI_UNPLUGGED
      0x40002 = VC_SDTV_NTSC, VC_HDMI_ATTACHED
      0x120002 = VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED
      0x120005 = VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_UNPLUGGED, VC_HDMI_DVI
      0x120016 = VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED, VC_HDMI_DVI, VC_HDMI_HDCP_UNAUTH
      0x12001a = VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED, VC_HDMI_HDMI, VC_HDMI_HDCP_UNAUTH
      0x12000a = VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_ATTACHED, VC_HDMI_HDMI
      0x120009 = VC_SDTV_ATTACHED, VC_SDTV_CP_INACTIVE, VC_HDMI_UNPLUGGED, VC_HDMI_HDMI

      Остается только написать «демона» на bash и systemd. Скорее всего я попробую реализовать это у себя. Идея интересная. Меньше будет нагрузка на SD карту.

    2. GregoryGost автор

      Посмотрел на своем телевизоре. state не меняется к сожалению если просто выключить телевизор с пульта. Видимо это работает только при физическом отключении кабеля. Посмотрите у себя, возможно у Вас он изменяется.
      Буду копать дальше.

  11. Олег

    Без проблем встаёт LibreELEC. Правда он только на английском. Возможно это легко решается.

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Спасибо за информацию, попробую подробнее глянуть на Либру.

  12. Александр

    OpenElec зачем устанавливать, она давно не поддерживается. А LibreElec работает из коробки без танцев. И в KODI нет смысла устанавливать PLEX.

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      OpenElec был одним из вариантов. В большинстве случаев в интернете можно найти статьи и информацию по нему, но нигде не пишут о текущей поддержке. Именно поэтому я и решил его попробовать поставить.
      Про LibreElec не слышал. Спасибо за наводку =)
      Касательно плагина не соглашусь с Вами. Стандартный интерфейс Коди с добавлением видео источника на Upnp выглядит гораздо скуднее плагина (лично для меня, Вас возможно устраивает и стандартный вид)
      В любом случае благодарю за Ваше мнение!

  13. Uncle Foxx

    Да, понятно что малинка нужна именно из-за отсутствия нужных функций в телевизоре.
    Для себя я выбрал связку ТВ с поддержкой DLNA (Smart необязателен) и NAS с торрентокачалкой и DLNA-сервером. Да, нет ненужной для меня функции онлайн-просмотра. Хотя в Smart’е есть какие-то приложения онлайн-кинотеатров.
    Минимум возни, максимум удобства.
    Конечно, это только мой случай и мой выбор. Другие решения тоже имеют право на жизнь. 🙂

    Ответить
    1. Uncle Foxx

      Пардон, создал новый комментарий вместо ответа.

    2. GregoryGost автор

      Тоже считаю Смарты с кучей приложений, излишним функционалом, но производители телевизоров не дают точечного выбора.

  14. Uncle Foxx

    {шутка-моде-он}
    Что только люди ни придумают, лишь бы не делать нормальный NAS/DLNA.
    {шутка-моде-офф}

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Это не совсем так )
      Я пересмотрел много различных приложений и Plex мне понравился больше всего.
      На данный момент он расположен на виртуалке на основном ПК, но на нем нет достаточно места для хранения всей базы фильмов.
      Raspberry же, я использовал для создания именно плеера под телевизор не обладающего SMART возможностями.

      Позвольте уточнить, что Вы подразумевали под «нормальный NAS/DLNA»? Возможно Вы знаете то, что не знаю я и другие читатели!

      P.S.
      У меня уже готовятся статьи по созданию отдельного медиа сервера. Серверные компоненты, много места, виртуалки, свой DNS и т.д. и т.п. =)