Yksinkertaisin Internet-radiokarake "Kodi" tai "Vadelma" -tiilen pelastus

Yksinkertaisin Internet-radiokarake "Kodi" tai "Vadelma" -tiilen pelastus

Perusedellytykset:

  1. Siellä on vanha käyttämätön ensimmäisen sukupolven Raspberry Pi -levy;
  2. Lauta makaa kaapin päällä kuolleena painona eikä sitä käytetä - "Brick"-levy;

Mitä haluaisin saada:

  1. Tiettynä ajankohtana (esimerkiksi mielialan mukaan)
    levy lakkaa olemasta "tiili", ja siihen asetetaan taikamuistikortti;
  2. Ethernet-kaapeli ja pistoke tavallisesta kodin kaiuttimesta tai kuulokkeista on kytketty korttiin;
  3. Virran kytkemisen jälkeen entinen "tiili" - laulaa

Pääidea:

  1. Vähimmäismäärä liikkeitä mille tahansa asetukselle, ihanteellisessa tapauksessa yhdistämme vain "Ethernet"-kaapelin, virran ja kaiuttimet, emmekä tee mitään muuta, sanasta "ollenkaan";
  2. Entinen "Brick" out of the box tukee esimerkiksi 20 Internet-radioasemaa, jotka voidaan kytkeä ympyrässä painamalla hiiren rullaa tai tiettyä GPIO-nastaa (liitä kaksi johtoa ja oikosulje ne (unelmani lapsuudesta) );
  3. Ohjaus tapahtuu radiokanavan kautta, ja tämä radiokanava voi olla tavallinen radiohiiri;
  4. Ota valmis järjestelmä ja kokoa jakelu "Yocto-projektiksi"
    nuo. Kuten tavallista, emme tee sinulle mitään, koska kaikki on jo tehty.
    (Riittää vain sijoittaa ulkopuolinen tarkkailija toiselle puolelle "TV");

Kuvaus

Yksinkertaisin Internet Radio -sarake “KODI”
Kokoonpano on suunniteltu vanhemmille Raspberry Pi 1 -levyille
(keräävät pölyä jostain kaapista, mutta jotka ovat valmiita tekemään lisää töitä)

Oletuksena käytetään m3u8-luetteloa, jossa on 12 Internet-radioasemaa.

Oletetaan, että kortti toimii ilman HDMI-lähtöä, ja sen sammuttamiseksi sinun tarvitsee vain irrottaa virtalähde pistorasiasta. Huippumodernina langattomana ohjauspaneelina voit käyttää superradiohiiriäsi (tai liittää tavallisen harmaaseen hännälliseen).

Kun se on päällä, oletusverkkoliitäntä konfiguroidaan DHCP-protokollan kautta ja toistetaan viimeinen muistiin tallennettu radioasema luettelosta, toiston äänenvoimakkuutta ohjataan tavallisella hiirellä:
(nimittäkää vihdoin hiiresi "johtopäälliköksi" ja onnittele, se ansaitsee sen)

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

Voit lisätä oman luettelosi Internet-radioasemista
voit aina liittää HDMI-kaapelin televisioon
ja käytä Kodi 17.6:n tavallista graafista käyttöliittymää
(sammuta kortti, liitä HDMI ja kytke virtalähde päälle)

Kodi-päävalikko => “Lisäosat” => “Omat lisäosat”
          => "PVR Clients" => "PVR IPTV Simple Client"

Alkuperäinen toteutus

(mahdollista)
Aluksi, kun päätin tehdä "Internet Radio Columnin", suunnittelin seuraavaa:

  • Minimalistinen konsolijakelu Yocto-projektissa;
  • Äänivirta toistetaan GStreamerin kautta;
  • Verkkoliitäntä konfiguroidaan DHCP:n kautta;

Ja tällä ratkaisulla on useita etuja:

  1. Melko nopea (30-40 sekuntia päästään käyttötilaan virtalähteestä);
  2. Melko luotettava (vähemmän ohjelmia, vähemmän vikakohtia);
  3. Konsolijakelu on paljon helpompi vaihtaa vain luku -tilaan
    nuo. ohjelmat eivät kirjoita mitään juuritiedostojärjestelmään
    (ja SDHC-median tiedostojärjestelmä on mielestäni ensimmäinen epäonnistunut);

Huom:

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

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

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

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

Ja yksi tärkein haittapuoli:

"Se on tehtävä" ts. Minun täytyy viettää N määrä iltaa
(yleensä töiden jälkeen, ja tämä on tehottominta aikaa, tähän aikaan aivot eivät enää ajattele, se yleensä nukkuu)

Ja silti, kirjoitin edellisen artikkelini Habreen multimediakeskuksesta Kodi ja Yocto projekti
ja mahdollisuus jatkaa samaan malliin päihitti tutkimusimpulssini. Tästä lisää seuraavassa luvussa.

Kodin muuttaminen Internet-radiokaiuttimeksi

Lisätäkseni tarvitsemani toiminnallisuuden lisään vielä yhden menetelmän edellisessä kuvattuun jakelun rakentamisreseptiin статье katso tiedosto 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}
}

