Lihtne internetiraadio kõlar «Kodi» või päästmine «Raspberry» telliskivist.

Lihtne internetiraadio kõlar «Kodi» või päästmine «Raspberry» telliskivist.

Põhitingimused:

  1. On olemas vana kasutamata Raspberry Pi esimese põlvkonna plaat;
  2. Plaat seisab kapis kasutult — plaat on nagu «Telliskivi»;

Mida soovitakse saada:

  1. Teatud hetkel (näiteks tuju järgi)
    plaat lakab olemast «Telliskivi» ja sellega sisestatakse maagiline mälukaart;
  2. Plaadile on ühendatud Ethernet kaabel ja pistik tavalise kodumajapidamise kõlarist või kõrvaklappidest;
  3. Pärast toite andmist on endine «Telliskivi» — laulab

Peamine idee:

  1. Minimaalne liikumiste arv mis tahes seadistamiseks, ideaaljuhul ühendame ainult «Ethernet» kaabli, toite ja kõlarid, ja rohkem mitte midagi, sõna otseses mõttes «üldse»;
  2. Endine «Telliskivi» pakub näiteks 20 interneti raadiokanali tuge, nende vahel vahetamine toimub näiteks hiire ratast keerates või teatud GPIO pinni kaudu (ühendades kaks juhet ja sulgedes need (minu lapsepõlve unistus));
  3. Juhtimine toimub raadiokanali kaudu, milleks võib olla tavaline raadiomähi;
  4. Võtta valmis süsteem, distributsioon koguda «Yocto Project»
    seega, nagu tavaliselt, me ei tee midagi, kuna kõik on juba tehtud.
    (piisab vaid asetada kolmas jälgija teisele poole «Teler»);

Kirjeldus

Lihtsaim Interneti raadiokõlar «KODI»
Kogumik on mõeldud vanadele Raspberry Pi 1 plaatidele
(mis tolmu koguvad kuskil kapis, kuid on endiselt töötamiseks valmis)

Vaikimisi kasutatakse nimekirja m3u8, mis sisaldab 12 Interneti raadiokanalit.

Eeldatakse, et plaat töötab ilma HDMI väljundita, ja selle väljalülitamiseks piisab toiteadapteri seinast välja tõmbamisest. Ja ultra kaasaegse juhtmevaba puldina võite kasutada oma super raadiomüüki (või ühendada tavaline hall kaabliga).

Seadmise ajal konfigureeritakse võrgu liides vaikimisi läbi DHCP protokolli ja mängitakse ette viimane salvestatud raadiojaam nimekirjast; helitugevuse reguleerimine toimub tavalise hiirega:
(nimetage lõpuks oma hiir „halduriks“ ja õnnitlege teda, ta on seda väärt)

  rattaske ettepoole - helitugevuse suurendamine
  rattaske tagasi - helitugevuse vähendamine
  pikaajaline vajutus (3 sek ja rohkem) hiire paremal nupul
                   - järgmise raadiojaama valimine
  pikaajaline vajutus (3 sek ja rohkem) hiire vasakul nupul
                   - eelmise raadiojaama valimine

Oma Interneti raadiojaamade nimekirja lisamiseks
võite alati ühendada HDMI-kaabli telerist
ja kasutada Kodi 17.6 tavapärast graafilist liidest
(välja lülitada plaat, ühendada HDMI ja sisse lülitada toiteadapter)

Peamenüü Kodi => „Täiendused” => „Minu täiendused”
          => „PVR-klientide” => „PVR IPTV Simple Client”

Esialgne teostus

(võimalik)
Alguses, kui otsustasin teha „Interneti Raadio kõlarit”, kavatsesin järgmist:

  • Minimalistlik konsoolidistributsioon Yocto Projectis;
  • Heli edastus toimub GStreamer'i kaudu;
  • Võrguühendus seadistatakse DHCP kaudu;

Ja sellisel lahendusel on mitmeid eeliseid:

  1. Piisavalt kiire (töörežiimi jõudmine toite andmisest 30-40 sekundi jooksul);
  2. Piisavalt usaldusväärne (vähem programme, vähem rikkepunkte);
  3. Konsoliversioon on tunduvalt lihtsam seadistada ainult lugemisrežiimi
    st. programmid ei salvesta midagi juurefailisüsteemi
    (ja SDHC mälukaardi failisüsteem on minu arvates esimene, mis rikkeid kogeb);

