Najenostavnejši internetni radijski stolpec "Kodi" ali odrešitev opeke "Malina".

Najenostavnejši internetni radijski stolpec "Kodi" ali odrešitev opeke "Malina".

Osnovni predpogoji:

  1. Obstaja stara neuporabljena plošča Raspberry Pi prve generacije;
  2. Plošča leži na omari kot lastna utež in se ne uporablja - plošča “Brick”;

Kaj želite prejeti:

  1. V določenem trenutku (na primer po razpoloženju)
    plošča preneha biti "opeka" in vanjo se vstavi čarobna pomnilniška kartica;
  2. Na ploščo sta priključena kabel Ethernet in vtič običajnega gospodinjskega zvočnika ali slušalk;
  3. Po energiji nekdanje "Brick" - poje

Glavna ideja:

  1. Najmanjše število potez za katero koli nastavitev, v najbolj idealnem primeru priključimo samo "Ethernet" kabel, napajanje in zvočnike in ne počnemo nič drugega, od besede "nasploh";
  2. Na primer, podpiramo nekdanjo »Brick« iz škatle, na primer 20 internetnih radijskih postaj, katerih preklapljanje v krogu lahko prekinete s pritiskom na kolesce miške ali na določen GPIO pin (povežite dve žici in zaprite jih (moje sanje iz otroštva));
  3. Upravljanje se izvaja preko radijskega kanala, ta radijski kanal pa je lahko navadna radijska miška;
  4. Vzemite že pripravljen sistem, sestavite distribucijski komplet v "Projektu Yocto"
    tiste. Kot običajno, z vami ne bomo naredili ničesar, saj je že vse narejeno.
    (dovolj je le, da na drugo stran postavite zunanjega opazovalca "TV");

Opis

Najenostavnejša rubrika internetnega radia "KODI"
Sklop, zasnovan za stare plošče Raspberry Pi 1
(nabirajo prah nekje na omari, a so pripravljeni delati več)

Seznam m3u8 z 12 internetnimi radijskimi postajami je privzeto uporabljen.

Predvideva se, da plošča deluje brez izhoda HDMI, in da jo izklopite, preprosto izključite napajalnik iz vtičnice. In kot ultra sodoben brezžični daljinski upravljalnik lahko uporabite svojo super radijsko miško (no, ali pa priključite običajno sivo z repom).

Ko je vklopljen, je omrežni vmesnik privzeto konfiguriran prek protokola DHCP in predvajana je zadnja shranjena radijska postaja s seznama, glasnost predvajanja pa je nadzorovana z navadno miško:
(končno določi svojo miško za "vodjo uprave", in ji čestitaj, zasluži si)

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

Za dodajanje lastnega seznama internetnih radijskih postaj
vedno lahko s kablom HDMI povežete televizor
in uporabite osnovni Kodi 17.6 GUI
(izklopite ploščo, priključite HDMI in vklopite napajalnik)

Glavni meni Kodi => "Dodatki" => "Moji dodatki"
          => "PVR Clients" => "PVR IPTV Simple Client"

Začetna izvedba

(možno)
Na začetku, ko sem se odločil narediti rubriko "Internet Radio", sem načrtoval naslednje:

  • Minimalistična distribucija konzole v projektu Yocto;
  • Zvočni tok se predvaja prek GStreamerja;
  • Omrežni vmesnik je konfiguriran prek DHCP;

In ta rešitev ima številne prednosti:

  1. Dovolj hitro (izhod iz načina delovanja iz napajanja 30-40 sekund);
  2. Dovolj zanesljiv (manj programov, manj točk napake);
  3. Distribucijo konzole je veliko lažje postaviti v način samo za branje
    tiste. programi ne pišejo ničesar v korenski datotečni sistem
    (datotečni sistem na medijih SDHC je po mojem mnenju prvi kandidat za napake);

Opomba:

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

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

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

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

In ena pomembna pomanjkljivost:

"To je treba storiti", tj. Preživeti moram N število večerov
(običajno po službi in to je najbolj neučinkovit čas, takrat možgani ne razmišljajo več, običajno spijo)

Pa vendar sem prejšnji članek o multimedijskem centru napisal na Habréju Kodi in Yocto Projekt
in priložnost, da nadaljujem v istem duhu, je premagala moj raziskovalni impulz. Več o tem v naslednjem poglavju.

Spreminjanje Kodija v internetni radijski zvočnik

Za implementacijo funkcionalnosti, ki jo potrebujem, bom receptu za gradnjo distribucije, opisanem v prejšnjem, dodal še eno metodo članek glejte datoteko 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}
}

Metode so namenjene spreminjanju korenskega datotečnega sistema pred oblikovanjem distribucijske slike v obliki ene same neobdelane datoteke, ki se zapiše na pomnilniško kartico z ukazom dd

To se naredi tako:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_dobrodošli;"

Skratka, v glavni konfiguracijski datoteki Kodi 17.6 se spremenijo »tri točke«.

  • Zagon konfiguracije zadnjega izbranega TV-kanala;
  • Konfiguracija avdio izhoda, vedno je priključen samo analogni avdio izhod;
  • Onemogočanje samodejnih posodobitev;
  • Opomba:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

podrobnejše zaporedje dejanj za vsak element:

1) Kliknite ikono "zobnika" v zgornjem levem kotu zaslona
in izberite "Nastavitve PVR in TV" (slika televizorja z dvema hupama)
nadalje na levi strani menija izberite element "Predvajanje" in v osrednjem delu "Splošno"
na spustnem seznamu izberite "Nadaljuj z zadnjega kanala ob zagonu".
izberite nastavitev "Ospredje".

ali bolj jasno:

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

2) Kliknite na ikono "zobnik" v zgornjem levem kotu zaslona in izberite element:

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

3) Kliknite na ikono "zobnik" v zgornjem levem kotu zaslona in izberite element:

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

Kako že dve leti narobe gledam TV.

Moram vam priznati, da se v dveh letih nisem naučil pravilno gledati televizije.

Ponavadi gledam televizijo v kuhinji. Na TV je priključena plošča Raspberry Pi 2B, na ploščo pa priključka Ethernet in HDMI. Plošča se napaja preko navadnega USB kabla, ki ga vtaknemo v USB vhod televizorja. pravzaprav vklop televizorja s standardnim daljinskim upravljalnikom napaja tudi ploščo Raspberry Pi, izklop televizorja z daljinskim upravljalnikom pa tudi takoj ponastavi napajanje plošče Raspberry Pi.

Da, dobro se zavedam, da tega ni mogoče storiti, ker korenski datotečni sistem multimedijskega centra Kodi (ext3) deluje v mojem običajnem načinu branja/pisanja. Sem pa lenuh in za začetek sem se odločil preveriti, koliko časa traja, da se sistem izklopi, dokler se sploh neha nalagati, a mi žal že dve leti tega ne uspe (mogoče imel samo srečo, ne vem ).

In po mojem mnenju, če je ta način primeren za moj TV, potem je primeren tudi za "preprost zvočnik internetnega radia", in ker sem prisilno izklopil samodejno posodabljanje vtičnikov Kodi, bo verjetnost okvare datotečnega sistema postala še manj. Zaenkrat v tem ne vidim problema.

Opomba:

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

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

Distribucijski komplet "Internet radijski zvočniki", opisan v članku, je gospodinjski, in kar je najpomembnejše za gospodinjski distribucijski komplet, je lep GUI. Po mojem mnenju je navadnega uporabnika zelo težko ali skoraj nemogoče naučiti, da v konzoli vozi kakršne koli nerazumljive čarobne ukaze in sploh ne pozna takšne besede. In tukaj je GUI, prosim.

In to je morda moj glavni argument v prid distribucije brez konzole. Kodijev GUI za toplo svetilko, res ni potreben, vendar je tam.
(Prav tako sem popolnoma pozabil omeniti, da je Kodi mogoče upravljati na daljavo, na primer iz pametnega telefona z namestitvijo aplikacije Yatse, in morda bo za koga to plus)

Konfiguracija Kodi, za upravljanje z miško

zdaj pa še raketa

<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>

Konfiguracija preglasi globalne dogodke za naslednje elemente:

  • kolesce miške se pomaknite naprej
  • kolesce miške se pomaknite nazaj
  • s pritiskom na srednji gumb miške
  • obdelava dolgega klika miške (3 sekunde ali več),
    0 ID desnega gumba, 1 ID levega gumba

več informacij o konfiguraciji dogodkov miške:

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

Kaj storiti, če kabelski sistem ni prišel k vam

»Ampak doma nimam prostih ethernetnih vrat (ali pa jih nikoli nisem imel),« lahko vzkliknejo nekateri srečni lastniki starih plošč Raspberry Pi 1 (mogoče je bila plošča kupljena za raziskavo in je ostala v omari)

In ker na plošči ni vgrajenega Wifija, brez ethernetne povezave ni zelo funkcionalna.

Seveda obstaja možnost uporabe plošče Raspberry Pi 1 brez etherneta, vendar bo od vas zahtevalo nekaj truda. Običajno je takšne stvari zanimivo početi le kot del študija nečesa novega, tj. to ni delo po meri.

Torej, razmislimo o hipotetičnem primeru uporabe za ploščo brez Etherneta:

Lahko priključite zunanji USB - Wifi adapter, ki ga vodi premislek
da mora adapter dobro delovati pod Linuxom

Opomba:

    К сожалению часть 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 
    

Če že imate usb Wifi adapter, lahko preverite, ali dobro deluje pod Linuxom takole:

  • Namestite kakšno priljubljeno distribucijo Linuxa
    splošni namen, kot je "Ubuntu Desktop"
  • Zaženite sistem
  • Povežite svoj Wifi usb adapter
  • Zaženite upravitelja omrežja in se poskusite povezati z dostopno točko WiFi
  • Če vse deluje dobro in je vaša internetna povezava stabilna, je vaš adapter dobro podprt in lahko nadaljujete s povezovanjem tega adapterja v specializirani distribuciji in po možnosti z drugimi različicami jedra
    (če ne, potem ne, žal - bolje je, da niti ne poskušate)

Podpora za zunanji adapter Wifi v "Raspberry PI"

Za pravilno delovanje adapterja WiFi v Linuxu potrebujemo dve stvari:
1) Podpora za jedro Linuxa za določen adapter Wifi
2) Prisotnost v sistemu modula jedra za določen adapter Wifi

Vzemimo za primer adapter TP-Link TL-WN722N. Ima odlično anteno.
Poiščimo nabor čipov, na katerem deluje plošča - imam ga "AR9271", opomba:

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

Zdaj pa poiščimo ime parametra v konfiguraciji jedra, ki je odgovoren za gonilnik nabora čipov AR9271, najbolje je, da poiščemo kombinacijo besed "AR9271 cateee.net"
     kjer je "cateee.net" kul stran, ki opisuje konfiguracije modulov jedra Linuxa

Takoj najdemo ime konfiguracije jedra - CONFIG_ATH9K_HTC
in ime modula jedra, ki ga potrebujemo ath9k_htc

in nato samo določite ime želenega modula v datoteki konfiguracijskega fragmenta
Linux kernel => recipes-kernel/linux/files/rbpi.cfg, dodajte vrstico:
CONFIG_ATH9K_HTC=m

Tako lahko v prihodnosti na svoj sistem priključite kakršno koli dodatno opremo (no, če je seveda že podprta v jedru Linuxa)

Kaj storiti, če ste habra geek - konstruktor

In ustvarjaš najbolj kul stvari, kot je tukaj ali pa ste študent in sanjate, da bi ustvarili nekaj podobnega.

Potem lahko na aliexpressu vzameš kakšen zaslon na dotik za RPI, tam naročiš primerno baterijo, vse povežeš s ploščo Raspberry Pi 1,2 ali 3 (bolje na 3, saj ima vgrajen Wifi), izberite vmesnik teme grafičnega oblikovanja v Kodiju, zasnovan za zaslon na dotik in voila => lahko dobite preprost predvajalnik zvoka. Seveda bo precej zajeten, a bo vaš.

  Примечание:
  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)}"

  Če se vam zdi odzivnost Kodi 17.6 GUI zaradi enega procesorskega jedra v Zero skrivnostna, potem lahko naredite finto z ušesi in zgradite starejšo, a zelo hitro različico, na primer Kodi 15.2, je bolj "prijazna" glede tega (včasih zapuščina odloča o vsem)

Na žalost nimam plošče, zato ne morem preveriti, vendar bi po mojem občutku moralo delovati.

Kratka navodila za montažo

    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
    

podrobnejša navodila za montažo
in snemanje na kartico microSDHC, glejte v prejšnjem članku

Postscript

Seveda je ideja kolumne internetnega radia tipična, poznana je vsem in na Habréju boste našli veliko člankov na to temo, npr. tukaj

In morda mislite, da sem samo prilagodil zahteve za že pripravljeno rešitev. Na to lahko odvrnem in rečem ne, pošteno pošteno.

Zgodba gospoda Erveya

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

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

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

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

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

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

Še več dobrih in drugačnih sklopov za vas in naj vam letos zapoje tudi nekdanja opeka.

Vir: www.habr.com

Dodaj komentar