Menetelmät on tarkoitettu juuritiedostojärjestelmän muokkaamiseen ennen jakelukuvan muodostamista yhden raakatiedoston muodossa, joka kirjoitetaan muistikortille komennolla dd

Tämä tehdään näin:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Lyhyesti sanottuna Kodi 17.6:n pääasetustiedostossa "kolme pistettä" muuttuu

  • Kokoonpano viimeksi valitun TV-kanavan käynnistämiseksi;
  • Äänilähdön kokoonpano, vain analoginen äänilähtö on aina kytkettynä;
  • Poista automaattiset päivitykset käytöstä;
  • Huom:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

yksityiskohtaisempi toimintosarja jokaiselle kohteelle:

1) Napsauta rataskuvaketta näytön vasemmassa yläkulmassa
ja valitse "PVR and TV Settings" (kuva televisiosta, jossa on kaksi torvea)
Valitse sitten valikon vasemmasta reunasta "Toisto" ja keskiosasta "Yleistä"
valitse avattavasta luettelosta "Jatka viimeisestä kanavasta käynnistyksen yhteydessä".
valitsemalla "Etuala"-asetuksen

tai selkeämmin:

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

2) Napsauta "ratas"-kuvaketta näytön vasemmassa yläkulmassa ja valitse kohde:

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

3) Napsauta "ratas"-kuvaketta näytön vasemmassa yläkulmassa ja valitse kohde:

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

Kuinka olen katsonut televisiota väärällä tavalla kahden vuoden ajan.

Minun on myönnettävä teille, että en ole kahden vuoden aikana vieläkään oppinut katsomaan televisiota oikein.

Katson yleensä televisiota keittiössä. Raspberry Pi 2B -kortti on kytketty televisioon ja Ethernet- ja HDMI-liittimet on liitetty korttiin. Levy saa virtaa tavallisesta USB-kaapelista, joka on kytketty television USB-porttiin, ts. Itse asiassa television käynnistäminen tavallisella kaukosäätimellä syöttää virtaa Raspberry Pi -kortille, ja television sammuttaminen kaukosäätimestä palauttaa välittömästi virran Raspberry Pi -levyltä.

Kyllä, tiedän hyvin, että tätä ei voi tehdä, koska Kodi-mediakeskuksen (ext3) juuritiedostojärjestelmä toimii normaalissa luku-/kirjoitustilassa. Mutta olen laiska ihminen, ja päätin ensin tarkistaa kuinka kauan voin sammuttaa järjestelmän tällä tavalla, kunnes se lakkasi latautumasta kokonaan, mutta valitettavasti kahden vuoden jälkeen en koskaan onnistunut tekemään tätä (ehkä olin vain onnekas, en tiedä).

Ja mielestäni, jos tämä tila sopisi televisiooni, niin se sopisi myös "yksinkertaiseen Internet-radiokaiuttimeen", ja koska väkisin poistin Kodi-laajennusten automaattisen päivityksen, tiedostojärjestelmän vian todennäköisyys tasaantuu. Vähemmän. Toistaiseksi en näe tässä ongelmaa

Huom:

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

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

Artikkelissa kuvattu ”Internet-radiokaiuttimet”-jakelu on kotitalous, ja kotijakelulle tärkeintä on kaunis graafinen käyttöliittymä. Mielestäni on erittäin vaikeaa tai melkein mahdotonta opettaa tavallista käyttäjää syöttämään käsittämättömiä taikakomentoja konsoliin, eikä hän edes tiedä sanaa. Mutta graafinen käyttöliittymä, kiitos.

Ja tämä on ehkä tärkein argumenttini ei-konsolijakelun puolesta. Kodin lämminlamppuinen graafinen käyttöliittymä, sitä ei todellakaan tarvita, mutta se on olemassa.
(Unohdin myös täysin mainita, että Kodia voi ohjata etänä, esimerkiksi älypuhelimesta, asentamalla Yatse-sovellus, ja ehkä joillekin tämä on plussaa)

Kodi-määritykset hiiren ohjaamiseen

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

Määritys ohittaa maailmanlaajuiset tapahtumat seuraaville elementeille:

  • vieritä hiiren rullaa eteenpäin
  • vieritä hiiren rullaa taaksepäin
  • napsauttamalla hiiren keskimmäistä painiketta
  • käsittelee pitkiä hiiren napsautuksia (3 sekuntia tai enemmän),
    0 oikean painikkeen tunnus, 1 vasemman painikkeen tunnus

Tarkempia tietoja hiiren tapahtumien asettamisesta:

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

Mitä tehdä, jos kaapelijärjestelmä ei tule perille

"Mutta minulla ei ole ilmaisia ​​Ethernet-portteja kotona (tai ei koskaan ole)", jotkut vanhojen Raspberry Pi 1 -levyjen onnellisista omistajista voivat huudahtaa (ehkä kortti ostettiin tutkimusta varten ja jäi kaappiin makaamaan)

