Lihtsaim internetiraadio kõlar 'Kodi' või 'Malina' kivi päästmine

Lihtsaim internetiraadio kõlar 'Kodi' või 'Malina' kivi päästmine

Peamised eeltingimused:

  1. Kus on vana kasutamata Raspberry Pi 1. põlvkonna plaat;
  2. Plaat lebab kapis, kasutuna – plaadi seis on nagu «Telliskivi»;

Mida sooviksin saavutada:

  1. Teatud hetkel (näiteks tuju järgi)
    plaat lakkab olemast «Telliskivi» ja selle sisse paigaldatakse maagiline mälukaart;
  2. Plaadi külge ühendatakse Etherneti kaabel ja tavalise kodu kõlari või kõrvaklapi pistik;
  3. Pärast voolu andmist endine «Telliskivi» — laulab

Põhiloeng:

  1. Minimaalne arv liigutusi mis tahes seadistuste tegemiseks, kõige ideaalsetes tingimustes ühendame ainult «Ethernet» kaabli, voolu ja kõlarid, ja rohkem me ei tee, sõna otseses mõttes «üldse»;
  2. Endine «Telliskivi» toetab näiteks 20 internetiraadiot, mille vahel saab ringi vahetada näiteks hiirekerimisega või kindla GPIO pin'i peale, ühendades kaks juhet ja need lühendades (minu lapsepõlve unistus);
  3. Juhtimine toimub raadiokanali kaudu, milleks võib saada tavaline raadiohiir;
  4. Võtta valmis süsteem, jaotamine koostada «Yocto Project»
    st, nagu tavaliselt, me ei tee midagi, kuna kõik on juba tehtud.
    (piisab vaid häirija paigutamisest teisele poole «Televisiooni»);

Kirjeldus

Lihtne Interneti Raadio kõlar «KODI»
Kogumik on mõeldud vanemale Raspberry Pi 1 plaadile
(mis tolmuvad kuskil kapis, kuid on valmis veel tööle hakkama)

Vaikimisi kasutatakse m3u8 nimekirja, mis sisaldab 12 internetiraadiot.

Eeldatakse, et plaat töötab ilma HDMI väljundita, ja selle väljalülitamiseks piisab, kui tõmmata toiteadapter vooluvõrgust. Ja kui üli contemporary juhtimist pult, saate kasutada oma super raadiohiirt (või ühendada tavalise halli kaabliga).

Käivitamisel seadistatakse võrgu liides vaikimisi DHCP protokolli kaudu ja mängitakse viimane mäletatud raadiojaam nimekirjast, helitaseme juhtimine toimub tavalise hiirega:
(nimetage lõpuks oma hiir «juhtimise ülemaks», ja õnnitlege teda, ta seda väärib)

  ratastikku edasi - heli tugevuse suurendamiseks
ratastikku tagasi - heli tugevuse vähendamiseks
pikaajaline vajutus (3 sekundit või rohkem) hiire paremale nupule
- järgmise raadiojaama valimiseks
pikaajaline vajutus (3 sekundit või rohkem) hiire vasakule nupule
- eelneva raadiojaama valimiseks

Oma Interneti-raadiojaamade nimekirja lisamiseks
saate alati ühenduda HDMI kaabli kaudu teleriga
ja kasutada Kodi 17.6 standardset graafilist liideseid
(välja lülitage plaat, ühendage HDMI ja lülitage toiteadapter sisse)

Kodi põhimenüü => "Lisa" => "Minu lisandused"
          => "PVR kliendid" => "PVR IPTV Simple Client"

Algne elluviimine

(võimalik)
Alguses, kui otsustasin teha "Internet Raadio kõlarit", plaanisin järgmist:

  • Minimaalne konsoolide jaotamine Yocto projektis;
  • Audiovool edastatakse GStreamer'i kaudu;
  • Põhivõrgu seade on seadistatud DHCP kaudu;

Ja see lahendus offre mitmeid eeliseid:

  1. Suhte kiiresti (töörežiimi sisenemine 30-40 sekundi jooksul pärast toitestamist);
  2. Piisavalt usaldusväärne (vähem programme, vähem rikkepunkte);
  3. Konsolijaotuse muutmine ainult lugemisrežiimi on palju lihtsam
    st. programmid ei salvesta midagi juurdosasse failisüsteemis
    (ja failisüsteem SDHC seadmes on minu arvates esimene kandidaadi rikkeks);

Märkus:

    Yoctos saate juurfaili süsteem (rootfs) 
    ainult lugemise režiimi on üsna lihtne panna, 
    muutes ainult üks seade ehitamise ajal. 

    Standardse Yocto pakub kahte varianti:
    1) Failisüsteemi töö tavalises lugemise/kirjutamise režiimis 
    (nagu töötavad kõik üldotstarbelised jaotised, näiteks Ubuntu)
    2) Failisüsteemi töö ainult lugemise režiimis
    (nagu töötavad spetsialiseeritud jaotised, näiteks marsruuterites)

    Ainult lugemise režiimis on kõik kataloogid, kuhu tavaliselt 
    kirjutatakse rakenduste ja teenuste andmeid töö ajal, monteeritud 
    mällu (näiteks kataloog /var/log jne)
    Andmed on kehtivad ainult praeguse töö sessiooni jooksul ja pärast toitekatkestust 
    andmed kaovad.

    Kui Yocto Projectis näitate ehitamisel kasutada "read only", 
    siis pärast ehitamist on teie jaotus seadistatud ainult lugemiseks, 
    kuid alati saate lisada võimaluse dünaamiliseks üleminekuks 
    "read only"-st "read/write"-le, kuid see on juba hoopis teine lugu ...
    

Ja üks peamine puudus:

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

Ja veel, oma eelmist artiklit Habr'es kirjutasin multisüsteemikeskusest. Kodi ja Yocto project
ja võimalus jätkata samas vaimus ületas mu uurimisjanu. Sellest järgmises peatükis.

Kodi muutmine internetiraadiokõlariks

Vajamineva funktsionaalsuse lisamiseks lisan veel ühe meetodi jaotise retsepti, mida kirjeldatakse eelnevas artiklis vt fail berserk-image.bb

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

# konfiguratsioon viimase valitud TV kanali käivitamiseks (1-taust 2-esiplaan)
F1_LINE = "<startlast default="true">0<\/startlast>"
R1_LINE = "<startlast>1<\/startlast>"
# heliväljundi konfiguratsioon, alati on ühendatud ainult analoog audio väljund
F2_LINE = "<audiodevice default="true">PI:HDMI<\/audiodevice>"
R2_LINE = "<audiodevice>PI:Analogue<\/audiodevice>"
# kuna HDMI vaikimisi ei kasutata, lülitan automaatse värskenduse välja
# et vältida olukorda, kus toide on kadunud, kuid andmed on alles
F3_LINE = "<addonupdates default="true">0<\/addonupdates>"
R3_LINE = "<addonupdates>2<\/addonupdates>"


# meetod vastutab konfiguratsiooni lisamise eest:
# mis muudab "Nutika televisiooni" "lihtsaks Interneti Raadio kõ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äljund võib mitte olla kasutuses, 
# tuleb välja lülitada "algtervis"
off_kodi_welcome() {
    sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}

Meetodid on mõeldud juurfailisüsteemi muutmiseks enne distributsiooni pildi loomist, mis salvestatakse mälukaardile käsuga dd

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

Kokkuvõttes muudab peamine Kodi 17.6 konfiguratsioonifail "kolm punkti"

  • Viimase valitud TV kanali käivitamise konfiguratsioon;
  • Heliväljundi konfiguratsioon, alati on ühendatud ainult analoog audio väljund;
  • Automaatse värskenduse väljalülitamine;
  • Märkus:
        Ainsad raskused, millega silmitsi seisin, olid need, 
        et pidin samuti tooma andmebaasi faili 
        formaadis sqlite => TV29.db, mis näitab 
        praegu mängitavat TV kanali 
        (sest vaikimisi pole ühtegi kanalit valitud), 
        ja seda ei saa XML konfiguratsiooniga Kodi sisse seada.
        

iga punkti jaoks üksikasjalikum tegevusjärjekord:

1) Klõpsake ekraani vasakus ülanurgas asuvat „ratta” ikooni
ja valige „PVR ja TV seaded” (televisiooni ikoon kahel antennil)
siis vasakus menüüs valige „Taasesitus” ja keskses sektsioonis „Üldine”
valige avanevas loendis „Alustada viimaselt kanalilt”
valides seadistuse „Esiplaan”

või veelgi selgemalt:

      "PVR ja TV seaded" 
       => "Mängimine" 
       => "Alustada viimaselt kanalilt sisselogimisel" => "Esiplaan"

2) Klõpsake ekraani vasakus ülanurgas hammasratta ikoonil ja valige:

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

3) Klõpsake ekraani vasakus ülanurgas hammasratta ikoonil ja valige:

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

Kuidas ma kaks aastat vale telekat vaatan.

Pean teile tunnistama, et ma pole kahe aasta jooksul õppinud õigesti televisiooni vaatama.

Tavaliselt vaatan telekat köögis. Teleka külge on ühendatud Raspberry Pi 2B plaat, millel on Ethernet ja HDMI pesad. Plaadi toide tuleb tavalisest USB-kaablist, mis on ühendatud televisori USB-porti, st põhimõtteliselt, kui telekat sisse lülitada tavalise kaugjuhtimispuldi abil, annab see toite ka Raspberry Pi plaadile, ja kui telekas kaugjuhtimispuldiga välja lülitada, katkestatakse ka Raspberry Pi plaadi toide.

Ja ma olen täiesti teadlik, et nii teha ei oleks tohtinud, sest Kodi multimeedia keskuse juurefailisüsteem (ext3) töötab mul tavarežiimis lugemine/kirjutamine. Aga ma olen pigem laisk inimene, ja alguses tahtsin lihtsalt kontrollida, kui kauaks ma saan süsteemi välja lülitada, enne kui see lõpetab käivitumise, kuid kahjuks ma ei jõudnud seda kahe aasta jooksul teha (võib-olla vedas, ei tea).

Ja minu arvates, kui see režiim sobib minu teleka jaoks, siis sobib see ka 'lihtsate Interneti raadiokõlarite' jaoks, ja kuna ma sundisin Kodi pistikprogrammide automaatse uuendamise välja, siis on failisüsteemi rikki tekkimise tõenäosus veelgi väiksem. Siiani ei ole ma selles osas probleeme näinud.

Märkus:

    Kuid te võite alati soovikorral ühe yocto käsu abil 
    IMAGE_FEATURES += "read-only-rootfs"

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

Artiklis kirjeldatud „Internet raadiokõlari“ jaotus on kodune, ja koduse jaotuse põhiaspekt on ilus GUI. Minu arvates on väga raske või peaaegu võimatu õpetada tavalist kasutajat tippima mingeid arusaamatuid maagilisi käske konsoolis, tal pole isegi selle sõna tähendust. Aga GUI, see on palun.

