Najjednoduchšia rubrika internetového rádia „Kodi“ alebo spása tehly „Malina“.

Najjednoduchšia rubrika internetového rádia „Kodi“ alebo spása tehly „Malina“.

Základné predpoklady:

  1. Existuje stará nepoužitá doska Raspberry Pi prvej generácie;
  2. Doska leží na skrini ako nosná váha a nepoužíva sa - doska „Brick“;

Čo by som chcel dostať:

  1. V určitom okamihu (napríklad podľa nálady)
    doska prestáva byť „tehlou“ a je do nej vložená magická pamäťová karta;
  2. K doske je pripojený ethernetový kábel a zástrčka z bežného domáceho reproduktora alebo slúchadiel;
  3. Po pripojení napájania sa bývalá „Brick“ - spieva

Hlavná myšlienka:

  1. Minimálny počet gest pre akékoľvek nastavenie, v najideálnejšom prípade pripájame len „ethernetový“ kábel, napájanie a reproduktory a nič iné nerobíme, od slova "vôbec";
  2. Bývalá „Brick“ po vybalení podporuje napríklad 20 internetových rádií, ktoré je možné prepínať v kruhu stlačením kolieska myši alebo na konkrétnom GPIO pine (spojiť dva vodiče a skrátiť ich (môj sen od detstva) );
  3. Ovládanie sa vykonáva cez rádiový kanál a týmto rádiovým kanálom môže byť bežná rádiová myš;
  4. Vezmite hotový systém a zostavte distribúciu do projektu „Yocto Project“
    tie. ako obvykle, nič vám neurobíme, keďže všetko už bolo urobené.
    (stačí len umiestniť vonkajšieho pozorovateľa na druhú stranu "TV");

Popis

Najjednoduchší stĺpec internetového rádia „KODI“
Zostava je určená pre staršie dosky Raspberry Pi 1
(zhromažďujú prach niekde na skrini, ale ktoré sú pripravené urobiť ďalšiu prácu)

Štandardne sa používa zoznam m3u8 12 internetových rádií.

Predpokladá sa, že doska funguje bez HDMI výstupu a na jej vypnutie stačí vytiahnuť napájací adaptér zo zásuvky. A ako ultramoderný bezdrôtový ovládací panel môžete použiť svoju super rádiovú myš (alebo pripojiť obyčajnú sivú s chvostom).

Po zapnutí sa predvolené sieťové rozhranie konfiguruje pomocou protokolu DHCP a prehrá sa posledná zapamätaná rozhlasová stanica zo zoznamu, hlasitosť prehrávania sa ovláda bežnou myšou:
(nakoniec vymenujte svoju myš za „náčelníka manažmentu“ a blahoželáme jej, zaslúži si to)

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

Ak chcete pridať svoj vlastný zoznam internetových rozhlasových staníc
vždy môžete pripojiť kábel HDMI k televízoru
a používať štandardné grafické rozhranie Kodi 17.6
(vypnite dosku, pripojte HDMI a zapnite napájací adaptér)

Hlavná ponuka Kodi => „Doplnky“ => „Moje doplnky“
          => “Klienti PVR” => “Jednoduchý klient PVR IPTV”

Prvotná implementácia

(možné)
Spočiatku, keď som sa rozhodol vytvoriť „stĺpec internetového rádia“, plánoval som nasledovné:

  • Minimalistická konzolová distribúcia v projekte Yocto;
  • Zvukový prúd sa prehráva cez GStreamer;
  • Sieťové rozhranie sa konfiguruje cez DHCP;

A toto riešenie má niekoľko výhod:

  1. Pomerne rýchlo (dosiahnutie prevádzkového režimu z napájania trvá 30-40 sekúnd);
  2. Pomerne spoľahlivé (menej programov, menej bodov zlyhania);
  3. Distribúciu konzoly je oveľa jednoduchšie prepnúť do režimu iba na čítanie
    tie. programy nezapisujú nič do koreňového súborového systému
    (a súborový systém na SDHC médiu je podľa mňa prvým kandidátom na neúspech);

Poznámka:

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

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

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

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

A jedna hlavná nevýhoda:

„Musí sa to urobiť“ t.j. Potrebujem stráviť N počet večerov
(zvyčajne po práci, a to je najneefektívnejší čas, v tomto čase už mozog nemyslí, väčšinou spí)

A predsa som o multimediálnom centre napísal svoj predchádzajúci článok na Habré Kodi a Yocto projekt
a možnosť pokračovať v rovnakom duchu prebila môj výskumný impulz. Viac o tom v ďalšej kapitole.

Premena Kodi na reproduktor internetového rádia

Aby som pridal funkcionalitu, ktorú potrebujem, pridám do receptu na zostavenie distribúcie opísaného v predchádzajúcom ešte jeden spôsob článok pozri súbor 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}
}

Metódy sú určené na úpravu koreňového súborového systému pred vytvorením distribučného obrazu vo forme jedného surového súboru, ktorý sa zapíše na pamäťovú kartu príkazom dd

Robí sa to týmto spôsobom:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Stručne povedané, v hlavnom konfiguračnom súbore Kodi 17.6 sa zmenia „tri body“.

  • Konfigurácia pre spustenie posledného zvoleného TV kanálu;
  • Konfigurácia zvukového výstupu, vždy je pripojený iba analógový zvukový výstup;
  • Zakázať automatické aktualizácie;
  • Poznámka:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

podrobnejšiu postupnosť akcií pre každú položku:

1) Kliknite na ikonu ozubeného kolieska v ľavom hornom rohu obrazovky
a vyberte „Nastavenia PVR a TV“ (obrázok televízora s dvoma rohmi)
potom na ľavej strane ponuky vyberte „Prehrávanie“ a v strednej časti „Všeobecné“
v rozbaľovacom zozname vyberte možnosť „Pokračovať od posledného kanála pri spustení“.
výberom nastavenia "Popredie".

alebo jasnejšie:

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

2) Kliknite na ikonu ozubeného kolieska v ľavom hornom rohu obrazovky a vyberte položku:

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

3) Kliknite na ikonu ozubeného kolieska v ľavom hornom rohu obrazovky a vyberte položku:

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

Ako zle pozerám televíziu už dva roky.

Musím sa vám priznať, že za dva roky som sa stále nenaučil správne pozerať televíziu.

Väčšinou pozerám televíziu v kuchyni. K televízoru je pripojená doska Raspberry Pi 2B a k doske sú pripojené konektory Ethernet a HDMI. Doska je napájaná cez bežný USB kábel, ktorý sa zapája do USB portu televízora, t.j. v skutočnosti zapnutie televízora pomocou štandardného diaľkového ovládača napája dosku Raspberry Pi a vypnutie televízora pomocou diaľkového ovládača tiež okamžite resetuje napájanie z dosky Raspberry Pi.

Áno, som si dobre vedomý toho, že sa to nedá, pretože koreňový súborový systém centra médií Kodi (ext3) funguje v normálnom režime čítania/zápisu. Ale som lenivý človek a najprv som sa rozhodol skontrolovať, ako dlho môžem systém takto vypnúť, kým sa úplne neprestane načítavať, no bohužiaľ, po dvoch rokoch sa mi to už nikdy nepodarilo (možno som mal len šťastie, neviem).

A podľa môjho názoru, ak by bol tento režim vhodný pre môj televízor, potom by bol vhodný aj pre „jednoduchý reproduktor internetového rádia“, a keďže som násilne zakázal automatickú aktualizáciu doplnkov Kodi, pravdepodobnosť zlyhania súborového systému sa vyrovná menej. Zatiaľ v tom nevidím problém

Poznámka:

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

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

Distribúcia „Internetové rádiá“ popísaná v článku je domáca a pre distribúciu v domácnosti je najdôležitejšie krásne GUI. Podľa môjho názoru je veľmi ťažké alebo takmer nemožné naučiť bežného používateľa zadávať do konzoly akékoľvek nezrozumiteľné magické príkazy a ani to slovo nepozná. Ale GUI, prosím.

A to je možno môj hlavný argument v prospech nekonzolovej distribúcie. Grafické používateľské rozhranie s teplou lampou Kodi nie je naozaj potrebné, ale je tam.
(Aj som úplne zabudol spomenúť, že Kodi sa dá ovládať na diaľku, napríklad zo smartfónu, nainštalovaním aplikácie Yatse a možno pre niekoho to bude plus)

Konfigurácia Kodi na ovládanie myši

a teraz Rocket

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

Konfigurácia prepíše globálne udalosti pre nasledujúce prvky:

  • rolujte kolieskom myši dopredu
  • rolovanie kolieskom myši späť
  • kliknutím prostredným tlačidlom myši
  • spracovanie dlhých kliknutí myšou (3 sekundy alebo viac),
    0 ID pravého tlačidla, 1 ID ľavého tlačidla

Podrobnejšie informácie o nastavení udalostí myši:

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

Čo robiť, ak k vám káblový systém nedorazí

"Ale nemám doma žiadne voľné ethernetové porty (alebo som nikdy nemal)," môžu zvolať niektorí šťastní majitelia starých dosiek Raspberry Pi 1 (možno bola doska kúpená na výskum a zostala ležať na skrini)

A keďže doska nemá zabudovanú Wifi, bez ethernetového pripojenia je málo funkčná.

Samozrejme je možné použiť dosku Raspberry Pi 1 aj bez Ethernetu, bude to však vyžadovať určité úsilie z vašej strany. Väčšinou sú takéto veci zaujímavé robiť len v rámci učenia sa niečoho nového, t.j. Toto nie je zákazková práca.

Pozrime sa teda na hypotetický prípad použitia dosky bez Ethernetu:

Môžete pripojiť externý USB - Wifi adaptér podľa úvahy
že adaptér by mal dobre fungovať pod Linuxom

Poznámka:

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

Ak už máte adaptér USB Wifi, môžete skontrolovať, či funguje správne v systéme Linux takto:

  • Nainštalujte nejakú široko používanú distribúciu Linuxu
    všeobecný účel, napríklad „Ubuntu Desktop“
  • Spustite systém
  • Pripojte svoj Wifi USB adaptér
  • Spustite správcu siete a skúste sa pripojiť k vášmu prístupovému bodu WiFi
  • Ak všetko funguje dobre a vaše internetové pripojenie je stabilné, váš adaptér je dobre podporovaný a môžete pokračovať v práci na pripájaní tohto adaptéra v špecializovanej distribúcii a prípadne s inými verziami jadra
    (ak nie, tak nie, bohužiaľ, je lepšie to ani neskúšať)

Podpora externého Wifi adaptéra v Raspberry PI

Aby WiFi adaptér správne fungoval v Linuxe, potrebujeme dve veci:
1) Podpora jadra Linuxu pre konkrétny adaptér Wifi
2) Prítomnosť modulu jadra v systéme pre konkrétny adaptér Wifi

Vezmite si napríklad adaptér TP-Link TL-WN722N. Má jednoducho skvelú anténu.
Poďme nájsť čipset, na ktorom doska funguje - pre mňa je to "AR9271", Poznámka:

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

Teraz nájdime názov parametra v konfigurácii jadra zodpovedného za ovládač čipovej sady AR9271, najlepšie je hľadať kombináciu slov „AR9271 catee.net“
     kde "cateee.net" je skvelá stránka popisujúca konfigurácie modulov jadra Linuxu

Okamžite nájdeme názov konfigurácie jadra - CONFIG_ATH9K_HTC
a názov modulu jadra, ktorý potrebujeme ath9k_htc

a potom stačí zadať názov požadovaného modulu v súbore konfiguračného fragmentu
Linuxové jadro => recepty-kernel/linux/files/rbpi.cfg, pridajte riadok:
CONFIG_ATH9K_HTC=m

V budúcnosti tak môžete k svojmu systému pripojiť akékoľvek ďalšie vybavenie (samozrejme, ak je už podporované v jadre Linuxu)

Čo robiť, ak ste habra geek - dizajnér

A vytvárate tie najskvelejšie veci, ako napr tu alebo ste študent a snívate o vytvorení niečoho podobného.

Len tak mimochodom si môžete vziať nejaký dotykový displej pre RPI na aliexpress, objednať tam vhodnú batériu, pripojiť to všetko k doske Raspberry Pi 1,2 alebo 3 (najlepšie 3, pretože má vstavanú Wifi), vybrať grafické rozhranie témy v Kodi, navrhnuté pre dotykovú obrazovku a voila => môžete získať jednoduchý audio prehrávač. Samozrejme, že bude dosť objemný, ale bude váš.

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

  Ak sa vám odozva GUI Kodi 17.6 vďaka jedinému procesorovému jadru v Zero zdá záhadná, môžete oklamať uši a postaviť si staršiu, no veľmi rýchlu verziu, napríklad Kodi 15.2, ktorá je v tomto smere „priateľskejšia“. (niekedy dedičstvo všetko vyrieši)

Bohužiaľ, nemám tabuľu, takže to nemôžem skontrolovať, ale mám pocit, že by to malo fungovať.

Stručný montážny návod

    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ší návod na montáž
a nahrávanie na microSDHC kartu, viď v predchádzajúcom článku

dovetok

Samozrejme, predstava reproduktora internetového rádia je typická, každý ju pozná a na Habré nájdete veľa článkov na túto tému, napr. tu

A možno si tiež myslíte, že som jednoducho prispôsobil požiadavky hotovému riešeniu. Na to môžem oponovať a povedať, že nie, úprimne.

Príbeh pána Erveyho

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

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

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

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

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

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

Viac dobrých a rôznych montáží pre vás a nech vám tento rok zaspieva aj bývalá tehla.

Zdroj: hab.com

Pridať komentár