Ja koska levyllä ei ole sisäänrakennettua Wifiä, se ei ole kovin toimiva ilman Ethernet-yhteyttä.

Raspberry Pi 1 -korttia voi tietysti käyttää ilman Ethernetiä, mutta se vaatii hieman vaivaa. Yleensä tällaisia ​​asioita on mielenkiintoista tehdä vain osana uuden oppimista, ts. Tämä ei ole tilaustyötä.

Tarkastellaan siis hypoteettista käyttötapausta levylle ilman Ethernetiä:

Voit liittää ulkoisen USB - Wifi-sovittimen harkinnan mukaan
että sovittimen pitäisi toimia hyvin Linuxissa

Huom:

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

Jos sinulla on jo USB Wifi -sovitin, voit tarkistaa, toimiiko se hyvin Linuxissa seuraavasti:

  • Asenna laajalti käytetty Linux-jakelu
    yleiskäyttöinen, esimerkiksi "Ubuntu Desktop"
  • Käynnistä järjestelmä
  • Liitä Wifi-usb-sovitin
  • Käynnistä verkonhallinta ja yritä muodostaa yhteys WiFi-tukiasemaasi
  • Jos kaikki toimii hyvin ja Internet-yhteytesi on vakaa, sovittimesi on hyvin tuettu ja voit jatkaa tämän sovittimen yhdistämistä erikoistuneessa jakelussa ja mahdollisesti muiden ytimen versioiden kanssa.
    (jos ei, niin ei, valitettavasti, on parempi olla edes yrittämättä)

Tuki ulkoiselle Wifi-sovittimelle Raspberry PI:ssä

Jotta WiFi-sovitin toimisi oikein Linuxissa, tarvitsemme kaksi asiaa:
1) Linux-ytimen tuki tietylle Wifi-sovittimelle
2) Ydinmoduulin läsnäolo järjestelmässä tietylle Wifi-sovittimelle

Otetaan esimerkiksi TP-Link TL-WN722N sovitin. Siinä on yksinkertaisesti upea antenni.
Etsitään piirisarja, jolla kortti toimii - minulle se on "AR9271", Huomautus:

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

Etsitään nyt parametrin nimi ytimen kokoonpanosta, joka vastaa AR9271-piirisarjan ohjaimesta, on parasta etsiä sanayhdistelmä "AR9271 catee.net".
     jossa "cateee.net" on hieno sivusto, joka kuvaa Linuxin ydinmoduulien kokoonpanoja

Löydämme heti ytimen kokoonpanon nimen - CONFIG_ATH9K_HTC
ja tarvitsemamme ydinmoduulin nimi ath9k_htc

ja määritä sitten halutun moduulin nimi kokoonpanofragmenttitiedostossa
Linux-ydin => recipes-kernel/linux/files/rbpi.cfg, lisää rivi:
CONFIG_ATH9K_HTC=m

Siten voit tulevaisuudessa liittää järjestelmääsi mitä tahansa lisälaitteita (tietenkin, jos sitä tuetaan jo Linux-ytimessä)

Mitä tehdä, jos olet habra-nörtti - suunnittelija

Ja sinä luot hienoimpia asioita, kuten täällä tai olet opiskelija ja haaveilet jonkun samanlaisen luomisesta.

Ihan suoraan, voit ottaa jonkinlaisen kosketusnäytön RPI:tä varten aliexpressissä, tilata sieltä sopivan akun, liittää sen kaikki Raspberry Pi 1,2 tai 3 -korttiin (mieluiten 3, koska siinä on sisäänrakennettu Wifi), valitse graafisen suunnittelun teemakäyttöliittymä Kodissa, suunniteltu kosketusnäytölle ja voila => saat yksinkertaisen äänisoittimen. Tietysti se on melko iso, mutta se on sinun.

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

  Jos GUI Kodi 17.6:n reagointikyky Zeron yhden prosessorin ytimen takia tuntuu sinulle mystiseltä, voit huijata korviasi ja rakentaa vanhemman, mutta erittäin nopean version, esimerkiksi Kodi 15.2, se on tässä suhteessa "ystävällisempi" (joskus perintö ratkaisee kaiken)

Valitettavasti minulla ei ole taulua, joten en voi tarkistaa, mutta minusta tuntuu, että sen pitäisi toimia.

Lyhyet kokoamisohjeet

    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
    

tarkemmat asennusohjeet
ja tallennus microSDHC-kortille, katso edellisessä artikkelissa

jälkikirjoitus

Tietenkin ajatus Internet-radiokaiuttimesta on tyypillinen, kaikki tietävät sen ja Habrelta löydät monia artikkeleita tästä aiheesta, mm. täällä

Ja saatat myös ajatella, että räätälöin vaatimukset valmiiksi ratkaisuksi. Voin vastata tähän ja sanoa, että ei, rehellisesti.

herra Erveyn tarina

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

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

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

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

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

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

Lisää hyviä ja erilaisia ​​kokoonpanoja sinulle, ja vieläpä entinen tiili laulaa sinulle tänä vuonna.

Lähde: will.com

Lisää kommentti