Ja see on ilmselt minu peamine argument mitte-konsoolse distributiivide kasuks. Soe ja mugav graafiline kasutajaliides Kodi, jah, see pole väga vajalik, kuid see on olemas.
(Ja ma peaaegu unustasin mainida, et Kodi't saab juhtida kaugelt, näiteks nutitelefoni kaudu, installides rakenduse «Yatse», ja see võib olla mõne jaoks pluss.)

Kodi seadistamine hiirega juhtimiseks

ja nüüd Rakett

VolumeUp
          VolumeDown
          ChannelDown
          ChannelDown
          ChannelUp
          

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

  • hiireratta kerimine ülespoole
  • hiireratta kerimine alla
  • hiire keskmise nupu vajutamine
  • hiire pika vajutamise töötlemine (3 sek ja kauem),
    0 parema nupu identifikaator, 1 vasaku nupu identifikaator

kuna rohkem üksikasjalikku teavet hiire sünduste seadistamise kohta:

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

Mida teha, kui kaabeltelevisioon teie juurde ei jõudnud

«Aga mul ei ole kodus tasuta Etherneti porte (või pole neid kunagi olnud)» – võib hüüatada osa õnnelikke vana Raspberry Pi 1 omanikke (võib-olla kaardiga osteti katsetamiseks ja see on lihtsalt riiulil seisnud).

Kuna kaardil pole sisseehitatud Wifi-d, on see ilma Etherneti ühenduseta mitte väga funktsionaalne.

Muidugi, võimalus kasutada Raspberry Pi 1 ilma Ethernetita eksisteerib, kuid see nõuab teilt teatud pingutusi. Sellised asjad on tavaliselt huvitavad vaid uue teema õppimise kontekstis, see ei ole tavaline kasutaja töö.

Nii et vaatame hüpoteetilist varianti kaardi kasutamiseks ilma Ethernetita:

Võite ühendada välist USB-Wifi adaptorit, lähtudes sellest mõttest,
et adaptor peab hästi töötama Linuxis.

Märkus:

    Kahjuks ei tööta mõned WiFi-adapterid. See ei ole artikkel esitatud jagatud Linuxi distributsiooni eripära, vaid pigem konkreetsete WiFi-adapterite draiverite probleem Linuxi tuumades. Võime kinnitada, et hetkel ei saa te lihtsalt minna poodi ja osta ükskõik millist WiFi-adapterit. Pigem peate valima WiFi-adapteri probleemideta töökindlate mudelite hulgast.

Olen kontrollinud ainult järgmisi mudelite:
- WiFi-adapter Atheros D-Link DWA-126 802.11n (AR9271)
- 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 kiibistikuga 
    

Kui teil on juba usb WiFi-adapter, saate kontrollida, kas see töötab Linuxis mõistlikult, järgides järgmisi samme:

  • Installige mõni laialdaselt levinud Linuxi distributsioon
    üldotstarbeline, näiteks "Ubuntu Desktop"
  • Laadige süsteem
  • Ühendage oma Wifi usb adapter
  • Käivitage võrguhaldur ja proovige ühendada oma WiFi juurdepääsupunktiga
  • Kui kõik töötab hästi ja teie Interneti-ühendus on stabiilne, siis teie adapterit toetatakse hästi ja võite jätkata selle adapteri ühendamist spetsialiseeritud distributsiooniga ja võib-olla ka teiste tuumaversioonidega.
    (kui ei, siis ei, kahjuks - parem isegi mitte proovida)

Väline Wifi-adapteri tugi "Raspberry PI"-s

WiFi-adapteri korrektseks toimimiseks Linuxis on meil vaja kahte asja:
1) Linuxi tuuma tugi kindla Wifi-adapteri jaoks
2) Käitusüsteemi tuumamooduli olemasolu kindla Wifi-adapteri jaoks

Võtame näiteks TP-Link TL-WN722N adapteri. Sellel on lihtsalt suurepärane antenn.
Leidke kiibistik, millel plaat töötab - mul on see "AR9271". Märkus:

    Kuidas põnev on, et sama mudeli puhul sama tootja juures võib Wifi-kiibistik erineda. Ma olen näiteks kokku puutunud sellega, et TL-WN722N versioon 2-l on juba teine kiibistik Realtek RTL8188, mis töötas Linuxis kahjuks halvasti (tol ajal), seega sellised asjad. Tõeliselt mõnikord tuleb tähele panna väikeseid numbreid versioonil adapteri tagaküljel.    
    

Nüüd leidke tuumakonfiguratsioonis parameetri nimi, mis vastutab AR9271 kiibistikudraiveri eest, otsige parima tulemuse jaoks sõnu "AR9271 cateee.net"
     kus "cateee.net" – äge sait Linuxi tuumamoodulite konfiguratsioonide kirjeldusega

Alustame tuuma konfiguratsiooni nime leidmisest – CONFIG_ATH9K_HTC
ja vajaliku tuumamooduli nime leidmisest ath9k_htc

ja seejärel on piisav, kui märkida vajaliku mooduli nimi konfiguratsioonifaili fragmenti
Linuxi kernel => recipes-kernel/linux/files/rbpi.cfg, lisage rida:
CONFIG_ATH9K_HTC=m

Nii saate hiljem ühendada mis tahes lisaseadmestiku oma süsteemiga (kui see on loomulikult Linuxi tuumas juba toetatud)

Mida teha, kui oled Habr geek – konstruktor

Ja lood ägedaid asju, näiteks selliseid siin või oled üliõpilane ja unistad millegi sarnase loomist.

Siis võite kohapealt võtta mõne Touch Screen ekraani RPI jaoks aliexpressist, seal samas tellida sobiva aku, ühendada kõik see Raspberry Pi 1, 2 või 3 plaadile (parem 3, kuna sel on sisseehitatud Wifi), valida graafilise liidese teema, mis on kohandatud puuteekraanile, ja voilà => teil võib olla lihtne audio mängija. Loomulikult on see piisavalt mahukas, kuid see on teie.

  Märkus:
  A, et koostada Kodi multimeedia keskus kõige odavamale plaadile 
  Raspberry Pi Zero Wifi yoctos, 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 reaktsioon 
  ühe protsessorituuma tõttu Zero's tundub teile 
  mõistatusena, siis saate teha triki ja koostada vanema, 
  kuid väga kiire versiooni, näiteks Kodi 15.2, see on selles osas
  "sõbralikum" (mõnikord lahendab legacy kõik)

Kahjuks ei ole mul plaati, seega ei saa kontrollida, kuid minu arust peaks see tööle hakkama.

Lühike juhend kokkupanekuks

    1) Install Yocto Project dependencies (for example, in 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) Download and install Repo:
        mkdir ~/bin
        curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        chmod a+x ~/bin/repo

    3) Download the project from 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) Build the project:
        ./shell.sh
        bitbake berserk-image
        
    The same can be built for Raspberry Pi 3B Plus, 3B and 2B:
    repo init -u https://github.com/berserktv/bs-manifest 
              -m raspberry/rocko/radio-0.2.8.xml
    

more detailed assembly instructions
and writing to the microSDHC card. in the previous article

Postskriptum

Of course, the idea of an Internet radio speaker is standard; it's well-known, and you can find many articles on this topic on Habr, for example, siin

And you might also think that I just adjusted the requirements to fit an existing solution. To this, I can counter that no, honestly.

The story of Mr. Ervi

    Usute usutud, see kõik läks nii:

    Meie kontor piirneb erineva helitehnika tootmisettevõttega ja ühel päeval lähenes selle firma direktor, nimetame teda hr "Ervi", meie filiaali asetäitjale hr "Arsenile" ja küsis, kui keeruline on Raspberry Pi plaadile helivoo edastamine seadistada, see tähendab, et plaat ühendatakse võrku ja kõlaritesse ning "kuuldub iseloomulik heli".

    Pärast seda läks hr Arsen hr "Boris" juurde, minu ülemuse asetäitjale, ja suunas küsimuse temale, ning mina, kui pealtvaataja, juhtusin selle idee juhuslikult meelde jätma ja nimetasime seda "Kolme juhi ülesanne".

    Ühesõnaga, nad soovisid parimat, 
    kuid tuli välja, tsitaat - "Aga hr Ervi, nagu alati, aitas." 

    Mõne aja pärast küsisin hr "Borise" käest, mida ta arvab väikese märkme kirjutamisest sellel teemal "Habr"-is, millele "Boris" vastas, et "kolme menüüpunkti" muutmine Kodies ei too endaga kaasa mingit uut teavet ja ei vääri eraldi mainimist. Loomulikult nõustun ma temaga täielikult ja seetõttu ei räägi ma talle, et olen selle kohta midagi kirjutanud.

    Artikkel on kirjutatud ainult hr "Borise" testimiseks kasutatud "Raspberry Pi 1" plaadi kohta, 
    kokkulangevused kõigi teiste "Raspberry Pi 1" plaatidega on juhuslikud.
    

Häid ja mitmekesiseid kogusid teile, ja las vana telliskivi isegi sel aastal teie jaoks laulma hakkab.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster