La più semplice cassa audio internet «Kodi» o la salvezza del «Mattoncino» Raspberry

La più semplice cassa audio internet «Kodi» o la salvezza del «Mattoncino» Raspberry

Premesse principali:

  1. C'è una vecchia scheda Raspberry Pi di prima generazione inutilizzata;
  2. La scheda giace inutilizzata su uno scaffale e non viene utilizzata — è una scheda "Mattone";

Cosa ci si aspetta di ottenere:

  1. In un certo momento (ad esempio in base all'umore)
    la scheda smette di essere un "Mattone" e vi si inserisce una scheda di memoria magica;
  2. Si collega un cavo Ethernet alla scheda e il connettore di un normale altoparlante domestico o di cuffie;
  3. Dopo l'accensione, l'ex "Mattone" — suona

Idea principale:

  1. Minimo sforzo per qualsiasi configurazione, nel caso ideale, ci limitiamo a collegare solo il cavo "Ethernet", l'alimentazione e gli altoparlanti, e non facciamo altro, letteralmente "niente";
  2. L'ex "Mattone" supporta ad esempio 20 stazioni radio internet già pronte, il passaggio tra di esse può essere assegnato alla pressione della rotellina del mouse o a un pin GPIO specifico (collegare due fili e chiuderli (un mio sogno da bambino));
  3. Il controllo avviene tramite un canale radio, e questo canale radio può diventare un normale mouse radio;
  4. Prendere un sistema già pronto, assemblando il pacchetto in "Yocto Project"
    cioè, come al solito, non faremo nulla, poiché è tutto già fatto.
    (basta mettere un osservatore esterno dall'altra parte "del Televisore");

Descrizione

Un semplice altoparlante radio internet "KODI"
L'assemblaggio è destinato a schede Raspberry Pi 1 vecchie
(che accumulano polvere da qualche parte su uno scaffale, ma pronte per lavorare ancora)

Per impostazione predefinita, viene utilizzato un elenco m3u8 di 12 stazioni radio internet.

Si presume che la scheda funzioni senza uscita HDMI, e per spegnerla è sufficiente scollegare l'adattatore di alimentazione dalla presa. E come telecomando ultra moderno senza fili, puoi usare il tuo fantastico mouse radio (o collegare un normale mouse con filo).

All'accensione, l'interfaccia di rete viene configurata di default tramite protocollo DHCP e viene riprodotta l'ultima stazione radio memorizzata nell'elenco; il controllo del volume di riproduzione avviene tramite un normale mouse:
(designa finalmente il tuo mouse come "capo del controllo" e congratulati con lui, se lo merita)

  ruotolo in avanti - aumento del volume
  ruotolo indietro - diminuzione del volume
  pressione prolungata (3 secondi o più) sul pulsante destro del mouse
                   - selezione della stazione radio successiva
  pressione prolungata (3 secondi o più) sul pulsante sinistro del mouse
                   - selezione della stazione radio precedente

Per aggiungere la propria lista di stazioni radio Internet
puoi sempre collegare un cavo HDMI dalla TV
e utilizzare l'interfaccia grafica integrata di Kodi 17.6
(spegni la scheda, collega l'HDMI e accendi l'adattatore di alimentazione)

Menu principale di Kodi => «Plugin» => «I miei plugin»
          => «Client PVR» => «PVR IPTV Simple Client»

Implementazione iniziale

(possibile)
Inizialmente, quando ho deciso di creare il "Dolby Internet Radio", avevo pianificato quanto segue:

  • Distribuzione console minimalista in Yocto Project;
  • Il flusso audio viene riprodotto tramite GStreamer;
  • L'interfaccia di rete è configurata tramite DHCP;

E questa soluzione ha diversi vantaggi:

  1. Abbastanza veloce (tempo di avvio da alimentazione a modalità operativa di 30-40 secondi);
  2. Abbastanza affidabile (meno programmi, meno punti di guasto);
  3. La distribuzione console è molto più facile da convertire in modalità sola lettura
    cioè i programmi non scrivono nulla nel file system root
    (e il file system su supporto SDHC è, a mio avviso, il primo candidato ai guasti);

Nota:

    In Yocto, rendere il file system rootfs in modalità di sola lettura è relativamente semplice, modificando un parametro durante la costruzione.  
Default, Yocto offre due opzioni:  
1) Funzionamento del file system in modalità normale di lettura/scrittura  
   (così funzionano tutte le distribuzioni generiche, come Ubuntu)  
2) Funzionamento del file system in modalità di sola lettura  
   (così funzionano distribuzioni specializzate, come quelle nei router)  

In modalità di sola lettura, tutte le directory in cui vengono normalmente  
registrati i dati delle applicazioni e dei servizi durante l'uso vengono  
montate nella memoria RAM (ad esempio, la directory /var/log, ecc.)  
I dati sono validi solo per la sessione di lavoro corrente e dopo un'interruzione di  
elettricità, i dati vengono persi.  

Se nel progetto Yocto specificate di utilizzare "read only" durante la costruzione,  
dopo la costruzione la vostra distribuzione sarà impostata in modalità sola lettura,  
ma potrete sempre aggiungere la possibilità di passare dinamicamente  
da "read only" a "read/write", ma questa è un'altra storia...
    

E un principale svantaggio:

«Deve essere fatto», cioè devo spendere un certo numero di serate
(di solito dopo il lavoro, ed è il momento meno efficace, in questo momento il cervello non pensa più, in genere dorme)

E inoltre, ho scritto il mio precedente articolo su Habr riguardo al centro multimediale Kodi e Yocto progetto
e la possibilità di continuare con lo stesso tema ha superato il mio impulso di ricerca. Di questo nella prossima sezione.

Trasformare Kodi in una cassa radio internet

Per aggiungere la funzionalità di cui ho bisogno, aggiungerò un altro metodo nella ricetta di costruzione della distribuzione descritta in precedenza abbiamo chiarito il corretto completamento dei programmi che utilizzano il mediastreamer. vedi il file berserk-image.bb

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

# configurazione per l'avvio dell'ultimo canale TV selezionato (1-sfondo 2-primo piano)
F1_LINE = "0"
R1_LINE = "1"
# configurazione dell'uscita audio, sempre collegato solo l'uscita audio analogica
F2_LINE = "PI:HDMI"
R2_LINE = "PI:Analogue"
# poiché HDMI non è utilizzato per impostazione predefinita, disabilito l'aggiornamento automatico
# altrimenti potrebbe succedere che l'alimentazione vada via, ma i dati non siano stati salvati
F3_LINE = "0"
R3_LINE = "2"


# il metodo è responsabile dell'aggiunta della configurazione:
# che trasforma "Smart TV" in "semplice Cassa Radio Internet"
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"
# poiché l'uscita HDMI potrebbe non essere utilizzata,
# è necessario disabilitare "il messaggio di benvenuto all'avvio"
off_kodi_welcome() {
    sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}

I metodi sono destinati a modificare il file di sistema root prima di formare l'immagine del distributore in un unico file raw, che viene scritto sulla scheda di memoria utilizzando il comando dd

Questo si fa in questo modo:
ROOTFS_POSTPROCESS_COMMAND += «add_radio_guisettings; off_kodi_welcome;»

In breve, nel file di configurazione principale di Kodi 17.6, vengono modificati "tre elementi"

  • Configurazione per l'avvio dell'ultimo canale TV selezionato;
  • Configurazione dell'uscita audio, sempre collegato solo l'uscita audio analogica;
  • Disabilitazione dell'aggiornamento automatico;
  • Nota:
        L'unica cosa con cui ho avuto difficoltà,
        è stata dover anche portare il file del database
        in formato sqlite => TV29.db, in cui viene indicato
        l'attuale canale TV in riproduzione
        (poiché per impostazione predefinita nessun canale è selezionato),
        e questo non può essere fatto tramite la configurazione xml in Kodi.
        

una sequenza di passaggi più dettagliata per ciascun punto:

1) Fai clic sull'icona «ingranaggio» nell'angolo in alto a sinistra dello schermo
e seleziona l'opzione «Impostazioni PVR e TV» (immagine di un televisore con due antenne)
poi nella parte sinistra del menu, seleziona l'opzione «Riproduzione», e nella sezione centrale «Generale»
specifica nel menu a discesa «Riprendi dall'ultimo canale all'avvio»
selezionando l'impostazione «Primo piano»

o più esplicitamente:

      "Impostazioni PVR e TV" 
       => "Riproduzione" 
       => "Riprendi dall'ultimo canale all'avvio" => "In primo piano"

2) Fai clic sull'icona dell'«ingranaggio» nell'angolo in alto a sinistra dello schermo e seleziona:

       "Impostazioni di sistema"  
       => "Plugin" => "Aggiornamenti" => "Non controllare mai gli aggiornamenti"

3) Fai clic sull'icona dell'«ingranaggio» nell'angolo in alto a sinistra dello schermo e seleziona:

       "Impostazioni di sistema" 
       => "Audio" => "Dispositivo di output audio" => "PI: Analogico"

Come ho guardato la televisione in modo sbagliato per due anni.

Devo ammettere che in due anni non sono riuscito a imparare a guardare la televisione nel modo corretto.

Di solito guardo la televisione in cucina. Alla televisione è collegata una scheda Raspberry Pi 2B, e la scheda ha porte Ethernet e HDMI. L'alimentazione della scheda è fornita tramite un normale cavo USB, collegato alla porta USB della televisione, quindi, in pratica, accendere la televisione con il telecomando fornisce alimentazione anche alla scheda Raspberry Pi, mentre spegnere la televisione con il telecomando, spegne immediatamente anche l'alimentazione della scheda Raspberry Pi.

Sì, sono pienamente consapevole che non dovrei farlo, perché il file system radice del centro multimediale Kodi (ext3) funziona in modalità normale di lettura/scrittura. Ma sono una persona pigra, e per iniziare ho deciso di verificare quanto a lungo posso spegnere il sistema, fino a quando non smette completamente di avviarsi, ma purtroppo in due anni non sono riuscito a farlo (forse sono solo stato fortunato, non lo so).

E a mio avviso, se questo modo ha funzionato per la mia televisione, dovrebbe funzionare anche per una "semplice cassa radio Internet", e dato che ho disabilitato forzatamente gli aggiornamenti automatici per i plugin di Kodi, la probabilità di un guasto del file system diventa ancora più bassa. Finora non vedo problemi in questo.

Nota:

    Ma puoi sempre, se lo desideri, utilizzare un comando yocto 
    IMAGE_FEATURES += "read-only-rootfs"

    e un po’ di magia per portare la tua distribuzione in modalità "read only".
    

La distribuzione "cassa radio Internet" descritta nell'articolo è per uso domestico, e ciò che è fondamentale per una distribuzione domestica è un'interfaccia grafica attraente. A mio avviso, è molto difficile o quasi impossibile insegnare a un utente comune a digitare comandi magici incomprensibili nella console, non conosce nemmeno quel termine. Ma un'interfaccia grafica, quella sì.

E questo è probabilmente il mio principale argomento a favore di una distribuzione non console. L'interfaccia utente grafica calda e accogliente di Kodi, sì, non è particolarmente necessaria, ma esiste.
(Inoltre, ho completamente dimenticato di menzionare che Kodi può essere controllato da remoto, ad esempio dal tuo smartphone, installando l'app "Yatse", e per qualcuno questo potrebbe essere un vantaggio)

Configurazione di Kodi per il controllo del mouse

e ora Razzo

VolumeUp
          VolumeDown
          ChannelDown
          ChannelDown
          ChannelUp
          <!--

La configurazione sovrascrive gli eventi globali per i seguenti elementi:

  • scorrimento della rotella del mouse in avanti
  • scorrimento della rotella del mouse indietro
  • pressione del pulsante centrale del mouse
  • gestione della pressione prolungata del mouse (3 secondi o più),
    0 identificatore del pulsante destro, 1 identificatore del pulsante sinistro

informazioni più dettagliate sulla configurazione degli eventi del mouse:

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

Cosa fare se il tuo sistema via cavo non è arrivato

"Ma a casa non ho porte Ethernet libere (o non ne ho mai avute)" — potrebbe esclamare parte dei fortunati possessori di vecchie schede Raspberry Pi 1 (forse la scheda è stata acquistata per esplorazione e così è rimasta a prendere polvere)

E poiché la scheda non ha WiFi integrato, senza connessione Ethernet, non è molto funzionale.

Certo, la possibilità di utilizzare la scheda Raspberry Pi 1 senza Ethernet esiste, ma richiederà un certo impegno da parte tua. Di solito, queste cose sono interessanti da fare solo nell'ambito dell'apprendimento di qualcosa di nuovo, quindi non è un lavoro per l'utente.

Dunque, consideriamo un'ipotesi di utilizzo della scheda senza Ethernet:

Si può collegare un adattatore USB esterno WiFi, tenendo presente che
l'adattatore deve funzionare bene su Linux

Nota:

    Sfortunatamente, alcuni adattatori WiFi non funzioneranno, non è una caratteristica della distribuzione presentata in questo articolo, ma piuttosto un problema di specifici driver degli adattatori WiFi nel kernel Linux. Si può affermare che attualmente non puoi semplicemente andare in un negozio e acquistare qualsiasi adattatore WiFi. È probabile che tu debba scegliere un adattatore WiFi da un elenco di quelli meno problematici e ben funzionanti su Linux.

 Ho verificato solo i seguenti modelli:
 - Adattatore WiFi con chipset Atheros D-Link DWA-126 802.11n (AR9271)
 - Adattatore WiFi NetGear WNDA3200
 - Adattatore WiFi NetGear WNA1100
 - Adattatore WiFi TP-Link TL-WN722N (AR9271)
 - Adattatore WiFi TL-WN322G v3
 - Adattatore WiFi TL-WN422G
 - Adattatore WiFi Asus USB-N53 chipset Ralink RT3572 
    

Se hai già un adattatore WiFi USB, puoi verificare quanto bene funziona su Linux nel seguente modo:

  • Installa una distribuzione Linux ampiamente diffusa
    general purpose, come "Ubuntu Desktop"
  • Avvia il sistema
  • Collega il tuo adattatore WiFi USB
  • Avvia il gestore di rete e prova a connetterti al tuo punto di accesso WiFi
  • Se tutto funziona correttamente e la tua connessione internet è stabile, significa che il tuo adattatore è ben supportato e puoi continuare a lavorare per collegarlo alla distribuzione specializzata e forse a versioni diverse del kernel.
    (se no, beh, purtroppo — è meglio non provare nemmeno)

Supporto per adattatori WiFi esterni su "Raspberry PI"

Per il corretto funzionamento dell'adattatore WiFi su Linux: abbiamo bisogno di due cose:
1) Supporto del kernel Linux per un determinato adattatore WiFi
2) Disponibilità in sistema di un modulo kernel per un determinato adattatore WiFi

Prendiamo per esempio l'adattatore TP-Link TL-WN722N. Ha un'antenna davvero eccellente.
Troviamo il chipset su cui la scheda funziona — nel mio caso è "AR9271", nota:

    La cosa interessante è che per lo stesso modello di uno stesso produttore, il chipset WiFi può variare. Ad esempio, ho riscontrato che per il TL-WN722N versione 2, viene già utilizzato un chipset diverso, Realtek RTL8188, che già non funzionava bene su Linux (a quel tempo), purtroppo sono questi i fatti, cioè, a volte bisogna prestare attenzione ai piccoli numeri della versione sul retro (scuro) dell'adattatore.    
    

Ora troviamo il nome del parametro nella configurazione del kernel che corrisponde al driver del chipset AR9271, è meglio cercare la combinazione di parole "AR9271 cateee.net".
     dove «cateee.net» è un ottimo sito con la descrizione delle configurazioni dei moduli del kernel Linux

Troviamo subito il nome della configurazione del kernel — CONFIG_ATH9K_HTC
e il nome del modulo del kernel di cui abbiamo bisogno ath9k_htc

e quindi basta indicare il nome del modulo richiesto nel file di frammento della configurazione
del kernel Linux => recipes-kernel/linux/files/rbpi.cfg, aggiungi la riga:
CONFIG_ATH9K_HTC=m

In questo modo in seguito puoi collegare qualsiasi hardware aggiuntivo al tuo sistema (se naturalmente è già supportato nel kernel Linux)

Cosa fare se sei un hobbista geek — un costruttore

E crei cose fantastiche, come qui o sei uno studente e sogni di creare qualcosa di simile.

Quindi, a colpo d'occhio, puoi prendere un qualsiasi schermo Touch Screen per RPI su aliexpress, ordinare una batteria ricaricabile adeguata, collegare il tutto alla scheda Raspberry Pi 1, 2 o 3 (meglio alla 3, poiché ha il Wi-Fi integrato), scegliere un tema per l'interfaccia grafica in Kodi, progettato per schermi touch e voilà => puoi ottenere un semplice lettore audio. Certamente sarà piuttosto ingombrante, ma sarà tuo.

  Nota:
  A per assemblare un centro multimediale Kodi per la scheda più economica 
  Raspberry Pi Zero Wifi in yocto, basta modificare due righe:

  file di configurazione => build/conf/local.conf
      MACHINE = 'raspberrypi0-wifi'

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

  Se la reattività della GUI Kodi 17.6 
  a causa di un singolo core del processore in Zero ti sembra 
  misteriosa, puoi fare un trucco e assemblare una versione più vecchia, 
  ma molto veloce, come Kodi 15.2, che in questo senso è più 
  "amichevole" (a volte il legacy risolve tutto)

Sfortunatamente non ho il dispositivo, quindi non posso verificare, ma dalle mie sensazioni dovrebbe funzionare.

Istruzioni rapide per l'assemblaggio

    1) Installa le dipendenze di Yocto Project (ad esempio su 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) Scarica e installa Repo:
        mkdir ~/bin
        curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        chmod a+x ~/bin/repo

    3) Scarica il progetto da 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) Compila il progetto:
        ./shell.sh
        bitbake berserk-image
        
    Puoi compilare anche per Raspberry Pi 3B Plus, 3B e 2B:
    repo init -u https://github.com/berserktv/bs-manifest 
              -m raspberry/rocko/radio-0.2.8.xml
    

una guida più dettagliata sulla compilazione
e la scrittura sulla scheda microSDHC vedi nell'articolo precedente

Postscriptum

Certo, l'idea di un altoparlante radio Internet è comune, è ben nota e su Habr troverai molti articoli al riguardo, ad esempio qui

E ancora, potresti pensare che io abbia semplicemente adattato i requisiti a una soluzione pronta. A questo posso rispondere di no, davvero onestamente.

La storia del signor Ervi

    Volete credere, volete non credere, ma la faccenda è andata così:

    Il nostro ufficio si trova accanto a un'azienda che produce vari dispositivi audio,
    e un giorno il direttore di questa azienda, chiamiamolo signor "Ervi",
    si è avvicinato al nostro vice direttore filiale, il signor "Arseniy",
    e gli ha chiesto quanto fosse difficile installare su una scheda Raspberry Pi
    la riproduzione di un flusso audio, cioè la scheda si collega alla rete
    e agli altoparlanti, e "si sente un suono caratteristico".

    Dopo di che, il signor Arseniy si è rivolto al vice del mio
    superiore, il signor "Boris", e gli ha girato la domanda,
    mentre io, come osservatore esterno, ho accidentalmente memorizzato
    questa idea e l'ho chiamata "Il compito dei tre superiori".

    In generale, volevamo fare bene,
    ma il risultato è stato, citazione - "Ma il signor Ervi, come sempre, ha aiutato."

    Dopo un po', ho chiesto al signor "Boris"
    cosa pensasse di scrivere un breve articolo su questo tema
    su "Habr", a cui "Boris" ha risposto che modificare
    "tre voci di menu" in Kodi non porta a nuove informazioni
    e non merita una menzione separata.
    Certo, sono completamente d'accordo con lui e quindi non gli dirò
    che ho scritto qualcosa al riguardo.

    L'articolo è stato scritto esclusivamente per la scheda "Raspberry Pi 1"
    presa dal signor "Boris" per la durata dell'esperimento,
    ogni coincidenza con altre schede "Raspberry Pi 1" è puramente casuale.
    

Vi auguro tante belle e diverse versioni, e che anche per voi quest'anno persino un vecchio mattoncino possa cantare.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster