De eenvoudigste internetradiokolom "Kodi" of de redding van de "Raspberry" -steen

De eenvoudigste internetradiokolom "Kodi" of de redding van de "Raspberry" -steen

Basisvoorwaarden:

  1. Er is een oud ongebruikt Raspberry Pi-bord van de eerste generatie;
  2. Het bord ligt als een dood gewicht op de kast en wordt niet gebruikt - het bord “Brick”;

Wat ik graag zou willen ontvangen:

  1. Op een bepaald moment (bijvoorbeeld door stemming)
    het bord is niet langer een "steen" en er wordt een magische geheugenkaart in geplaatst;
  2. Op het bord zijn een Ethernet-kabel en een stekker van een gewone luidspreker of hoofdtelefoon aangesloten;
  3. Nadat de stroom is ingeschakeld, wordt de voormalige “Brick” - dichter

Hoofdidee:

  1. Het minimale aantal gebaren voor elke opstelling, in het meest ideale geval sluiten we alleen de “Ethernet” -kabel, stroom en luidsprekers aan en doen we niets anders, vanaf het woord "helemaal";
  2. De voormalige “Brick” uit de doos ondersteunt bijvoorbeeld 20 internetradiostations, die in een cirkel kunnen worden geschakeld door op het muiswiel te drukken of op een specifieke GPIO-pin (twee draden aansluiten en kortsluiten (mijn droom sinds mijn kindertijd) );
  3. De bediening vindt plaats via een radiokanaal, en dit radiokanaal kan een gewone radiomuis zijn;
  4. Neem een ​​kant-en-klaar systeem en monteer de distributie in het “Yocto Project”
    die. zoals gewoonlijk doen wij u niets, aangezien alles al gedaan is.
    (het volstaat om een ​​waarnemer van buitenaf aan de andere kant te plaatsen "TV");

beschrijving

De eenvoudigste internetradiokolom “KODI”
De montage is ontworpen voor oudere Raspberry Pi 1-kaarten
(staat ergens stof te verzamelen op de kast, maar die staan ​​klaar om nog wat werk te verzetten)

Standaard wordt de m3u8-lijst met 12 internetradiostations gebruikt.

Er wordt aangenomen dat het bord zonder HDMI-uitgang werkt en om het uit te schakelen hoeft u alleen maar de voedingsadapter uit het stopcontact te halen. En als ultramodern draadloos bedieningspaneel kunt u uw superradiomuis gebruiken (of een gewone grijze muis met staart aansluiten).

Wanneer ingeschakeld, wordt de standaard netwerkinterface geconfigureerd via het DHCP-protocol en wordt het laatst opgeslagen radiostation uit de lijst afgespeeld. Het afspeelvolume wordt geregeld met een gewone muis:
(benoem eindelijk je muis tot “chef van het management”, en feliciteer hem, hij verdient het)

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

Om uw eigen lijst met internetradiostations toe te voegen
Je kunt altijd een HDMI-kabel aansluiten op je tv
en gebruik de standaard grafische interface van Kodi 17.6
(schakel het bord uit, sluit HDMI aan en schakel de voedingsadapter in)

Kodi-hoofdmenu => “Add-ons” => “Mijn add-ons”
          => “PVR-clients” => “PVR IPTV Simple Client”

Initiële implementatie

(mogelijk)
Toen ik besloot een “Internetradiokolom” te maken, had ik aanvankelijk het volgende gepland:

  • Minimalistische consoledistributie in het Yocto Project;
  • De audiostream wordt afgespeeld via GStreamer;
  • De netwerkinterface wordt geconfigureerd via DHCP;

En deze oplossing heeft een aantal voordelen:

  1. Vrij snel (het duurt 30-40 seconden om de bedrijfsmodus te bereiken vanaf de voeding);
  2. Redelijk betrouwbaar (minder programma’s, minder faalpunten);
  3. Bij een consoledistributie is het veel eenvoudiger om over te schakelen naar de alleen-lezenmodus
    die. programma's schrijven niets naar het rootbestandssysteem
    (en het bestandssysteem op SDHC-media is naar mijn mening de eerste kandidaat voor mislukking);

Opmerking:

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

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

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

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

En één groot nadeel:

“Het moet gedaan worden” d.w.z. Ik moet N aantal avonden doorbrengen
(meestal na het werk, en dit is de meest ineffectieve tijd, op dit moment denken de hersenen niet meer, ze slapen meestal)

En toch schreef ik mijn vorige artikel op Habré over het multimediacentrum Kodi en Yocto project
en de mogelijkheid om op dezelfde voet verder te gaan overmeesterde mijn onderzoeksimpuls. Meer hierover in het volgende hoofdstuk.

Kodi veranderen in een internetradioluidspreker

Om de functionaliteit toe te voegen die ik nodig heb, zal ik nog een methode toevoegen aan het recept voor het bouwen van de distributie die in de vorige is beschreven статье zie bestand 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}
}

De methoden zijn bedoeld voor het wijzigen van het rootbestandssysteem voordat een distributie-image wordt gevormd in de vorm van één onbewerkt bestand, dat naar de geheugenkaart wordt geschreven met de opdracht dd

Dit gebeurt op deze manier:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Kortom, in het hoofdconfiguratiebestand van Kodi 17.6 veranderen “drie punten”.

  • Configuratie voor het starten van het laatst geselecteerde tv-kanaal;
  • Configuratie audio-uitgang, alleen analoge audio-uitgang is altijd aangesloten;
  • Schakel automatische updates uit;
  • Opmerking:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

een meer gedetailleerde reeks acties voor elk item:

1) Klik op het tandwielpictogram in de linkerbovenhoek van het scherm
en selecteer “PVR en TV-instellingen” (afbeelding van een tv met twee hoorns)
selecteer vervolgens aan de linkerkant van het menu “Afspelen” en in het centrale gedeelte “Algemeen”
selecteer “Doorgaan vanaf laatste kanaal bij opstarten” in de vervolgkeuzelijst
door de instelling "Voorgrond" te selecteren

of duidelijker:

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

2) Klik op het tandwielpictogram in de linkerbovenhoek van het scherm en selecteer het item:

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

3) Klik op het tandwielpictogram in de linkerbovenhoek van het scherm en selecteer het item:

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

Hoe ik al twee jaar op de verkeerde manier tv kijk.

Ik moet je bekennen dat ik in twee jaar tijd nog steeds niet heb geleerd hoe ik correct tv moet kijken.

Ik kijk meestal tv in de keuken. Een Raspberry Pi 2B-bord is op de tv aangesloten en Ethernet- en HDMI-connectoren zijn op het bord aangesloten. Het bord wordt gevoed via een gewone USB-kabel, die in de USB-poort van de tv wordt gestoken, d.w.z. in feite levert het inschakelen van de tv met de standaard afstandsbediening stroom aan het Raspberry Pi-bord, en het uitschakelen van de tv vanaf de afstandsbediening reset ook onmiddellijk de stroom van het Raspberry Pi-bord.

Ja, ik ben me ervan bewust dat dit niet mogelijk is, omdat het rootbestandssysteem van het Kodi-mediacentrum (ext3) in de normale lees-/schrijfmodus functioneert. Maar ik ben een lui persoon, en eerst besloot ik te controleren hoe lang ik het systeem op deze manier kon uitschakelen, totdat het volledig stopte met laden, maar helaas is het mij na twee jaar nooit gelukt (misschien had ik gewoon geluk, Ik weet het niet).

En naar mijn mening, als deze modus geschikt zou zijn voor mijn tv, dan zou deze ook geschikt zijn voor een “eenvoudige internetradioluidspreker”, en aangezien ik het automatisch updaten van Kodi-plug-ins met geweld heb uitgeschakeld, wordt de kans op een fout in het bestandssysteem zelfs groter. minder. Tot nu toe zie ik hier geen probleem in

Opmerking:

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

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

De distributie van “Internetradioluidsprekers” die in het artikel wordt beschreven, is een huishoudelijke distributie, en wat het belangrijkste is voor een huishoudelijke distributie is een mooie GUI. Naar mijn mening is het erg moeilijk of bijna onmogelijk om een ​​gewone gebruiker te leren onbegrijpelijke magische commando's in de console in te voeren, en hij kent het woord niet eens. Maar de GUI, alsjeblieft.

En dit is misschien wel mijn belangrijkste argument vóór een niet-consoledistributie. De grafische gebruikersinterface met warme lampen van Kodi is niet echt nodig, maar hij is er wel.
(Ik vergat ook helemaal te vermelden dat Kodi op afstand kan worden bestuurd, bijvoorbeeld vanaf een smartphone, door de Yatse-applicatie te installeren, en misschien is dit voor sommigen een pluspunt)

Kodi-configuratie voor muisbesturing

en nu Raket

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

De configuratie overschrijft globale gebeurtenissen voor de volgende elementen:

  • scroll het muiswiel naar voren
  • scroll het muiswiel terug
  • klikken op de middelste muisknop
  • het verwerken van lange muisklikken (3 seconden of meer),
    0 rechterknop-ID, 1 linkerknop-ID

Meer gedetailleerde informatie over het instellen van muisgebeurtenissen:

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

Wat moet u doen als het kabelsysteem niet bij u aankomt?

“Maar ik heb thuis geen vrije Ethernet-poorten (of heb ze nooit gehad)”, zullen enkele gelukkige bezitters van oude Raspberry Pi 1-borden uitroepen (misschien is het bord gekocht voor onderzoek en is het op de kast blijven liggen)

En aangezien het bord geen ingebouwde Wifi heeft, is het zonder Ethernet-verbinding niet erg functioneel.

Natuurlijk is het mogelijk om het Raspberry Pi 1-bord zonder Ethernet te gebruiken, maar dit vergt enige inspanning van uw kant. Meestal zijn zulke dingen alleen interessant om te doen als onderdeel van het leren van iets nieuws, d.w.z. Dit is geen maatwerk.

Laten we dus een hypothetisch gebruiksscenario bekijken voor een bord zonder Ethernet:

U kunt een externe USB - Wifi-adapter aansluiten, geleid door de overweging
dat de adapter goed zou moeten werken onder Linux

Opmerking:

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

Als je al een USB Wifi-adapter hebt, kun je als volgt controleren of deze goed werkt onder Linux:

  • Installeer een veelgebruikte Linux-distributie
    algemeen gebruik, bijvoorbeeld "Ubuntu Desktop"
  • Start het systeem op
  • Sluit uw Wifi-usb-adapter aan
  • Start Netwerkbeheer en probeer verbinding te maken met uw WiFi-toegangspunt
  • Als alles goed werkt en uw internetverbinding stabiel is, wordt uw adapter goed ondersteund en kunt u doorgaan met het aansluiten van deze adapter in een gespecialiseerde distributie en mogelijk met andere versies van de kernel
    (zo niet, dan nee, helaas, het is beter om het niet eens te proberen)

Ondersteuning voor externe wifi-adapter in Raspberry PI

Om de WiFi-adapter correct te laten werken onder Linux, hebben we twee dingen nodig:
1) Linux-kernelondersteuning voor specifieke Wifi-adapter
2) De aanwezigheid van een kernelmodule in het systeem voor een specifieke Wifi-adapter

Neem bijvoorbeeld de TP-Link TL-WN722N-adapter. Het heeft een eenvoudigweg prachtige antenne.
Laten we de chipset zoeken waarop het bord werkt - voor mij is het "AR9271", opmerking:

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

Laten we nu de naam van de parameter in de kernelconfiguratie zoeken die verantwoordelijk is voor het AR9271-chipsetstuurprogramma. Het is het beste om te zoeken naar de combinatie van woorden "AR9271 catee.net"
     waar "cateee.net" een coole site is die configuraties van Linux-kernelmodules beschrijft

We vinden onmiddellijk de naam van de kernelconfiguratie - CONFIG_ATH9K_HTC
en de naam van de kernelmodule die we nodig hebben ath9k_htc

en specificeer vervolgens gewoon de naam van de vereiste module in het configuratiefragmentbestand
Linux kernel => recepten-kernel/linux/files/rbpi.cfg, voeg de regel toe:
CONFIG_ATH9K_HTC=m

Zo kunt u in de toekomst extra apparatuur op uw systeem aansluiten (nou ja, natuurlijk, als dit al wordt ondersteund in de Linux-kernel)

Wat te doen als je een habra-nerd bent - ontwerper

En jij maakt de gaafste dingen, zoals hier of je bent een student en droomt ervan iets soortgelijks te creëren.

Je kunt gewoon een soort touchscreen voor RPI nemen op AliExpress, daar een geschikte batterij bestellen, alles aansluiten op een Raspberry Pi 1,2 of 3-bord (bij voorkeur 3, omdat deze ingebouwde wifi heeft), selecteren een grafisch ontwerpthema-interface in Kodi, ontworpen voor een aanraakscherm en voila => je kunt een eenvoudige audiospeler krijgen. Natuurlijk zal het behoorlijk omvangrijk zijn, maar het zal van jou zijn.

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

  Als het reactievermogen van GUI Kodi 17.6 vanwege de enkele processorkern in Zero je mysterieus lijkt, dan kun je je oren voor de gek houden en een oudere, maar zeer snelle versie bouwen, bijvoorbeeld Kodi 15.2, deze is in dit opzicht "vriendelijker" (soms lost erfenis alles op)

Helaas heb ik het bord niet, dus ik kan het niet controleren, maar ik heb het gevoel dat het zou moeten werken.

Korte montage-instructies:

    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
    

meer gedetailleerde montage-instructies
en opnemen op een microSDHC-kaart, zie in het vorige artikel

postscriptum

Natuurlijk is het idee van een internetradiospeaker typisch, iedereen kent het en op Habré vind je bijvoorbeeld veel artikelen over dit onderwerp hier

En je denkt misschien ook dat ik de eisen simpelweg heb afgestemd op een kant-en-klare oplossing. Hier kan ik tegenin gaan en zeggen: nee, eerlijk gezegd.

Het verhaal van meneer Ervey

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

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

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

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

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

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

Nog meer goede en verschillende bijeenkomsten voor jou, en laat dit jaar zelfs de voormalige steen voor je zingen.

Bron: www.habr.com

Voeg een reactie