Märkus:

    Yocto-s on võimalik juurfailisüsteemi (rootfs) 
    seadistada ainult lugemise režiim üsna lihtsalt, 
    muutes vaid ühe parameetri koostamise ajal.

    Yocto pakub välja kaks võimalust:
    1) Failisüsteemi töö tavalises lugemise/kirjutamise režiimis 
    (nii toimivad kõik universaalsed distributsioonid, näiteks Ubuntu)
    2) Failisüsteemi töö ainult lugemise režiimis
    (nii toimivad spetsialiseeritud distributsioonid, näiteks ruuteri tarkvaras)

    Ainult lugemise režiimis mountitakse kõik kaustad, kuhu tavaliselt 
    rakenduste ja teenuste andmed kirjutatakse, 
    mällu (näiteks kaust /var/log ja sarnased)
    Andmed kehtivad ainult praeguse tööperioodi jooksul ja pärast toitekatkestust
    andmed kaovad.

    Kui Yocto Project'is määrate koostamise ajal "only read" 
    kasutama, siis pärast koostamist on teie distributsioon seadistatud ainult lugemiseks, 
    kuid saate alati lisada võimaluse dünaamiliseks muutmiseks  
    "only read" režiimist "read/write" režiimi, kuid see on juba hoopis teine ​​lugu ...
    

Ja üks peamine puudus:

«Seda tuleb teha», st mul on vaja kulutada N õhtut.
(tavaliselt pärast tööd, ja see on kõige ebaefektiivsem aeg, sel ajal mõistus ei mõtle, ta tavaliselt magab)

Ja veel, oma eelmist artiklit Habr´is kirjutasin ma multimeedia keskuse kohta Kodi ja Yocto project
ja võimalus jätkata samas vaimus ületas minu uurimishimu. Selle kohta järgmises peatükis.

Kodi muutmine internetiraadioks

Vajalikku funktsionaalsust lisamiseks lisan ma retsepti kogumise meetodi, millest on juttu eelnevas artiklis vt fail berserk-image.bb

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

# viimati valitud TV kanali käivitamise konfiguratsioon (1-taust 2-esiplaan)
F1_LINE = "<startlast default="true">0</startlast>"
R1_LINE = "<startlast>1</startlast>"
# heli väljundi konfiguratsioon, alati on ühendatud ainult analoogne audio väljund
F2_LINE = "<audiodevice default="true">PI:HDMI</audiodevice>"
R2_LINE = "<audiodevice>PI:Analogue</audiodevice>"
# kuna HDMI vaikimisi ei kasutata, lülitan välja automaatse uuendamise
# muidu võib juhtuda, et toide on ära läinud, aga andmed on salvestamata
F3_LINE = "<addonupdates default="true">0</addonupdates>"
R3_LINE = "<addonupdates>2</addonupdates>"


# meetod vastutab konfiguratsiooni lisamise eest:
# mis muutab "Nutitelevisiooni" "lihtsaks Interneti raadiokõlariks"
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"
# kuna HDMI väljundit ei pruugita kasutada, 
# tuleb välja lülitada "teretulemast"
off_kodi_welcome() {
    sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}

Meetodid on mõeldud juurfailisüsteemi muutmiseks enne jaotuse pildi loomist, mis salvestatakse ühe raw-failina, mis kirjutatakse mälukaardile käsuga dd

See toimub järgmiselt:
ROOTFS_POSTPROCESS_COMMAND += «add_radio_guisettings; off_kodi_welcome;»

Lühidalt öeldes muudetakse Kodi 17.6 konfiguratsiooni põhifailis „kolme punkti“

  • Viimati valitud TV kanali käivitamise konfiguratsioon;
  • Heli väljundi konfiguratsioon, kus on alati ühendatud ainult analoogaudio väljund;
  • Automaatse värskendamise keelamine;
  • Märkus:
        Ainus, millega mul oli raskusi, 
        oli see, et pidin veel ka andmebaasifaili 
        formaadis sqlite => TV29.db tõmbama, kus on märgitud 
        praegu predseeritav TV kanal 
        (kuna vaikimisi ei ole ükski kanal valitud), 
        ja läbi xml konfiguratsiooni Kodi seda teha ei saa.
        

Iga punkti jaoks üksikasjalik tegevusjärjestus:

1) Klõpsake ekraani vasakus ülanurgas hammasratta ikoonil
ja valige „PVR ja TV seaded“ (televisiooni ikoon kahe sarvega)
siis vasakus menüüs valige „Taasesitus“ ja keskel sektsioonis „Üldine“
valige rippmenüüst „Jätka viimase kanaliga käivitamisel“
valides seadistuse „Eesmine plaan“

või veelgi selgemalt:

      "PVR ja TV seadistused" 
       => "Esitamine" 
       => "Jätka viimase kanaliga käivitamisel" => "Eesmine plaan"

2) Klõpsake ekraani vasakus ülanurgas nuppu „hammasratta“ ja valige punkt:

       "Süsteemi seadistused"  
       => "Lisandmoodulid" => "Uuendused" => "Ärge kontrollige uuendusi kunagi"

3) Klõpsake ekraani vasakus ülanurgas nuppu „hammasratta“ ja valige punkt:

       "Süsteemi seadistused" 
       => "Heli" => "Heli väljundseade" => "PI: Analoog"

Kuidas ma kaks aastat vale televiisorit vaatan.

Pean teile tunnistama, et ma ei ole kahe aasta jooksul õigesti televiisorit vaatama õppinud.

Mina vaatan tavaliselt telekat köögis. Teleka külge on ühendatud Raspberry Pi 2B plaat, ning plaadil on Ethernet ja HDMI pistikud. Plaadi toide tuleb tavalisest USB-kaablist, mis on ühendatud teleka USB-porti, st, et teleka sisse lülitamine tavalise puldiga toidab ka Raspberry Pi plaati, ning teleka väljalülitamine puldiga lõpetab samuti otse toite Raspberry Pi plaadi pealt.

Jah, ma olen täiesti teadlik, et nii teha ei tohiks, kuna Kodi meediakeskuse juurefailisüsteem (ext3) töötab mul tavapärases lugemise/kirjutamise režiimis. Kuid ma olen laisk inimene ning alguses otsustasin kontrollida, kui kaua saan süsteemi välja lülitada, kuni ta täielikult enam ei käivitu, kuid kahjuks ei ole ma kahe aasta jooksul seda suutnud teha (võimalik, et ma lihtsalt paar palju, ei tea).

Ja arvan, et kui selline režiim sobib minu televiisori jaoks, siis sobib see ka "tavalisele Interneti raadiokõlarile", ja kuna olen sundinud Kodi pluginad automaatset värskendust välja lülitama, siis väheneb ka failisüsteemi tõrke tõenäosus. Praegu ma sellega probleeme ei näe.

Märkus:

    Kuid alati saate, kui soovite, ühe yocto käsklusega 
    IMAGE_FEATURES += "read-only-rootfs"

    ja teatud maagia abil viia oma distributsioon "read only" režiimi.
    

Artiklis kirjeldatud „interneti raadiokõlari“ distributsioon on kodumaine, ja mis on kodumaise distributsiooni jaoks kõige olulisem — see on kaunis GUI. Minu arvamus on, et on väga raske või peaaegu võimatu õpetada tavalist kasutajat sisestama mingeid arusaamatut maagilist käsku konsooli, tal ei ole isegi selle sõna tähendust. Aga GUI, see palun.

Ja see on tõenäoliselt minu peamine argument mitte-konsolil põhineva distributsiooni kasuks. Soe, hubane graafiline kasutajaliides Kodi, jah, see pole eriti vajalik, aga see on olemas.
(Lisaks unustasin ma täiesti mainida, et Kodi-d saab juhtida ka kaugelt, näiteks nutitelefoni kaudu, paigaldades rakenduse "Yatse", ja võib-olla on see kellegi jaoks pluss.)

Kodi konfiguratsioon hiire juhtimiseks

aga nüüd Rakett

HeliTõus
          HeliLangem
          KanaliLangemine
          KanaliLangemine
          KanaliTõus
          

Konfiguratsioon asendab üldised (global) sündmused järgmiste elementide jaoks:

  • hiire ratta kerimine edasi
  • hiire ratta kerimine tagasi
  • hiire keskmise nupu vajutamine
  • hiire pika vajutamise (3 sek ja rohkem) käsitlemine,
    0 parema nupu identifikaator, 1 vasaku nupu identifikaator

detaile hiire sündmuste seadistamise kohta:

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

Mida teha, kui kaabeldusüsteem ei ole kohale jõudnud

«Aga mul ei ole kodus vabu Etherneti porte (või pole neid kunagi olnud)» — võib hüüda osa vanade Raspberry Pi 1 omanike õnnelikest, (võib-olla plaati osteti uurimiseks ja see jäi kapis vedelema)

Ja kuna plaadil ei ole sisseehitatud Wifi, siis ilma Etherneti ühenduseta ei ole see väga funktsionaalne.

Muidugi on võimalik kasutada Raspberry Pi 1 plaati ilma Ethernetita, kuid see nõuab teilt teatud pingutusi. Selliseid asju on huvitav teha tavaliselt uue õppimise kontekstis, st see ei ole kasutajapoolne töö.

Niisiis, vaatame hüpoteetilist võimalust kasutada plaati ilma Ethernetita:

Võib-olla saate ühendada välist USB — Wifi adapti, arvestades seda,
et adapter peaks töötama Linuxiga

Märkus:

    Kahjuks ei tööta osa WiFi adapteritest, 
    see ei ole selle artikli esitatud distributsiooni omapära, 
    vaid pigem konkreetsete WiFi adapterite draiverite probleem Linuxi tuumas. 
    Võime konstateerida, et sel hetkel ei saa te lihtsalt 
    minna poodi ja osta ükskõik millist WiFi adapterit. Pigem peate valima WiFi 
    adapti vähem probleemsetest ja hästi töötavatest Linuxis.

    Olen testinud ainult järgmisi mudeleid:
    - WiFi adapter Atheros D-Link DWA-126 802.11n (AR9271) instruktsiooniga
    - WiFi adapter NetGear WNDA3200
    - WiFi adapter NetGear WNA1100
    - WiFi adapter TP-Link TL-WN722N (AR9271)
    - WiFi adapter TL-WN322G v3
    - WiFi adapter TL-WN422G
    - Wifi adapter Asus USB-N53 Ralink RT3572 kiibistiku 
    

Kui teil on juba USB Wifi adapter, saate kontrollida, kas see töötab Linuxis järgmiselt:

  • Installige mõni laialdaselt levinud Linuxi distributsioon
    üldotstarbeline, näiteks 'Ubuntu Desktop'
  • Laadige süsteem alla
  • Ühendage oma Wifi USB adapter
  • Käivitage võrguhaldur ja proovige ühendada oma WiFi ligipääsupunktiga
  • Kui kõik toimib hästi ja teie internetiühendus on stabiilne, siis tähendab, et teie adapterit toetatakse hästi ning võite jätkata selle adapteri ühendamisega spetsialiseeritud distributsioonis ja ehk ka teiste kerniversioonidega
    (kui ei, siis ei — parem isegi mitte proovida)

Välist Wifi adapteri tugi 'Raspberry PI'-s

WiFi adapteri korrektseks tööks Linuxis: meil on vaja kahte asja:
1) Linuxi tuum toetust teatud Wifi adapterile
2) Teatud Wifi adapteri jaoks tuumamooduli olemasolu süsteemis

Võtame näiteks adapteri TP-Link TL-WN722N. Sellel on lihtsalt suurepärane antenn.
Leiame kiibistikud, mille põhjal plaat töötab — mul on see 'AR9271', märkus:

    huvitav on see, et ühe ja sama mudeli puhul
    sama tootja, Wifi-kiibistik võib erineda.
    Näiteks olen silmitsi seisnud sellega, et TL-WN722N versioon 2 
    kasutab juba teistsugust Realtek RTL8188 kiibistikku, mis 
    toona töötas Linuxi all halvasti, kahjuks nii see on,
    st mõnikord tuleb tähelepanu pöörata ka väikestele numbritele
    versioonil adapteri tagaküljel (tumeda poole peal).    
    

Nüüd leidke parameetri nimi tuumas, mis vastutab AR9271 kiibistikule mõeldud draiveri eest, parim on otsida sõnaühendit "AR9271 cateee.net"
     kus "cateee.net" on lahe sait Linuxi tuumamoodulite konfiguratsioonide kirjeldamise kohta

Kohe leiame tuuma konfiguratsiooni nime — CONFIG_ATH9K_HTC
ja nime meie vajaliku mooduli tuuma ath9k_htc

ja seejärel piisab lihtsalt vajaliku mooduli nime märkimisest konfiguratsiooni fragmentide failis
Linuxi tuum => recipes-kernel/linux/files/rbpi.cfg, lisage rida:
CONFIG_ATH9K_HTC=m

Nii saate tulevikus ühendada igasuguseid täiendavaid seadmeid oma süsteemi (kui need on muidugi Linuxi tuumas juba toetatud)

Mida teha, kui oled Habr geek — ehitaja

Ja loote ägedaid asju, näiteks selliseid nagu siit või oled üliõpilane ja unistad luua midagi sarnast.

Esialgu võiks osta mingi Touch Screen ekraani RPI jaoks aliexpressist, seal tellida sobiv akut, ühendada kõik see Raspberry Pi 1, 2 või 3 (parem on 3, kuna tal on sisse ehitatud Wifi), valida graafilise liidese teema Kodies, mis on mõeldud puuteekraanile, ja voila => sul võib saada lihtne audio mängija. Muidugi on see piisavalt mahukas, kuid see on sinu.

  Märkus:
  A jaoks, et üles ehitada Kodi meediumikeskus kõige odavamale platvormile 
  Raspberry Pi Zero Wifi yocto-s, piisab, kui muuta kahte rida:

  konfiguratsioonifail => build/conf/local.conf
      MACHINE = 'raspberrypi0-wifi'

  Kodi koostamisretsept => recipes-mediacentre/kodi/kodi_17.bbappend
      EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE', 
                            'raspberrypi0-wifi', '${BS_RPI}', '', d)}"

  Kui Kodi 17.6 kasutajaliidese reageerimisvõime 
  ühe protsessorituuma tõttu Zero-s tundub 
  mõistatusena, siis saad teha nipi ja koostada vanema, 
  kuid väga kiire versiooni, näiteks Kodi 15.2, mis selles osas on 
  "sõbralikum" (mõnikord lahendab legacy kõik).

Kahjuks ei ole mul makset, seega ei saa ma seda kontrollida, kuid minu arvates peaks see toimima.

Lühike kokkuvõte kokkupanekuks

    1) Installige Yocto projekti sõltuvused (näiteks Uubuntus): 
    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) Laadige ja installige Repo:
        mkdir ~/bin
        curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        chmod a+x ~/bin/repo

    3) Laadige projekt githubist:
        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) Koguge projekt:
        ./shell.sh
        bitbake berserk-image
        
    sama saab teha ka Raspberry Pi 3B Plus, 3B ja 2B plaatide jaoks:
    repo init -u https://github.com/berserktv/bs-manifest 
              -m raspberry/rocko/radio-0.2.8.xml
    

täiendav juhend kokkupanekuks
ja salvestamiseks microSDHC kaardile cm. eelnevas artiklis

Postskriptum

Loomulikult on internetiraadio kõlarite mõte tuttav, seda tunneb kõik ning hubis leiate selle kohta hulganisti artikleid, näiteks siit

Ja võite arvata, et ma lihtsalt kohandasin nõuded valmislahendusele. Sellele vastan, et ei, ausalt.

Härra Ervi lugu

    Usuge, et usuge mitte, aga asi oli nii:

    Meie töökontor piirneb erinevate heliseadmete tootmisega tegelevate ettevõtetega, ja kord läks selle ettevõtte direktor, nimetu härra "Ervi", meie filiaali asedirektori härra "Arseni" juurde ja küsis temalt, kui keeruline on panna Raspberry Pi plaadile mängima helivooge, st plaat on ühendatud võrguga ja kõlaritega, ning "kõlab iseloomulik heli".

    Pärast seda läks härra Arseni minu ülemuse asetäitja härra "Borise" juurde ja edastas küsimuse talle, ning mina, kui pealtnägija, juhuslikult mäletasin seda ideed ja nimetasime seda "Kolme ülemuse ülesandeks".

    Üldiselt tahtsime parimat, kuid välja tuli, tsitaat: "Aga härra Ervi, nagu alati, aitas."

    Mõne aja pärast küsisin härra "Borise" käest, mida ta arvab väikese märkme kirjutamisest selle teema kohta "Habrasse", millele "Borise" vastas, et "kolme menüüpunkti" muutmine Koidis ei too erilist uut teavet ja ei vääri eraldi mainimist. Loomulikult olen ma temaga täielikult nõus ja seetõttu ei räägi ma talle, et olen selle kohta midagi kirjutanud.

    Artikkel on kirjutatud eksklusiivselt "Raspberry Pi 1" plaadi jaoks, mis on saadud härra "Borise" käest eksperimendi ajaks, ning kõik muud "Raspberry Pi 1" jaotused on juhuslikud.
    

Soovime teile häid ja mitmekesiseid kompositsioone, ning las isegi vana telliskivi sellel aastal teie jaoks laulma hakkab.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster