
Hauptvoraussetzungen:
- Es gibt ein altes, ungenutztes Raspberry Pi-Board der ersten Generation;
- Das Board liegt als totes Gewicht auf dem Regal und wird nicht verwendet — das «Ziegel»-Board;
Was ich gerne erreichen würde:
- Zu einem bestimmten Zeitpunkt (zum Beispiel je nach Stimmung)
hörte das Board auf, ein «Ziegel» zu sein, und eine magische Speicherkarte wurde eingesetzt; - Ein Ethernet-Kabel und der Stecker eines gewöhnlichen Lautsprechers oder Kopfhörers werden an das Board angeschlossen;
- Nach dem Einschalten singt der ehemalige «Ziegel» — es singt
Die Hauptidee:
- Möglichst wenige Schritte für irgendeine Einrichtung — im besten Fall schließen wir nur das «Ethernet»-Kabel, die Stromversorgung und die Lautsprecher an und machen sonst nichts, überhaupt nichts; «überhaupt nicht»;
- Der ehemalige «Ziegel» unterstützt beispielsweise 20 Internet-Radiostationen direkt aus der Box, deren Wechsel im Kreis auf das Scrollrad der Maus oder einen bestimmten GPIO-Pin gelegt werden kann (zwei Drähte anschließen und verbinden (mein Kindheitstraum));
- Die Steuerung erfolgt über einen Funkkanal, der auch ein gewöhnlicher Funkmauskanal sein kann;
- Nehmen Sie ein bereits fertiges System, das Distributionspaket wird im „Yocto Project“ zusammengestellt.
Das heißt, wie gewohnt werden wir nichts tun, da bereits alles umgesetzt wurde.
(es reicht, einen externen Beobachter auf die andere Seite zu platzieren „Fernseher“);
Beschreibung
Die einfachste Internet-Radiobox „KODI“
Das Build ist für alte Raspberry Pi 1-Platinen gedacht
(die irgendwo auf dem Regal verstauben, aber bereit sind, noch zu arbeiten)
Standardmäßig wird eine m3u8-Liste mit 12 Internetradiostationen verwendet.
Es wird angenommen, dass das Board ohne HDMI-Ausgang funktioniert, und um es auszuschalten, reicht es, das Netzteil aus der Steckdose zu ziehen. Als ultra-modernem drahtlosen Steuergerät können Sie Ihre super Radio-Maus verwenden (oder eine gewöhnliche graue Maus mit Kabel anschließen).
Beim Einschalten wird die Netzwerkschnittstelle standardmäßig über das DHCP-Protokoll konfiguriert und die zuletzt gespeicherte Radiostation aus der Liste wird abgespielt, die Lautstärkeregelung erfolgt mit der normalen Maus:
(bestimmen Sie endlich Ihre Maus als „Leiterin der Steuerung“ und gratulieren Sie ihr, sie hat es verdient)
Scroll nach vorne - Lautstärke erhöhen
Scroll nach hinten - Lautstärke verringern
Lange Drucktaste (3 Sekunden oder mehr) auf die rechte Maustaste - Wählen des nächsten Radiosenders
Lange Drucktaste (3 Sekunden oder mehr) auf die linke Maustaste - Wählen des vorherigen Radiosenders
Um eine eigene Liste von Internetradiosendern hinzuzufügen
können Sie jederzeit ein HDMI-Kabel vom Fernseher anschließen
und die Standardgrafikoberfläche von Kodi 17.6 verwenden
(Schalten Sie die Platine aus, schließen Sie HDMI an und schalten Sie das Netzteil ein)Hauptmenü Kodi => „Erweiterungen“ => „Meine Erweiterungen“
=> „PVR-Klienten“ => „PVR IPTV Simple Client“
Erstimplementierung
(möglich)
Ursprünglich, als ich beschloss, eine „Internetradio-Lautsprecher“ zu machen, plante ich Folgendes:
- Minimalistisches Konsolen-Distributionspaket im Yocto-Projekt;
- Audio-Stream wird über GStreamer wiedergegeben;
- Netzwerkschnittstelle wird über DHCP konfiguriert;
Und so eine Lösung hat eine Reihe von Vorteilen:
- Relativ schnell (Betriebsbereitschaft nach Einschalten 30-40 Sekunden);
- Relativ zuverlässig (weniger Programme, weniger Ausfallpunkte);
- Die Konsolenversion lässt sich viel einfacher in den Nur-Lese-Modus versetzen.
d.h. die Programme schreiben nichts in das Wurzelsystem.
(und das Dateisystem auf dem SDHC-Medium ist meiner Meinung nach der erste Kandidat für Ausfälle);
Hinweis:
In Yocto kann das Root-Dateisystem (rootfs) einfach in den Nur-Lese-Modus versetzt werden, indem man während des Builds einen Parameter ändert.
Yocto bietet von Haus aus zwei Optionen an:
1) Dateisystembetrieb im normalen Lese-/Schreibmodus
(so arbeiten alle allgemeinen Distributoren, z. B. Ubuntu)
2) Dateisystembetrieb im Nur-Lese-Modus
(so arbeiten spezialisierte Distributionen, z. B. in Routern)
Im Nur-Lese-Modus werden alle Verzeichnisse, in die normalerweise
Anwendungs- und Dienstdaten während des Betriebs geschrieben werden, in den Arbeitsspeicher eingebunden
(z. B. das Verzeichnis /var/log usw.)
Die Daten sind nur für die aktuelle Sitzung gültig und gehen nach einem Stromausfall verloren.
Wenn Sie im Yocto-Projekt beim Build "Nur-Lese" angeben,
wird Ihre Distribution nach dem Build nur im Lese-Modus konfiguriert,
aber Sie können jederzeit die Möglichkeit hinzufügen, dynamisch von "Nur-Lese" auf "Lese/Schreiben" zu wechseln,
aber das ist eine ganz andere Geschichte ...
Und ein Hauptnachteil:
„Es muss gemacht werden“, d.h. ich muss N Anzahl an Abenden investieren.
(gewöhnlich nach der Arbeit, und das ist die ineffektivste Zeit, in der das Gehirn schon nicht mehr denkt, es schläft normalerweise)
Und außerdem habe ich meinen vorherigen Artikel auf Habré über das Multimedia-Center project
und die Möglichkeit, im gleichen Stil fortzufahren, überwogen mein Forschungsdrang. Darüber in folgendem Kapitel.
Kodi in einen Internet-Radio-Lautsprecher verwandeln
Um die benötigte Funktionalität hinzuzufügen, werde ich eine weitere Methode zum Rezept für den Bau der im vorherigen siehe Datei berserk-image.bb
GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml"
# Konfiguration zum Starten des zuletzt gewählten TV-Kanals (1-Hintergrund 2-Vordergrund)
F1_LINE = "0"
R1_LINE = "1"
# Konfiguration der Audioausgabe, immer nur analoger Audioausgang aktiv
F2_LINE = "PI:HDMI"
R2_LINE = "PI:Analogue"
# da HDMI standardmäßig nicht verwendet wird, deaktiviere die automatische Aktualisierung
# sonst könnte es passieren, dass die Stromversorgung unterbrochen wurde, während die Daten nicht gespeichert wurden
F3_LINE = "0"
R3_LINE = "2"
# Methode zur Hinzufügung der Konfiguration:
# die "Smart TV" in einen "einfachen Internet-Radio-Lautsprecher" verwandelt
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"
# da der HDMI-Ausgang möglicherweise nicht verwendet wird,
# muss das "Begrüßungsbildschirm" deaktiviert werden
off_kodi_welcome() {
sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}
Die Methoden dienen zur Modifikation des Root-Dateisystems, bevor das Image des Distributionspakets in Form einer einzelnen RAW-Datei erstellt wird, die mit dem Befehl auf die Speicherkarte geschrieben wird. dd
Es wird folgendermaßen gemacht:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"
Kurz gesagt, in der Hauptkonfigurationsdatei von Kodi 17.6 werden "drei Punkte" geändert:
- Konfiguration des Starts des zuletzt gewählten TV-Kanals;
- Konfiguration der Audioausgabe, immer nur der analoge Audioausgang aktiviert;
- Deaktivierung von automatischen Updates;
- Hinweis:
Das Einzige, was mir Schwierigkeiten bereitet hat, ist, dass ich die Datenbankdatei im SQLite-Format => TV29.db hinzufügen musste, in der der aktuell abgespielte TV-Kanal angegeben ist (da standardmäßig keiner der Kanäle ausgewählt ist), und dies über die XML-Konfiguration in Kodi nicht möglich ist.
Eine detailliertere Schritt-für-Schritt-Anleitung für jeden Punkt:
1) Klicken Sie auf das Symbol "Zahnrad" in der oberen linken Ecke des Bildschirms
und wählen Sie den Punkt "PVR- und TV-Einstellungen" (Bild eines Fernsehers mit zwei Antennen).
Wählen Sie dann im linken Menü den Punkt "Wiedergabe" und in der zentralen Sektion "Allgemein".
Wählen Sie im Dropdown-Menü „Letzter Kanal beim Start fortsetzen“ aus
indem Sie die Einstellung „Vordergrund“ auswählen
oder anschaulicher:
"PVR- und TV-Einstellungen"
=> "Wiedergabe"
=> "Letzter Kanal beim Start fortsetzen" => "Vordergrund"
2) Klicken Sie auf das Symbol „Zahnrad“ in der oberen linken Ecke des Bildschirms und wählen Sie aus:
"Systemeinstellungen"
=> "Erweiterungen" => "Updates" => "Nie nach Updates suchen"
3) Klicken Sie auf das Symbol „Zahnrad“ in der oberen linken Ecke des Bildschirms und wählen Sie aus:
"Systemeinstellungen"
=> "Audio" => "Audioausgabegerät" => "PI: Analog"
Wie ich zwei Jahre lang falsch fernsehen konnte.
Ich muss Ihnen gestehen, dass ich in zwei Jahren nicht gelernt habe, richtig fernzusehen.
Normalerweise sehe ich im Wohnzimmer fern. An den Fernseher ist ein Raspberry Pi 2B angeschlossen, sowie Ethernet- und HDMI-Anschlüsse. Die Stromversorgung des Boards erfolgt über ein gewöhnliches USB-Kabel, das in den USB-Port des Fernsehers gesteckt ist, d.h. praktisch schaltet die Nutzung der normalen Fernbedienung den Fernseher ein und versorgt gleichzeitig das Raspberry Pi-Board mit Strom. Wenn ich den Fernseher mit der Fernbedienung ausschalte, wird auch die Stromversorgung des Raspberry Pi-Boards sofort unterbrochen.
Ja, ich bin mir bewusst, dass man das nicht tun sollte, da das Root-Dateisystem des Kodi-Multimediazentrums (ext3) bei mir im normalen Lese-/Schreibmodus funktioniert. Aber ich bin ein fauler Mensch und wollte zunächst testen, wie lange ich das System auf diese Weise abschalten kann, bis es komplett nicht mehr hochfährt. Leider ist es mir in zwei Jahren jedoch nicht gelungen (vielleicht hatte ich einfach nur Glück, ich weiß es nicht).
Meiner Meinung nach sollte dieser Modus, der für meinen Fernseher geeignet ist, auch für eine "einfache Internetradio-Lautsprecher" funktionieren. Da ich die automatische Aktualisierung der Kodi-Plugins zwangsweise deaktiviert habe, wird die Wahrscheinlichkeit eines Festplattenausfalls noch geringer. Im Moment sehe ich diesbezüglich keine Probleme.
Hinweis:
Sie können jedoch jederzeit mit einem einzigen yocto-Befehl
IMAGE_FEATURES += "read-only-rootfs"
und etwas Zauberei Ihr System in den "read-only"-Modus versetzen.
Die im Artikel beschriebene Distribution für "Internetradio-Lautsprecher" ist für den Heimgebrauch gedacht, und das Wichtigste für eine Heimdistribution ist eine ansprechende GUI. Meiner Meinung nach ist es sehr schwierig oder fast unmöglich, einen normalen Benutzer zu lehren, irgendwelche unverständlichen magischen Befehle in die Konsole einzugeben; er selbst kennt nicht einmal solche Wörter. Aber eine GUI ist da, bitte.
Das ist wohl mein Hauptargument für eine nicht-konsolebasierte Distribution. Die warme, ansprechende grafische Benutzeroberfläche von Kodi ist zwar nicht unbedingt notwendig, aber sie ist vorhanden.
(Ich habe ganz vergessen zu erwähnen, dass Kodi auch aus der Ferne gesteuert werden kann, zum Beispiel über ein Smartphone, wenn man die App "Yatse" installiert, und das könnte für manche ein Vorteil sein.)
Kodi-Konfiguration zur Maussteuerung
und jetzt Rakete
VolumeUp
VolumeDown
ChannelDown
ChannelDown
ChannelUp
Die Konfiguration überschreibt allgemeine (global) Ereignisse für folgende Elemente:
- Maustaste nach oben scrollen
- Maustaste nach unten scrollen
- Mittelmaustaste drücken
- Behandlung eines langen Tastendrucks (3 Sekunden oder länger),
0 Identifikator für die rechte Maustaste, 1 Identifikator für die linke Maustaste
detailliertere Informationen zur Maustateneinstellung:
Was tun, wenn das Kabelsystem nicht angekommen ist
„Aber ich habe zu Hause keine freien Ethernet-Ports (oder hatte sie nie)“ – könnte ein Teil der glücklichen Besitzer alter Raspberry Pi 1-Platinen rufen (vielleicht wurde die Platine zum Forschen gekauft und hat im Regal gelegen)
Da das Board kein integriertes WLAN hat, ist es ohne Ethernet-Verbindung nicht besonders funktional.
Natürlich gibt es die Möglichkeit, das Raspberry Pi 1-Board ohne Ethernet zu verwenden, aber das erfordert einige Anstrengungen von Ihrer Seite. Solche Dinge sind in der Regel nur dann interessant, wenn man etwas Neues lernt, d.h. es handelt sich nicht um eine benutzerfreundliche Anwendung.
Schauen wir uns also ein hypothetisches Szenario an, in dem das Board ohne Ethernet verwendet wird:
Man kann einen externen USB-WiFi-Adapter anschließen, wobei man beachten sollte,
dass der Adapter gut unter Linux funktionieren muss.
Hinweis:
Leider werden viele WiFi-Adapter nicht funktionieren.
Dies liegt nicht an der Distribution, die in diesem Artikel vorgestellt wird,
sondern eher an spezifischen Treibern der WiFi-Adapter im Linux-Kernel.
Es ist festzustellen, dass Sie momentan nicht einfach
in ein Geschäft gehen und irgendeinen WiFi-Adapter kaufen können. Vielmehr sollten Sie einen WiFi-Adapter
aus einer Liste weniger problematischer Modelle auswählen, die gut unter Linux funktionieren.
Ich habe nur die folgenden Modelle getestet:
- WiFi-Adapter mit 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 mit Ralink RT3572 Chipsatz
Wenn Sie bereits einen USB-WiFi-Adapter haben, können Sie überprüfen, ob er unter Linux gut funktioniert, indem Sie Folgendes tun:
- Installieren Sie eine gängige Linux-Distribution
wie beispielsweise „Ubuntu Desktop“ - Laden Sie das Betriebssystem herunter
- Schließen Sie Ihren USB-WiFi-Adapter an
- Starten Sie den Netzwerkmanager und versuchen Sie, sich mit Ihrem WiFi-Zugangspunkt zu verbinden
- Wenn alles gut funktioniert und Ihre Internetverbindung stabil ist, wird Ihr Adapter gut unterstützt und Sie können mit der Verbindung dieses Adapters in einer spezialisierten Distribution sowie möglicherweise mit anderen Kernel-Versionen fortfahren.
(wenn nicht, dann leider — besser gar nicht erst versuchen)
Unterstützung eines externen WiFi-Adapters auf dem „Raspberry PI“
Für die ordnungsgemäße Funktion des WiFi-Adapters unter Linux benötigen wir zwei Dinge:
1) Unterstützung des spezifischen WiFi-Adapters durch den Linux-Kernel
2) Vorhandensein eines Kernel-Moduls für den spezifischen WiFi-Adapter im System
Nehmen wir als Beispiel den Adapter TP-Link TL-WN722N. Er hat eine hervorragende Antenne.
Lassen Sie uns den Chipsatz finden, mit dem die Platine arbeitet — bei mir ist es „AR9271“, Hinweis:
Das Interessante ist, dass der Wifi-Chipsatz für dasselbe Modell
desselben Herstellers unterschiedlich sein kann.
Zum Beispiel hatte ich bei der Version 2 des TL-WN722N,
bereits einen anderen Chipsatz, den Realtek RTL8188, und dieser
funktionierte damals schlecht unter Linux; solche Dinge passieren,
d.h. manchmal muss man auch auf die kleinen Ziffern
auf der Rückseite (der dunklen) des Adapters achten.
Nun suchen wir den Namen des Parameters in der Kernel-Konfiguration, der für den AR9271-Chipsatztreiber zuständig ist, am besten sucht man nach der Kombination "AR9271 cateee.net".
wo "cateee.net" — eine großartige Seite mit Beschreibungen der Kernel-Modul-Konfigurationen von Linux ist.
Direkt finden wir den Namen der Kernel-Konfiguration — CONFIG_ATH9K_HTC
und den Namen des benötigten Kernel-Moduls ath9k_htc
und dann reicht es, den Namen des benötigten Moduls in der Fragmentkonfigurationsdatei anzugeben:
Linux-Kernel => recipes-kernel/linux/files/rbpi.cfg, fügen Sie die Zeile hinzu:
CONFIG_ATH9K_HTC=m
So können Sie in Zukunft jede zusätzliche Hardware an Ihr System anschließen (wenn sie im Linux-Kernel bereits unterstützt wird).
Was zu tun ist, wenn Sie ein Habr-Gig — ein Builder sind
Und coole Dinge erstellen, wie zum Beispiel diese. Oder sind Sie Student und träumen davon, etwas Ähnliches zu erstellen.
Man könnte zum Beispiel ein Touchscreen-Display für das RPI bei AliExpress bestellen, dort auch einen passenden Akku besorgen, alles mit einer Raspberry Pi 1, 2 oder 3 (am besten mit der 3, da sie über WLAN verfügt) verbinden, ein Design für die Benutzeroberfläche in Kodi auswählen, das für Touchscreens optimiert ist, und voilà => Sie haben möglicherweise einen einfachen Audio-Player. Natürlich wird er recht groß sein, aber er wird Ihnen gehören.
Hinweis:
Um ein Kodi-Multimedia-Center für das kostengünstigste Board
Raspberry Pi Zero Wifi in Yocto zu konfigurieren, ändern Sie einfach zwei Zeilen:
Konfigurationsdatei => build/conf/local.conf
MACHINE = 'raspberrypi0-wifi'
Kodi-Bauticket => recipes-mediacentre/kodi/kodi_17.bbappend
EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE',
'raspberrypi0-wifi', '${BS_RPI}', '', d)}"
Wenn die Reaktionsfähigkeit der GUI Kodi 17.6 aufgrund des einzelnen Prozessorkerns im Zero mysteriös erscheint, können Sie einen Trick versuchen und eine ältere, aber sehr schnelle Version wie Kodi 15.2 zusammenstellen. Diese ist in dieser Hinsicht "freundlicher" (manchmal löst eine ältere Version alles).
Leider habe ich kein Geld, um es zu überprüfen, aber ich denke, es sollte funktionieren.
Kurzanleitung zur Montage
1) Installieren Sie die Abhängigkeiten des Yocto-Projekts (zum Beispiel auf 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) Laden Sie Repo herunter und installieren Sie es:
mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
3) Laden Sie das Projekt von 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) Bauen Sie das Projekt:
./shell.sh
bitbake berserk-image
Das Gleiche kann auch für die Platinen Raspberry Pi 3B Plus, 3B und 2B gebaut werden:
repo init -u https://github.com/berserktv/bs-manifest
-m raspberry/rocko/radio-0.2.8.xml
eine detailliertere Anleitung zur Montage
und zum Schreiben auf eine microSDHC-Karte siehe
Nachsatz
Natürlich ist die Idee einer Internet-Radiosäule gängig, sie ist allgemein bekannt, und auf Habr finden Sie zahlreiche Artikel dazu, zum Beispiel
Und Sie könnten denken, ich hätte die Anforderungen an die fertige Lösung nur angepasst. Darauf kann ich nur ehrlich antworten: Nein, wirklich nicht.
Die Geschichte von Herrn Erwi
Ob Sie es glauben oder nicht, aber die Geschichte ging so:
Unser Büro grenzt an eine Firma, die verschiedene Audio-
geräte herstellt, und eines Tages kam der Geschäftsführer dieser Firma, nennen wir ihn Herrn "Ervi",
zu unserem stellvertretenden Filialleiter Herrn "Arsenij"
und fragte ihn, wie schwierig es sei, auf die Platine eines Raspberry Pi
das Abspielen eines Audiodatenstroms anzuschließen, d.h. die Platine wird mit dem Netzwerk
und den Lautsprechern verbunden, und "man hört den charakteristischen Klang".
Danach ging Herr Arsenij zu meinem Vorgesetzten - Herrn "Boris" - und leitete die Frage an ihn weiter,
und ich, als unbeteiligter Beobachter, erinnerte mich zufällig an diese Idee
und nannte sie "Die Aufgabe der drei Chefs".
Im Großen und Ganzen wollten sie es besser machen,
aber am Ende kam es, Zitat - "Aber Herr Ervi, wie immer, half."
Nach einer Weile erkundigte ich mich bei Herrn "Boris"
nach seiner Meinung über das Schreiben eines kurzen Artikels zu diesem Thema
auf "Habr", worauf "Boris" antwortete, dass die Änderung
von "drei Menüpunkten" in Kodi nicht wirklich neue
Informationen bringe und keinen separaten Verweis wert sei.
Natürlich stimme ich ihm vollkommen zu, und deshalb werde ich ihm nicht erzählen,
dass ich dazu etwas geschrieben habe.
Der Artikel wurde ausschließlich für das "Raspberry Pi 1"
geschrieben, das ich von Herrn "Boris" für die Dauer des Experiments ausgeliehen habe,
alle anderen "Raspberry Pi 1" sind zufällig.
Möchten Sie viele gute und verschiedene Zusammenstellungen, und lassen Sie sogar den alten Klinkenstecker in diesem Jahr für Sie singen.
Quelle: habr.com
