Najprostsza kolumna radia internetowego „Kodi” czyli zbawienie cegiełki „Malina”.

Najprostsza kolumna radia internetowego „Kodi” czyli zbawienie cegiełki „Malina”.

Podstawowe wymagania wstępne:

  1. Jest stara, nieużywana płyta Raspberry Pi pierwszej generacji;
  2. Deska leży na szafce jako ciężar własny i nie jest używana - deska „Cegła”;

Co chciałbym otrzymać:

  1. W określonym momencie (na przykład w zależności od nastroju)
    tablica przestaje być „Cegłą” i wkładana jest do niej magiczna karta pamięci;
  2. Do płytki podłączony jest kabel Ethernet i wtyczka od zwykłego domowego głośnika lub słuchawek;
  3. Po włączeniu zasilania dawna „cegła” - śpiewa

Główny pomysł:

  1. Minimalna liczba gestów dla dowolnej konfiguracji, w najbardziej idealnym przypadku podłączamy tylko kabel „Ethernet”, zasilanie i głośniki i nie robimy nic więcej, od słowa "w ogóle";
  2. Poprzedni „Brick” po wyjęciu z pudełka obsługuje np. 20 internetowych stacji radiowych, które można przełączać w kółko naciskając kółko myszy lub na konkretny pin GPIO (podłączyć dwa przewody i je zewrzeć (moje marzenie od dzieciństwa) );
  3. Sterowanie odbywa się poprzez kanał radiowy, a tym kanałem radiowym może być zwykła mysz radiowa;
  4. Weź gotowy system i zmontuj dystrybucję w „Projekt Yocto”
    te. jak zwykle nic Ci nie zrobimy, skoro wszystko już zostało zrobione.
    (wystarczy umieścić zewnętrznego obserwatora po drugiej stronie "TELEWIZJA");

Opis

Najprostsza kolumna radia internetowego „KODI”
Zestaw przeznaczony jest dla starszych płyt Raspberry Pi 1
(zbierają kurz gdzieś na szafie, ale są gotowe do dalszej pracy)

Domyślnie używana jest lista 3 internetowych stacji radiowych m8u12.

Zakłada się, że płytka działa bez wyjścia HDMI, a aby je wyłączyć wystarczy odłączyć zasilacz z gniazdka. A jako ultranowoczesny bezprzewodowy panel sterowania możesz wykorzystać swoją super mysz radiową (lub podłączyć zwykłą szarą z ogonkiem).

Po włączeniu konfigurowany jest domyślny interfejs sieciowy poprzez protokół DHCP i odtwarzana jest ostatnia zapamiętana stacja radiowa z listy, regulacja głośności odtwarzania odbywa się za pomocą zwykłej myszy:
(w końcu mianuj swoją mysz „szefem zarządu” i pogratuluj jej, zasługuje na to)

  колесико вперед  - увеличение громкости звука
  колесико назад   - уменьшение громкости звука
  длительное нажатие (3сек и более) на правую кнопку мыши
                   - выбор следующий радиостанции
  длительное нажатие (3сек и более) на левую кнопку мыши
                   - выбор предыдущей радиостанции

Aby dodać własną listę internetowych stacji radiowych
zawsze możesz podłączyć kabel HDMI do telewizora
i korzystaj ze standardowego interfejsu graficznego Kodi 17.6
(wyłącz płytkę, podłącz HDMI i włącz zasilacz)

Menu główne Kodi => „Dodatki” => „Moje dodatki”
          => „Klienci PVR” => „Prosty klient PVR IPTV”

Wstępne wdrożenie

(możliwy)
Początkowo, decydując się na założenie „Rady Radia Internetowego”, planowałem:

  • Minimalistyczna dystrybucja konsoli w Projekcie Yocto;
  • Strumień audio jest odtwarzany za pośrednictwem GStreamera;
  • Interfejs sieciowy jest konfigurowany poprzez DHCP;

A to rozwiązanie ma szereg zalet:

  1. Dość szybki (przejście do trybu pracy z zasilacza zajmuje 30-40 sekund);
  2. Dość niezawodny (mniej programów, mniej punktów awarii);
  3. Dystrybucję konsolową znacznie łatwiej jest przełączyć do trybu tylko do odczytu
    te. programy nie zapisują niczego w głównym systemie plików
    (a system plików na nośnikach SDHC jest moim zdaniem pierwszym kandydatem do awarii);

Uwaga:

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

    Из коробки Yocto предлагает два варианта:
    1) Работа файловой системы в обычном режиме чтение/запись 
    (так работают все дистрибутивы общего назначения, например Ubuntu)
    2) Работа файловой системы в режиме только чтение
    (так работают специализированные дистрибутивы, например в маршрутизаторах)

    В режиме только чтение все каталоги, в которые обычно 
    записываются данные приложений и сервисов во время работы монтируются 
    в оперативную память (например каталог /var/log и т.п.)
    Данные актуальны только для текущего сеанса работы и после сброса питания
    данные теряются.

    Если в Yocto Project вы укажете при сборке использовать "read only", 
    то после сборки ваш дистрибутив будет настроен только на чтение, 
    но вы всегда можете добавить возможность динамического перевода 
    из "read only"  в "read/write", но это уже совсем другая история ...
    

I jedna główna wada:

„To trzeba zrobić”, tj. Muszę spędzić N wieczorów
(zwykle po pracy i to jest najbardziej nieefektywny czas, w tym czasie mózg już nie myśli, zwykle śpi)

A jednak o centrum multimedialnym pisałem już w poprzednim artykule na Habré Kodi i Yocto projekt
a możliwość kontynuowania w tym samym duchu obezwładniła mój impuls badawczy. Więcej na ten temat w następnym rozdziale.

Zamiana Kodi w głośnik radia internetowego

Aby dodać potrzebną mi funkcjonalność dodam jeszcze jedną metodę do opisanego w poprzednim przepisie na budowanie dystrybucji Artykuł zobacz plik berserk-image.bb

GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml"

# конфигурация запуска последнего выбранного ТВ канала (1-фон 2-передний план)
F1_LINE = "<startlast default="true">0</startlast>"
R1_LINE = "<startlast>1</startlast>"
# конфигурация вывода звука, всегда подключен только аналоговый аудио выход
F2_LINE = "<audiodevice default="true">PI:HDMI</audiodevice>"
R2_LINE = "<audiodevice>PI:Analogue</audiodevice>"
# так как HDMI по умолчанию не используется отключаю автоматическое обновление
# а то может получиться что питание уехало, а данные остались не записанными
F3_LINE = "<addonupdates default="true">0</addonupdates>"
R3_LINE = "<addonupdates>2</addonupdates>"


# метод отвечает за добавление конфигурации:
# которая превращает "Умный телевизор" в "простую Интернет Радио колонку"
add_radio_guisettings() {
    sed -i "s|${F1_LINE}|${R1_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
    sed -i "s|${F2_LINE}|${R2_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
    sed -i "s|${F3_LINE}|${R3_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
}


FIND_STR = "touch ./tmp/.FIRST_RUN."
SCRIPT_FIRST_RUN = "etc/init.d/first-run.sh"
# так как HDMI выход может не использоваться, 
# то необходимо отключить "стартовое приветствие"
off_kodi_welcome() {
    sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}

Metody przeznaczone są do modyfikacji głównego systemu plików przed utworzeniem obrazu dystrybucji w postaci jednego surowego pliku, który zapisywany jest na karcie pamięci poleceniem dd

Odbywa się to w następujący sposób:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;”

Krótko mówiąc, w głównym pliku konfiguracyjnym Kodi 17.6 zmieniają się „trzy punkty”.

  • Konfiguracja uruchomienia ostatnio wybranego kanału telewizyjnego;
  • Konfiguracja wyjścia audio, zawsze podłączone jest tylko analogowe wyjście audio;
  • Wyłącz automatyczne aktualizacje;
  • Uwaga:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

bardziej szczegółowa sekwencja działań dla każdego elementu:

1) Kliknij ikonę koła zębatego w lewym górnym rogu ekranu
i wybierz „Ustawienia PVR i TV” (obraz telewizora z dwoma klaksonami)
następnie po lewej stronie menu wybierz „Odtwarzanie”, a w środkowej części „Ogólne”
z rozwijanej listy wybierz opcję „Kontynuuj od ostatniego kanału po uruchomieniu”.
wybierając ustawienie „Pierwszy plan”.

lub jaśniej:

      "Настройки PVR и ТВ" 
       => "Воспроизведение" 
       => "Продолжить с последнего канала при запуске" => "Передний план"

2) Kliknij ikonę „koła zębatego” w lewym górnym rogu ekranu i wybierz element:

       "Системные настройки"  
       => "Дополнения" => "Обновления" => "Никогда не проверять обновления"

3) Kliknij ikonę „koła zębatego” w lewym górnym rogu ekranu i wybierz element:

       "Системные настройки" 
       => "Аудио" => "Устройство вывода звука" => "PI: Analogue"

Jak przez dwa lata oglądałem telewizję w niewłaściwy sposób.

Muszę się Wam wyznać, że przez dwa lata nadal nie nauczyłam się prawidłowo oglądać telewizji.

Zwykle oglądam telewizję w kuchni. Do telewizora podłączona jest płytka Raspberry Pi 2B, a do płytki podłączone są złącza Ethernet i HDMI. Płytka zasilana jest poprzez zwykły kabel USB, który wpinamy do portu USB telewizora tj. w rzeczywistości włączenie telewizora za pomocą standardowego pilota powoduje zasilanie płyty Raspberry Pi, a wyłączenie telewizora za pomocą pilota powoduje również natychmiastowe zresetowanie zasilania płyty Raspberry Pi.

Tak, doskonale zdaję sobie sprawę, że nie można tego zrobić, ponieważ główny system plików centrum multimedialnego Kodi (ext3) działa w normalnym trybie odczytu/zapisu. Ale jestem leniwy i najpierw postanowiłem sprawdzić na jak długo uda mi się tak wyłączyć system, aż całkowicie przestanie się ładować, ale niestety po dwóch latach już mi się to nie udało (może po prostu miałem szczęście, Nie wiem ).

I moim zdaniem, gdyby ten tryb był odpowiedni dla mojego telewizora, to byłby odpowiedni również dla „prostego głośnika radia internetowego”, a ponieważ na siłę wyłączyłem automatyczną aktualizację wtyczek Kodi, prawdopodobieństwo awarii systemu plików stanie się równe mniej. Póki co nie widzę w tym problemu

Uwaga:

    Но вы всегда при желании можете с помощью одной yocto команды 
    IMAGE_FEATURES += "read-only-rootfs"

    и определенной магии перевести ваш дистрибутив в режим "read only"
    

Opisana w artykule dystrybucja „Głośniki radia internetowego” jest dystrybucją domową, a dla dystrybucji domowej najważniejszy jest piękny GUI. Moim zdaniem bardzo trudne lub prawie niemożliwe jest nauczenie zwykłego użytkownika wprowadzania w konsoli jakichkolwiek niezrozumiałych magicznych poleceń, a on nawet nie zna tego słowa. Ale proszę o GUI.

I to jest chyba mój główny argument na rzecz dystrybucji innej niż konsolowa. Graficzny interfejs użytkownika Kodi z ciepłą lampą nie jest tak naprawdę potrzebny, ale jest.
(Całkowicie zapomniałem też wspomnieć, że Kodi można sterować zdalnie, np. ze smartfona, instalując aplikację Yatse, i być może dla niektórych będzie to plus)

Konfiguracja Kodi do sterowania myszą

a teraz Rakieta

<keymap>
    <global>
        <mouse>
          <wheelup>VolumeUp</wheelup>
          <wheeldown>VolumeDown</wheeldown>
          <middleclick>ChannelDown</middleclick>
          <longclick id="0">ChannelDown</longclick>
          <longclick id="1">ChannelUp</longclick>
          <!-- конфигурационный rocket -->
        </mouse>
    </global>
</keymap>

Konfiguracja zastępuje zdarzenia globalne dla następujących elementów:

  • przewiń kółkiem myszy do przodu
  • przewiń kółko myszy do tyłu
  • kliknięcie środkowym przyciskiem myszy
  • przetwarzanie długich kliknięć myszą (3 sekundy i więcej),
    0 ID prawego przycisku, 1 ID lewego przycisku

Bardziej szczegółowe informacje na temat konfigurowania zdarzeń myszy:

kodi.wiki/view/Alternative_keymaps_for_mice
kodi.wiki/view/Action_IDs
kodi.wiki/view/Window_IDs

Co zrobić, jeśli system kablowy nie dotrze do Ciebie

„Ale ja nie mam w domu wolnych portów Ethernet (albo nigdy nie miałem)” – może zawołać część szczęśliwych posiadaczy starych płyt Raspberry Pi 1 (być może płyta została kupiona do celów badawczych i leżała na szafce)

A ponieważ płyta nie ma wbudowanego Wi-Fi, bez połączenia Ethernet nie będzie zbyt funkcjonalna.

Oczywiście istnieje możliwość wykorzystania płytki Raspberry Pi 1 bez Ethernetu, ale będzie to wymagało od Ciebie pewnego wysiłku. Zwykle takie rzeczy są ciekawe do zrobienia tylko w ramach uczenia się czegoś nowego, tj. To nie jest praca na zamówienie.

Rozważmy więc hipotetyczny przypadek użycia karty bez Ethernetu:

Możesz podłączyć zewnętrzny adapter USB - Wi-Fi, kierując się względami
że adapter powinien dobrze działać pod Linuksem

Uwaga:

    К сожалению часть WiFi адаптеров работать не будет, 
    это не особенность представленного в данной статье дистрибутива, 
    а скорее проблема конкретных драйверов WiFi адаптеров в ядре Linux. 
    Можно констатировать тот факт, что в настоящий момент вы не можете просто 
    пойти в магазин и купить любой WiFi адаптер. Скорее вы должны подобрать WiFi 
    адаптер из списка менее проблематичных и хорошо работающих под Linux.

    я проверял только следующии модели:
    - WiFi адаптер на чипсете Atheros D-Link DWA-126 802.11n (AR9271)
    - WiFi адаптер NetGear WNDA3200
    - WiFi адаптер NetGear WNA1100
    - WiFi адаптер TP-Link TL-WN722N (AR9271)
    - WiFi адаптер TL-WN322G v3
    - WiFi адаптер TL-WN422G
    - Wifi адаптер Asus USB-N53 chipset Ralink RT3572 
    

Jeśli masz już adapter USB Wi-Fi, możesz sprawdzić, czy działa dobrze pod Linuksem, w następujący sposób:

  • Zainstaluj powszechnie używaną dystrybucję Linuksa
    ogólnego przeznaczenia, na przykład „Ubuntu Desktop”
  • Uruchom system
  • Podłącz adapter USB Wi-Fi
  • Uruchom menedżera sieci i spróbuj połączyć się z punktem dostępu Wi-Fi
  • Jeśli wszystko działa dobrze i Twoje połączenie internetowe jest stabilne, oznacza to, że Twój adapter jest dobrze obsługiwany i możesz kontynuować prace nad podłączeniem tego adaptera w wyspecjalizowanej dystrybucji i ewentualnie z innymi wersjami jądra
    (jeśli nie, to nie, niestety, lepiej nawet nie próbować)

Obsługa zewnętrznego adaptera Wi-Fi w Raspberry PI

Aby adapter WiFi działał poprawnie w systemie Linux potrzebujemy dwóch rzeczy:
1) Obsługa jądra Linux dla konkretnego adaptera Wi-Fi
2) Obecność modułu jądra w systemie dla konkretnego adaptera Wi-Fi

Weźmy na przykład adapter TP-Link TL-WN722N. Ma po prostu wspaniałą antenę.
Znajdźmy chipset na którym działa płyta - u mnie to "AR9271", notatka:

    что самое интересное, это то, что для одной и той же модели
    одного и того же производителя, чипсет Wifi может отличаться.
    Я например сталкивался с тем, что для TL-WN722N версии 2, 
    используется уже другой чипсет Realtek RTL8188, а он уже 
    плохо работал под Linux (на тот момент), увы такие вот дела, 
    т.е. иногда нужно еще приглядываться к маленьким цифрам 
    версии на обратной (темной) стороне адаптера.    
    

Teraz znajdźmy nazwę parametru w konfiguracji jądra odpowiedzialnego za sterownik chipsetu AR9271, najlepiej szukać kombinacji słów „AR9271 catee.net”
     gdzie „cateee.net” to fajna strona opisująca konfiguracje modułów jądra Linuksa

Natychmiast znajdujemy nazwę konfiguracji jądra - CONFIG_ATH9K_HTC
i nazwę modułu jądra, którego potrzebujemy ath9k_htc

a następnie po prostu podaj nazwę wymaganego modułu w pliku fragmentu konfiguracji
Jądro Linuksa => receptur-kernel/linux/files/rbpi.cfg, dodaj linię:
CONFIG_ATH9K_HTC=m

Dzięki temu w przyszłości będziesz mógł podłączyć do swojego systemu dowolny dodatkowy sprzęt (no oczywiście, jeśli jest on już obsługiwany w jądrze Linuksa)

Co zrobić, jeśli jesteś maniakiem Habra - projektantem

I tworzysz najfajniejsze rzeczy, jak np tutaj lub jesteś studentem i marzysz o stworzeniu czegoś podobnego.

Od ręki możesz wziąć jakiś ekran dotykowy do RPI na aliexpress, zamówić tam odpowiednią baterię, podłączyć to wszystko do płytki Raspberry Pi 1,2 lub 3 (najlepiej 3, bo ma wbudowane Wi-Fi), wybrać interfejs motywu graficznego w Kodi, zaprojektowany dla ekranu dotykowego i voila => możesz uzyskać prosty odtwarzacz audio. Oczywiście będzie dość nieporęczny, ale będzie Twój.

  Примечание:
  A для того, чтобы собрать Мультимедиа центр Kodi для самой бюджетной платы 
  Raspberry Pi Zero Wifi в yocto вам достаточно изменить две строки:

  конфигурационный файл => build/conf/local.conf
      MACHINE = 'raspberrypi0-wifi'

  рецепт сборки Kodi  => recipes-mediacentre/kodi/kodi_17.bbappend
      EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE', 
                            'raspberrypi0-wifi', '${BS_RPI}',  '', d)}"

  Jeśli responsywność GUI Kodi 17.6 ze względu na pojedynczy rdzeń procesora w Zero wydaje Ci się zagadkowa, to możesz oszukać uszy i zbudować starszą, ale bardzo szybką wersję, na przykład Kodi 15.2, jest pod tym względem bardziej „przyjazna” (czasami dziedzictwo rozwiązuje wszystko)

Niestety nie mam płytki, więc nie mogę sprawdzić, ale wydaje mi się, że powinno działać.

Krótka instrukcja montażu

    1) Установите зависимости Yocto Project (например в Ubuntu): 
    sudo apt-get install -y --no-install-suggests --no-install-recommends 
        gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential 
        chrpath socat cpio python python3 python3-pip python3-pexpect 
        xz-utils debianutils iputils-ping python3-git python3-jinja2 
        libegl1-mesa libsdl1.2-dev xterm

    2) Скачайте и установите Repo:
        mkdir ~/bin
        curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        chmod a+x ~/bin/repo

    3) Загрузите проект с github:
        PATH=${PATH}:~/bin
        mkdir radio
        cd radio
        repo init -u https://github.com/berserktv/bs-manifest 
                  -m raspberry/rocko/radio-rpi-0.2.8.xml
        repo sync

    4) Соберите проект:
        ./shell.sh
        bitbake berserk-image
        
    можно тоже самое собрать для плат Raspberry Pi 3B Plus, 3B и 2B:
    repo init -u https://github.com/berserktv/bs-manifest 
              -m raspberry/rocko/radio-0.2.8.xml
    

bardziej szczegółowa instrukcja montażu
i nagrywanie na karcie microSDHC, patrz w poprzednim artykule

Postscript

Oczywiście pomysł na głośnik do radia internetowego jest typowy, wszyscy to znają i na Habré znajdziecie wiele artykułów na ten temat m.in. tutaj

Można też pomyśleć, że po prostu dostosowałem wymagania do gotowego rozwiązania. Mogę temu przeciwstawić się i szczerze powiedzieć, że nie.

Historia pana Erveya

    Хотите верьте, хотите нет, а дело было так:

    Наш рабочий офис граничит с фирмой по производству разного звукового
    оборудования, и однажды директор этой фирмы, назовем его мистер "Эрви"
    подошел к нашему заместителю директора филиала мистеру "Арсению"
    и спросил у него, насколько сложно повесить на плату Raspberry Pi 
    проигрывание звукового потока т.е. плата подключается к сети 
    и колонкам, и "слышен характерный звук".

    После этого мистер Арсений подошел к заместителю моего 
    начальника - мистеру "Борису" и переадресовал вопрос ему, 
    ну а я, как сторонний наблюдатель случайно эту идею запомнил
    и назвал ее "Задача трех начальников".

    В общем хотели как лучше, 
    а получилось, цитата - "Но мистер Эрви, как всегда, помог."

    Через некоторое время я поинтересовался у мистера "Бориса" 
    его мнением по поводу написания небольшой заметки на эту тему 
    на "Хабре", на что "Борис" ответил, что изменение 
    "трех пунктов меню" в Kodi, особо не привносит никакой 
    новой информации и не заслуживает отдельного упоминания. 
    Конечно я с ним полностью согласен и поэтому, я не расскажу ему, 
    что что-то написал по этому поводу.

    Статья написана исключительно для платы "Raspberry Pi 1" 
    взятой у мистера "Бориса" на время эксперимента, 
    совпадения со всеми другими платами "Raspberry Pi 1" случайны.
    

Więcej dobrych i różnych montaży dla Was i niech w tym roku zaśpiewa Wam nawet dawna cegła.

Źródło: www.habr.com

Dodaj komentarz