Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ein minimales Internetradio für alte und neue Raspberrys
(06.01.2019, 23:08)HolgerK schrieb: Hallo Jupp,
das Problem mit den fehlenden Unix Dateirechten tritt immer dann auf, wenn das ZIP-Archiv auf einer
Windows Maschine entpackt wurde. Von Windows aus, deshalb immer das ZIP-Archiv auf den
Raspberry kopieren und dort mit unzip... entpacken. Dann bleiben die Dateirechte erhalten.

Gruß aus Kiel
Holger

genauso hab ich es gemacht. Siehe vorherigen post.
Gruß,
Jupp
-----------------------------
wenn man nur den Hammer kennt, sieht jedes Problem aus wie ein Nagel
--------
Zensur findet im Endgerät statt (CCC)
Zitieren
(06.01.2019, 22:49)saarfranzose schrieb:
(06.01.2019, 22:41)Bernhard45 schrieb: ..aber ehrlich gesagt bringt es doch nicht viel auf einer Standardinstallation, denn die WLAN Zugangsdaten sind nach der Linuxinstallation ja erst einmal unbekannt..

eben nicht! Ich weis nicht seit welcher Version von raspbian stretch das so ist, aber ganz ohne iRadio schnappt sich raspbian beim ersten Start bereits die wpa_supplicant.conf in /boot. Man kann sie also zusammen mit der SSH-Datei bereits direkt nach dem imaging aufkopieren.

Ja das habe ich auch schon gelesen das das gehen soll, hat bei mir aber out of box mit dem Minimalsystem nie funktioniert. Bin laut diversen Foren (darunter auch zwei Bastler aus dem WGF) wohl auch nicht der Einzige mit diesem Problem.
Auf jeden Fall habe ich es deshalb explizit nochmal in das Startskript aufgenommen und erst danach klappte das Update der wpa_supplicant.conf aus /boot. Ich denke so sind wir auf der sicheren Seite, auch und insbesondere wenn das iRadio mal nicht auf einem Raspbian-Linux oder gar anderem SoC (Odroid, Banana Pi,...) aufgebaut werden soll.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
(06.01.2019, 23:14)saarfranzose schrieb: genauso hab ich es gemacht. Siehe vorherigen post.

Hm, was gibt den das Kommando "umask -S" auf dem Raspberry zurück?
Das sind die Dateirechte für neu angelegte Dateien.

Gruß aus Kiel
Holger
Zitieren
Hallo Jupp,

Ich habe das letzte iRadio-Archiv jetzt nochmal direkt auf dem Raspberry zusammengebaut, vielleicht geht deine Installation nun auch über den Windows-Entpacker und die Dateien haben die richtigen Rechte.

Download: 
.zip   iRadio07012019.zip (Größe: 751,94 KB / Downloads: 12)


Gruß Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
(06.01.2019, 23:53)HolgerK schrieb:
(06.01.2019, 23:14)saarfranzose schrieb: genauso hab ich es gemacht. Siehe vorherigen post.

Hm, was gibt den das Kommando "umask -S" auf dem Raspberry zurück?
Das sind die Dateirechte für neu angelegte Dateien.

Gruß aus Kiel
Holger

   
Gruß,
Jupp
-----------------------------
wenn man nur den Hammer kennt, sieht jedes Problem aus wie ein Nagel
--------
Zensur findet im Endgerät statt (CCC)
Zitieren
Bernhard45 schrieb:Hallo Jupp,

Ich habe das letzte iRadio-Archiv jetzt nochmal direkt auf dem Raspberry zusammengebaut, vielleicht geht deine Installation nun auch über den Windows-Entpacker und die Dateien haben die richtigen Rechte.

Gruß Bernhard

ja, so sieht es schon viel differenzierter aus. Problem gelöst und wieder was dazugelernt :-)

jetzt kann ich mich endlich um das Display kümmern.

   

Schönen Tag dem Entwicklerteam und den Mitlesenden :-)
Gruß,
Jupp
-----------------------------
wenn man nur den Hammer kennt, sieht jedes Problem aus wie ein Nagel
--------
Zensur findet im Endgerät statt (CCC)
Zitieren
Hallo zusammen,

heute eine neue Version vom iRadio.


.zip   iRadio21012019.zip (Größe: 1,55 MB / Downloads: 15) 21.01.2019: Hinzufügen zweier Skalensimulationen für X11 und DRM


Ich hatte ja bereits im Thread zu Jupps aktuellen Umbau gepostet, das auch grafisch animierte Senderskalen mit ins iRadio aufgenommen werden sollen. Mit der Einführung möchte ich heute beginnen und in den nächsten Wochen fortfahren, sobald genügend Speicherplatz für zukünftige Versionen gefunden wurde. Der Grund ist, das fotorealistische Senderskalen große Bilddateien benötigen, für das Alphablending im unkomprimierten PNG-Format. Da hier im Forum nur Dateianhänge erlaubt sind, die maximal 2 MB groß sind, musste ich für die heutige Version schon Abstriche machen. So enthält die erste Skalensimulation kein drittes Layer welches die Skalenbeleuchtung simuliert. Auch die Auflösung der Skalen musste um eine Größenordnung reduziert werden, aber als erste Demo mag es dennoch ausreichen. Auch eine dritte Simulation nach "Bobs-Art" fehlt, da für das Bearbeitungswerkzeug für die Senderlisten kein Platz mehr war, trotz zip-Komprimierung.

Die Simulationen wurden auch nochmal auf einer anderen Bibliothek codiert. Dies ist die SDL2 mit der eigentlich Spiele programmiert werden. Diese Bibliothek hat einen etwas höheren Ressourcenanspruch, kann dafür aber sowohl mit X11, als auch DRM-Unterstützung gebaut werden. Sprich, man kann auf X11 im Rendering verzichten und dafür den DRM Support der Raspberries nutzen.
Generell wurde auch auf einen All-In-One-Installer verzichtet. Warum? Nun ich habe bei allen mir verfügbaren Displays feststellen müssen, das diese Displays unterschiedliche Treiber benutzen bzw. auf CD zum Teil eigene Treiber mitbringen, wenn der Anschluß nicht per HDMI erfolgt. Um die volle Leistung des Raspberrys auszunutzen, ist die Lite-Version des Raspbian absolut nötig. Auf dieser Distribution muss ein minimales X11-System bzw. DRM mit den jeweiligen hardwarebeschleunigten Treiber des eingesetzten Displays installiert werden. Vergesst die Rasbians mit vorinstalliertem Desktop-System wenn Ihr alte Raspberrys benutzen wollt! Auf einem Ur-Raspberry sind durchaus hohe flüssige Frameraten erreichbar, aber nicht out-of-box, sondern nur mit viel Handarbeit, den passendem Treiber und Compileroptimierung. 

   

Natürlich werden auch die BananaPi- oder Odroid-Systeme unterstützt. Hier aber gelten wieder eigene Regeln für X11 und beschleunigte Grafikausgaben. 

Kommen wir zu den Simulationen. 
Die Simualtion 1 stellt eine Linearskala im Breitformat dar, wie Sie viele Röhrenradios haben. Das sähe dann so aus:

   

   



In Simulation 2 haben wir es mit einer Rundskala zu tun. 

   

   

Man kann diesen Democode für das iRadio durchaus mit eigenen Skalen abändern. Es müssen nur neue Skalenfotos aufgenommen, bearbeitet und als PNG abgespeichert werden. 

Hier eine kleine Anleitung für Simulation 1.

Nachdem ein qualitativ ausreichendes Foto oder Scan eines Skalenglases angefertigt wurde, lädt man dieses in eine Bildbearbeitung, welche Alpha-Kanal und PNG-Format unterstützt. Ich benutze mal das kostenlose und unter Unix weit-verbreitete GIMP.

Dann skaliert man das Foto in die native Auflösung des später benutzen Panels!

   

Diese Auflösung trägt man im Simulationscode an der gezeigten Stelle ein.

   

Jetzt ermittelt man die Pixelwerte des linken und rechten Zeigeranschlages. Auch diese Werte werden in den Simulationscode eingetragen.

   

Anschließend fügt man dem Foto einen Alphakanal hinzu. Den Menüpunkt sieht man im Bild.

Danach fängt die Fummelarbeit an. Da wo der Skalenzeiger durchscheinen soll, muss man den Bildinhalt auf dem Skalenfoto löschen.

   

Mit dem "Zauberstab-Tool" kann man ähnliche Bereiche automatisch selektieren und löschen. Das macht die Sache etwas weniger fummelig. Eine Nachbearbeitung ist jedoch meist dennoch nötig.

Ist man damit fertig, dann speichert man das Skalenglas als PNG-Datei ab. 

   

Natürlich benötigt man auch einen Zeiger. Auch dieser wird als PNG abgespeichert. Idealerweise füllt der Skalenzeiger das gesamte Bild aus. Wenn nicht, dann sind auch hier Alphakanal hinzuzufügen und Freistellungen vorzunehmen. Diese Freistellungen sind wichtig wenn man eine dahinterliegende Skalenbeleuchtung simulieren möchte, was aber in dieser Version aus Gründen der Archiv-Größe nicht der Fall ist.


Ähnliches Spiel betreibt man bei Simulation 2 mit einer Rundskala.

   

   

Panelgröße und Zeigeranschläge werden erfasst und im Simualtionscode eingetragen. Ein Alphakanal und Freistellung ist in dem Fall nicht nötig, den es gibt keine Simulation der Beleuchtung und die Skale liegt als unterste Schicht im Renderer. Den Mehraufwand hat man dann beim Zeiger, der in diesem Fall ja nicht hinter, sondern vor der Skale zu Liegen kommt.

   

Für beide Simulationen liegen sämtliche Dateien natürlich schon fertig in den Verzeichnissen vor. Die Bilder sollen nur den Weg zur eigenen Simulation verdeutlichen.

Nachdem die Simulation gebaut wurde (ein Script liegt jeder Version bei), muss das Binärfile natürlich noch bei Rechnerstart mit X11/DRM gestartet werden. Hierzu ist die Datei rc.local in /etc/ abzuändern. Hier kann der Eintrag für den Displaydaemonen durch zum Beispiel: startx /absoluter_Pfad_zur_Simulation/sdlskale ersetzt werden. In der Regel wird der Pfand dann /home/pi/iRadio/display/x11/skale1 oder skale2 sein, wenn man nichts am iRadio verändert.

Hat man alles richtig gemacht, so wird das Internetradio dann mit der Simulation als Displaydaemon starten und der Zeiger wird sich beim Programmwechsel auf der Skala mitbewegen. Damit wirklich jede Station einen Platz auf der Skala zugeordnet bekommt, muss man auf ein Detail bei der Erstellung der Programmliste achten. Es dürfen dort nur URLs eingetragen sein, bei der die Radiostation kein URL-Redirection verwendet! Auf Grund eines Bugs in vlc, den ich hier im Forum schon mal beschrieben habe, der aber bis dato nicht vom Entwicklerteam beseitigt wurde, kann die eingestellte Radiostation nur über Ihre URL eindeutig zugeordnet werden! Wird diese jedoch durch URL-Umleitung verändert und stimmt somit nicht mehr mit der URL in der Senderliste (Playlist.m3u) überein, kann eine Identifizierung der Station (noch!) nicht erfolgen. Der Zeiger bleibt in dieser Situation einfach auf der vorhergehend eingestellten Station stehen. 

Wie erkennt man eine URL-Umleitung?

Ganz einfach. Man lädt das Radio einfach mit der erstellten Playlist und wechselt per Taster/Drehencoder/what ever auf die suspekte Station. Dann loggt man sich über das Netzwerk per Remote-Interface beim iRadio ein und setzt ein status-Kommando ab.

   

Stimmt die in netcat angezeigte URL nicht mit der URL in der Playlist überein, wird eine URL-Umleitung genutzt! 
In der Regel kann man sich die m3u-Datei des Senders herunterladen, in einem Texteditor öffnen und findet dann darin eine dauerhafte bzw. fixe URL! Oder man nutzt einfach die URL, die netcat direkt anzeigt. 

So das war es erstmal... der Beitrag/Thread wird bei Gelegenheit fortgesetzt.
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Danke fūr diese Lösung. Funktioniert sehr gut. Ich habe mir fūr die 3Ds ein passendes Breitformatdisplay bestellt. Mal sehen wann es ankommt.

Otto
Zitieren
Hallo zusammen, 

hier eine neue iRadio-Version in der bereits einige per Mail geäußerte Wünsche berücksichtigt wurden.

Download: 
.zip   iRadio25012019.zip (Größe: 1,76 MB / Downloads: 16) 25.01.2019:


- im Simulationscode einer jeden Simulation gibt es jetzt zwei zusätzliche Defines.

   

Über BILDER_PRO_SEKUNDE kann die Framerate der Skalensimulation erhöht werden, dadurch wird die Laufgeschwindigkeit 
des Skalenzeigers beeinflusst. Eine Erhöhung der Framerate geht mit einer geringfügig höheren CPU-Auslastung einher, die aber bei aktuellen Systemen wie einem Pi3 und(!) beschleuinigten Videotreiber nahezu vernachlässigbar ist. 

Über  PAUSE_BEIM_SENDERWECHSEL kann man einstellen, das der Sender solange gemuted bleibt bis der Skalenzeiger die 
Position auf der Senderskale erreicht hat. Damit wird ein noch realistischeres Abstimmgefühl erzeugt. 

true = Station bleibt bis zum Erreichen der Skalenposition gemuted
false = Station wird schnellstmöglich wiedergegeben, d.h. auch schon bevor der Skalenzeiger die Position erreicht hat

- Da noch etwas Platz im Archiv war, ist die Skale von Jupps Metz Baby Radio nun Bestandteil des "X11-Pakets".

- Sollte cvlc beim Neustart nicht automatisch anspielen, so wird über die Startdatei nochmal ein "Play"-Kommando nachgesendet. 

Ich möchte nochmal die Wichtigkeit einer beschleunigten Grafikaufgabe betonen, wenn ihr eine Skalennachbildung nutzen wollt, insbesondere da ein Standard-Raspbian ohne aktivierte Grafikbeschleunigung daherkommt! Aktiviert in raspi-config den OpenGL Driver (Full KMS) wenn Ihr Panels benutzt die über HDMI angeschlossen werden. 
Bei anderen Schnittstellen besorgt Euch die passenden Treiber. Andere Rechner als Raspberrys haben in Ihren Distributionen i.d.R. eigene beschleunigte Treiber für die Grafikhardware dabei. Die Aktivierung und Konfiguration erfolgt dann nach den Spielregeln der jeweilig eingesetzten Distribution.

Viel Spaß beim Basteln und Aufbauen von Internetradios.
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Freunde des iRadio "Software Baukastens"!

Ich habe den iRadio Demon für das kleine I2C OLED Display etwas weiter entwickelt und stelle das Ergebnis hier zur Verfügung.

Die Darstellung ist ähnlich der hier (Post #4) auf Phyton-Script Basis vorgestellten Version.

   

Zusätzlich gibt es eine kurzzeitige Einblendung des Volume Levels (0 - 100%) bei Lautstärkeänderung.

Vor dem Hintergrund der Skalen Simulationen wirkt es etwas "simpel", aber manchmal sind ja auch gerade kleine platzsparende
Displays nützlich. Außerdem begeistert mich die, für die Displaygröße, hervorragende Lesbarkeit der kleinen Dinger.

Hier der Quellcode als ZIP-Datei zum Patchen der iRadio Installation.


.zip   iRadio.zip (Größe: 75,15 KB / Downloads: 13)

Auf diesem Wege auch noch mal danke an Bernhard für die Bereitstellung des iRadio Baukastens!
Insbesondere die beigefügten Demo Quellcodes, sind aus meiner Sicht sehr gut geeignet um tiefer in die Software und
Programmierung einzusteigen.


Gruß aus Kiel
Holger
Zitieren
Was soll ich sagen Holger, ich bin überglücklich. Vielen Dank für deine Mitarbeit an diesem Baukastenradio. Meine OLED-iRadios bekommen den Firmwarepatch zugespielt! Das was wir hier gemeinsam schon erreicht haben, darauf können wir stolz sein.

Mit dem iRadio und einem Chipkarten-großen Rechner bauen wir hier Digitalradios, die sich nicht vor den "Industriegeräten" verstecken müssen. Im Gegenteil, bei unserem Radio haben wir die absolute Kontrolle und nicht Firmen die ein Gerät mit Kill-Switch jederzeit stilllegen können.

Was sind meine weiteren Pläne am iRadio?

- Die Skalensimulation wird weiter ausgebaut. Es soll die Möglichkeit geschaffen werden, das die Namen der Internetradiostationen
 direkt in das Skalenglas und über die Skale verteilt gerendert werden.

- Slideshowunterstützung, also Albumcover zum aktuell gespielten Lied.

- Ich möchte eine menübasierte Benutzeroberfläche hinzufügen, wie man sie von den DAB-"Männern" von Technisat her kennt.  Hier mal die
 Anleitung vom DABMAN i200: https://images-eu.ssl-images-amazon.com/...QGaYxS.pdf
 
- Simulation von magische Augen als Status-, Aussteueranzeige.

- Für das iRadio möchte ich ein Installations- und Konfigurationstool auf ncurses-Basis haben, die Optik gleicht also raspi-config.

- Ich möchte zusätzlich das Update der Firmware und Senderliste über e-Mail einführen.  Soetwas hatte ich ja bereits im Umbaubericht
 einer ITT Viola 350 zur Viola 350D gezeigt und es gab Bitten dies doch auch beim iRadio möglich zu machen bzw. eine solche Lösung
 mit in die Archivdatei aufzunehmen.

- Es soll endlich mal eine Kurzanleitung und ein Handbuch als PDF für das iRadio erstellt werden. Puhh, das wird die schlimmste Arbeit!

- Gestensensoren, IR-Fernbedienungen und Sprachsteuerung per MEMS-Micro sollen als zusätzliche Bedienoption hinzugenommen
 werden.

- mpd soll neben vlc als zusätzlicher Medienplayer mit integriert werden, wobei alle bisherigen Programme über eine
 Kompatibilitätsschicht ohne(!) Codeänderung auskommen.

Die Reihenfolge der Umsetzung ist beliebig und wird nicht in einem Release erfolgen, sondern Stück für Stück.


Viel Spaß beim Bauen von Digitalradios.
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo Bernhard,
ich glaube bei der Berechnung der SDL_Delay Zeit hat sich ein Fehler eingeschlichen.
Bei Skale1 z.B. müsste Zeile 271
"SDL_Delay (1/(1000/BILDER_PRO_SEKUNDE)); // Limit max. xxx fps"
lauten.
Bei Skale1 erfolgt bei mir sonst keine Anzeige des Stationsnamens.

Gruß aus Kiel
Holger
Zitieren
Hallo Holger,

schauen wir mal in die Doku zu SDL-Delay!

SDL_Delay(Uint32 ms); // Use this function to wait a specified number of milliseconds before returning.
ms: the number of milliseconds to delay

Wollen wir zum Beispiel 10 Bilder pro Sekunde also Frames pro Sekunde, dann würde alle 100ms ein Bild gezeichnet, den 10*100ms = 1 Sekunde. Es müssen also 100 ms "vertrödelt" werden.

SDL_Delay (1000/BILDER_PRO_SEKUNDE);
also SDL_Delay(1000/10);  1000 (ms) dividiert durch 10 = 100 (ms)!

Bei deiner Anweisung wären es aber 1/(1000/10) = 0.01 ms und das stimmt dann nicht mehr wenn 10 Bilder pro Sekunde erreicht werden sollen, die Anweisung in Zeile 271 ist also wie Sie im Programm steht korrekt.

Wie im Code auch im Kommentar hinter Zeile 271 zu lesen ist:  // Limit max. xxx fps"  Das bedeutet  das maximal xxx Bilder pro Sekunde gezeichnet werden. Je nach eingesetzter CPU, GPU und Systemauslastung können es auch weniger als xxx Bilder pro Sekunde werden und(!) das Zeichnen eines Frames/Bildes kostet ja auch einige CPU-Takte!
Nur mehr werden als xxx Bilder/Sekunde können es nicht auch wenn die CPU/GPU noch viel mehr Bilder pro Sekunde berechnen und rendern könnten. Das Ganze ist also ein Grenzwert damit die CPU/GPU nicht mehr Bilder als nötig pro Sekunde berechnen müssen und Zeit für andere Tasks bleibt.

Dein Problem mit der fehlenden Senderanzeige liegt wahrscheinlich in einem anderen logischen Abschnitt begründet. Das müssen wir mal genauer ansehen. Wir werden die Ursache finden!
 
UND NOCH ETWAS: ES WÄRE SCHÖN WENN MAN TECHNISCHE FRAGEN/FEHLERMELDUNGEN/TIPPS ZUKÜNFTIG BITTE IN "FAQ zum iRadio" SCHREIBEN KÖNNTE! ICH HABE KEINE LUST DIE ADMINISTRATION JEDESMAL UM BEREINIGUNG ZU BITTEN DAMIT ES HIER HALBWEGS ÜBERSICHTLICH BLEIBT! WIR WOLLEN DOCH ALLE NICHT DIE PASSENDEN VERSIONEN UND TOLLEN PATCHES WIE DEN VON HOLGER ZWISCHEN EINEM HAUFEN TEXT SUCHEN MÜSSEN UND DIE ADMINS/MODS WERDEN ES UNS AUCH DANKEN. DANKE!
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Eine kurze Entwarnung! Wir haben die Ursache aus Post #132 und #133 lokalisiert, die iRadio-Version vom 25.01.2019 kann ohne Probleme für weitere Aufbauten verwendet werden, es ist keine nachträgliche Codekorrektur nötig.

Ab jetzt dann hier bitte nur iRadio-relevante Softwarepakete einstellen. Probleme, Fragen, Anregungen in "FAQ zum iRadio". Danke!
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
hier der code für die Lautstärkeeinstellung per Drehencoder. Das war keine große Kunst, da er fast identisch ist mit dem code für die Sendereinstellung. Es werden nur andere GPIO's benutzt und andere Befehle mit netcat abgesetzt (volup und voldown). Die entpackten Dateien werden im Ordner iRadio abgelegt.


.zip   volume.zip (Größe: 992 Bytes / Downloads: 11)

Ich hab mich für folgende GPIO's entschieden:

Code:
#define  RoAPin    28  // GPIO-Pin 20, Pinnummer 38
#define  RoBPin    29  // GPIO-Pin 21, Pinnummer 40

das kann natürlich geändert werden. Die wiringPi Benennung kann dieser Tabelle entnommen werden:

   

die Zahl hinter volup und voldown bestimmt die Schrittweite der Lautstärkeänderung pro Impuls des Encoders.

Da ich unter Windows die Dateien gezippt habe muss mit chmod +x install_volume.sh das sh-script ausführbar gemacht werden.

Der erzeugte daemon gpiod_volume muss händisch in die /etc/rc.local eingetragen werden, analog zu den anderen daemonen.
Gruß,
Jupp
-----------------------------
wenn man nur den Hammer kennt, sieht jedes Problem aus wie ein Nagel
--------
Zensur findet im Endgerät statt (CCC)
Zitieren
Hallo, 

bei einigen Nach- und Umbauprojekten im Forum stellte sich heraus, das die Bastler leider nicht immer das optimale Display für Ihr Vorhaben ausgewählt haben. Hier mal eine kleine Übersicht an Displays, die es für den Pi gibt und für welches Internetradio sich die Displays eignen.

Displays mit SPI-Schnittstelle (SPI = Serial Peripheral Interface)

Diese Displays sind relativ günstig und in vielfältigen Größen und Auflösungen (wie Sand am Meer) zu bekommen. Teilweise 
unterschiedliche Displaytechniken: OLED, TFT, LCD, ...
Da diese Displays über eine serielle Schnittstelle angesprochen werden, benötigen sie 
auf dem Pi relativ wenige GPIOs. In der Regel bleiben also noch genügend GPIOs für 
andere Hardware wie Taster, Drehencoder usw. frei.
Da die Kommunikation mit dem Display aber über eine serielle Schnittstelle abläuft, wird
nur eine niedrige Datenrate erzeilt, was bedeutet das die Displays auch nur niedrige Bildwiederholraten
erzielen. Viele Displays werden über generische Treiber unterstützt.

Anwendungsbereich im iRadio:
- alle Bedienkonzepte mit Außnahme von Skalensimulationen!!! 
- auch moderne (FLTK-) GUIs mit Touchbedienung, Titel und Albumcoveranzeige - hier werden nur niedrige Bildwiederholraten (2-3 fps) benötigt.



Displays mit DPI-Schnittstelle (DPI = Display Parallel Interface)

Diese Displays sind ebenfalls sehr günstig zu bekommen, jedoch muss man schon nach DPI-Displays in bestimmten
Größen "suchen"! Da diese Displays über eine parallele Schnittstelle angesprochen werden, benötigen 
sie sehr viele (teilweise alle) GPIOs eines Raspberry. 
Taster, Drehencoder können eventuell nur über Portsharing oder mit zusätzlichen Microcontroller an den Raspberry angebunden werden.
Durch die parallele Schnittstelle sind sehr hohe Datenraten und damit hohe Bildwiederholraten (50-60 fps) möglich.
Der Farbraum dieser Displays ist in der Regel deutlich größer als bei SPI-Displays und kommt an native HDMI-Displays ran. Es muss drauf geachtet werden, das das Display auch einen Treibersupport für Raspberry, Odroid, Banana,.... hat.

Anwendungsbereich im iRadio:
- alle grafischen Bedienkonzepte, auch Skalensimulationen, bei denen vorzugsweise eine Touchbedienung erfolgt!!! 


Displays mit HDMI-Schnittstelle

Diese Displays sind im Vergleich zu SPI/DPI-Displays etwas teurer, da ein zusätzlicher HDMI-Controller verbaut wird.
Größen und Auflösungen sind sehr variabel, es gibt sie bis 2.8 Zoll im unteren Format, aber auch als Streched-Display im Format mit einem Seitenverhältnis von 49:2 bzw. Sonderanfertigungen. Preisbereich 20-xxx Euro.
Da die Anbindung über die schnelle HDMI-Schnittstelle erfolgt, sind alle GPIOs des Raspberrys nutzbar.
Treiberseitig kann auf GPU-beschleunigte Displayausgaben gesetzt werden, siehe iRadio-Thread.

Anwendungsbereich im iRadio:
- alle grafischen Bedienkonzepte, auch Skalensimulationen mit oder ohne Touch-Funktionalität


Ich hoffe jetzt sollte jeder das richtige Display für sein Internetradio finden können.

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hier ein neues Release zum iRadio.
Da das Paket nun mittlerweile 4.4 MB groß ist, im Forum sind nur 2 MB erlaubt, muss ich den Download auf eine exteren Quelle verlinken.

Download: https://mega.nz/#!vWojXSaR!Gb10qe4wkIpv2...YtSjFKG63M

13.02.2019 : - Hinzufügen eines Displaydaemon für Displays mit 8/16 Bit - Parallelschnittstelle, es werden die folgenden TFT- Controller unterstützt.

8bit Parallel ILI9325   
8bit Parallel ILI9327   
8bit Parallel ILI9341   
8bit Parallel ILI9342   
8bit Parallel ILI9481   
8bit Parallel SPFD5408   
8bit Parallel S6D1121   
8bit Parallel R61505U   
16bit Parallel ILI9341   

   
Im Bild ein 8Bit ILI9341.

Der Daemon liegt in iRadio/display/ILIxxxx_parallel/ und hat den Code in der Datei displayd.c (wie immer halt).
Wie die Verkabelung des Displays mit dem Raspberry erfolgt, ist in der Datei README.md hinterlegt.

Der jeweils verwendete Displaycontroller ist in der Datei build.sh einzutragen. 

Beispieleintrag in der build.sh:

cc -o displayd displayd.c fontx.c ili93xx.c -lwiringPi -lm -lpthread -DILI9481

Hier wird ein Daemon mit ILI9481-Unterstützung gebaut.

Für ILI9341 sieht build.sh dann so aus:

cc -o displayd displayd.c fontx.c ili93xx.c -lwiringPi -lm -lpthread -DILI9341 

Insgesamt gibt es in build.sh die Optionen:
 
-DILI9325   
-DILI9327   
-DILI9341   
-DILI9342   
-DILI9481   
-DSPFD5408   
-DS6D1121   
-DR61505U   

In der Datei pin.conf kann man festlegen welcher GPIO jeweils für welche Datenleitung verwendet wird, steht aber auch alles in README.md und lesen könnt ihr ja. 

Nachdem das Display am Raspberry angeschlossen ist und  der Controllertyp in build.sh eingetragen wurde, kann man das compilieren und installieren des Daemons im iRadio-Order durch den Aufruf des Scriptes install_ILIxxxx_TFT_par.sh mit root-Rechten beginnen. Nach einem Reboot des Radios ist dann alles aktiv. Achtet darauf das sich der Steuerdaemon gpiod (für die Programm- oder Lautstärkenregler) nicht mit dem Display ein GPIO-Pin teilen muss, andernfalls ist das Verhalten des Radios unbestimmt! Aber auch das dürfte eigentlich klar sein!

Wie immer kann und soll displayd durch den Nutzer selbstständig anpassbar sein. Die hier mitgebrachten Treiber bieten dazu eine wunderschöne API für eigene Oberflächen.

Code:
void lcdWriteByte(uint8_t data);
void lcdWriteWord(uint16_t data);
void lcdWriteDataWord(uint16_t data);
void lcdWriteDataWord_16bit(uint16_t data);
void lcdWriteDataByte(uint8_t data);
void lcdWriteCommandWord(uint16_t command);
void lcdWriteCommandByte(uint8_t command);
void lcdWriteRegisterWord(uint16_t addr, uint16_t data);
void lcdWriteRegisterByte(uint8_t addr, uint16_t data);
void lcdInit(uint16_t model, uint16_t width, uint16_t height,char * ppath);
void lcdReset(void);
void lcdSetup(void);
void lcdDrawPixel(uint16_t x, uint16_t y, uint16_t color);
void lcdDrawFillRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
void lcdDisplayOff(void);
void lcdDisplayOn(void);
void lcdFillScreen(uint16_t color);
void lcdDrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
void lcdDrawRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
void lcdDrawCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);
void lcdDrawFillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);
void lcdDrawRoundRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t r, uint16_t color);
void lcdDrawArrow(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t w,uint16_t color);
void lcdDrawFillArrow(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t w,uint16_t color);
uint16_t rgb565_conv(uint16_t r,uint16_t g,uint16_t b);
int lcdDrawSJISChar(FontxFile *fx, uint16_t x,uint16_t y,uint16_t sjis,uint16_t color);
int lcdDrawUTF8Char(FontxFile *fx, uint16_t x,uint16_t y,uint8_t *utf8,uint16_t color);
int lcdDrawUTF8String(FontxFile *fx, uint16_t x,uint16_t y,unsigned char *utfs,uint16_t color);

Einige dieser Displays haben auch eine berührungsempfindliche Oberfläche. Wie man diese an den Raspberry anschließt und abfragt, steht ebenfalls in der README.md. Damit lässt sich auch abseits von X11/FLTK eine entsprechend zu steuernde Nutzeroberfläche gestalten.

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo zusammen, 

gestern hatte ich dem iRadio ein "Treiberpaket" mit Democode für einen Displaydaemonen mitgegeben. Damit ist es möglich, fernab von einem grafischen Grundsystem in Linux, durch Grafikprimitiven eine eigene Benutzeroberfläche zu programmieren. Unser HolgerK hat ja schon gezeigt wie schön soetwas
funktioniert und seinen Code als Patch für das iRadio zur Verfügung gestellt. Vielen Dank nochmal. 

Per Email erhielt ich heute eine Anfrage, ob es denn nicht auch möglich ist, die FLTK-Oberfläche (weiter vorn in diesem Thread) auf so einem Display laufen zu lassen.
Ja klar geht das, man könnte sogar (mit Einschränkungen) unsere Skalensimulation auf solche Displays bringen. Das geht über das Framebuffer von Linux für eine ganze Reihe von Displays! Allerdings muss man sich auch Fragen ob eine Skalensimulation auf einem monochromen 128x64 Pixel großem OLED mit SSD1306-Controller überhaupt Sinn macht. Theoretisch ist es möglich. Ich möchte anhand eines 128x160 Pixel großen Displays, mit ST7735 Controller, mal zeigen wie die Einrichtung erfolgt.

Den meisten Linuxdistributionen für Raspberrys und anderen SoCs hat man für solche Kleindisplays bereits Framebuffer-Treiber mitgegeben, diese müssen nur noch aktiviert, sprich beim Systemstart geladen werden.

Welche Displays von dem Framebuffer unterstützt werden, kann man hier sehen: https://github.com/notro/fbtft/wiki/LCD-Modules
Weiter unten auf der verlinken Seite sind die Display abgebildet und teilweise schon mit den Namen versehen, wie man sie bei ebay oder Amazon findet.
Die Standardpinbelegung ist ebenfalls aufgeführt, kann aber abgeändert werden. 

Beispielhaft nehme ich ein Display von Saintsmart, welches auf der Seite nicht abgebildet ist. Ich weis aber das das Display ein ST7735-Controller besitzt, über SPI angesteuert wird und kann es somit dennoch verwenden.

Wie gehe ich vor.

1. ) Zunächst muss ich beim Raspbian (oder einer anderen Distribution) die SPI-Schnittstelle aktivieren. 

In Raspbian geht das auf zwei Arten.

1a.) Aktivieren über das Raspbian-inkludierte Programm raspi-config. In ein Terminal gebe ich zum Start dieses Programms folgendes ein:

sudo raspi-config

   

Danach erhalte ich folgenden Bildschirm.

   

SPI aktiviere ich unter Option 5.

       

Damit wäre SPI nach einem Reboot aktiviert.

1b.) ODER: Ich öffne die Datei config.txt die in /boot liegt und entkommentiere die Zeile dtparam=spi=on
       Nach dem Speichern der Datei und einem Reboot ist die SPI-Schnittstelle des Raspberrys ebenfalls einsatzbereit.


2.) Nun sorge ich dafür das die Framebuffer-Treiber beim Systemstart geladen werden.

Ich öffne dazu die Datei /etc/modules-load.d/fbtft.conf  , wenn diese noch nicht existiert, dann lege ich sie gleich mit an.
In diese Datei schreibe ich folgenden Inhalt:

spi-bcm2835
fbtft_device


Beim nächsten Neustart wird also der Framebuffertreiber fbtft_device gestartet. Nun muss ich nur noch mitteilen welches Display denn am Raspberry hängt.
Dazu schaue ich nochmal auf die Seite https://github.com/notro/fbtft/wiki/LCD-Modules  und suche welches Display dort mit dem ST7735-Controller ausgestattet ist.

In der Tabelle "FBTFT devices" finde ich zum Beispiel nahezu am Anfang den Eintrag 

Adafruit 1.8 
Device=adafruit18
Driver=fb_st7735r SPI 8-bit

Jetzt habe ich alle Daten um den Framebuffertreiber zu konfigurieren.
Ich öffne/erstelle dazu die Datei /etc/modprobe.d/fbtft.conf

Darin trage ich folgendes ein.

options fbtft_device name=adafruit18

Ich speichere die Datei. In dieser Datei kann man noch weitere Angaben hinzufügen. Zum Beispiel abweichende Anschlüsse an den GPIOs oder die Geschwindigkeit der Schnittstelle um ggf. höhere Frameraten zu erhalten. So zu Beispiel:

options fbtft_device name ........ gpios=reset:25,dc:24,led:18 speed=16000000 rotate=90 

Hier wird dem Framebuffertreiber mitgeteilt, das ein Display abweichend die Resetleitung an Pin 25, die DC-Leitung an Pin 24 und die LED-Hintergrundbeleuchtungssteuerung an Pin 18 hat. Die Geschwindigkeit der Schnittstelle wird auf 16 MHz gesetzt, das Bild soll um 90 Grad rotiert/gedreht werden.

Nachdem die beiden Dateien oben angelegt wurden, reboote ich das System.

3.) Nach dem Neustart schaue ich nach ob der richtige Framebuffertreiber geladen wurde. Dazu öffnet ich ein Terminal und gebe ein:

lsmod

Dieser Befehl zeigt alle geladenen Module im Betriebssystemkernel an. Es kommt zu folgender Ausgabe:

   

Wir sehen das SPI aktiv ist und der fb_st7735r für das Adafruit1.8 (und baugleiche) geladen wurde.
Zusätzlich geben wir in der Konsole den Befehl dmesg ein. Damit bekommen wir den Nachrichtenpuffer des Kernels angezeigt. Wir scrollen darin und suchen 
die Ausgaben zu SPI und dem Framebuffer. In meinem Beispiel erhalte ich mitten im ausgegeben Text:

...
[    2.529825] fbtft: module is from the staging directory, the quality is unknown, you have been warned.
[    2.544881] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.
[    2.546036] spi spi0.0: spidev spi0.0 125000kHz 8 bits mode=0x00
[    2.546049] spi spi0.1: spidev spi0.1 125000kHz 8 bits mode=0x00
[    2.546089] bcm2708_fb soc:fb: soc:fb id=-1 pdata? no
[    2.546125] spi spi0.0: Deleting spi0.0
[    2.546542] fbtft_device: GPIOS used by 'adafruit18':
[    2.546548] fbtft_device: 'reset' = GPIO25
[    2.546554] fbtft_device: 'dc' = GPIO24
[    2.546559] fbtft_device: 'led' = GPIO18
[    2.546570] spi spi0.1: spidev spi0.1 125000kHz 8 bits mode=0x00
[    2.546581] spi spi0.0: fb_st7735r spi0.0 32000kHz 8 bits mode=0x00
[    2.578991] i2c /dev entries driver
...

Sieht doch erstmal ganz gut aus.

Auch die Eingabe von: ls -l /deb/fb* liefert uns zwei Framebuffer.

crw-rw---- 1 root video 29, 0 Feb 14 13:16 /dev/fb0
crw-rw---- 1 root video 29, 1 Feb 14 14:13 /dev/fb1
pi@raspberrypi:/$ 

Nun wollen wir, das das grafische System von Linux direkt in den Framebuffer geschrieben wird um damit auf unseren Kleinstdisplay zu erscheinen. Wir benötigen noch einen Eintrag in einer weiteren Datei.

4.) Zuletzt öffnen wird die Datei /usr/share/X11/xorg.conf.d/99-fbturbo.conf

Diese ändern wird ab, sodaß das sie wie folgt aussieht:

# This is a minimal sample config file, which can be copied to

# /etc/X11/xorg.conf in order to make the Xorg server pick up
# and load xf86-video-fbturbo driver installed in the system.
#
# When troubleshooting, check /var/log/Xorg.0.log for the debugging
# output and error messages.
#
# Run "man fbturbo" to get additional information about the extra
# configuration options for tuning the driver.

Section "Device"
        Identifier      "Allwinner A10/A13 FBDEV"
        Driver          "fbdev"
        Option          "fbdev" "/dev/fb1"

        Option          "SwapbuffersWait" "true"
EndSection


Wichtig ist, das der Driver fbdev ist und wir /dev/fb1 als unser "Ausgabefenster" wählen. 
Nachdem die Datei gespeichert wurde und wir nochmals einen Neustart durchführen, läuft unsere Desktopumgebung anstelle auf dem HDMI-Monitor auf unserem Kleinstdisplay.

   

Hmmm, macht irgendwie wenig Sinn an diesem Desktop zu arbeiten oder? Aber wir können anstelle von LXDE auch jede andere "X11"-Anwendung auf dem Display erscheinen lassen. So zum Beispiel durch startx /usr/bin/xeyes auch die "Spassanwendung" des X11-Paketes. Zwei Augen die dem Mauszeiger folgen.

   

Wenn jetzt jemand eine Skalensimulation hat, deren fotorealistische Abbildung 128x160 Pixel groß ist (ist soetwas überhaupt möglich?), dann kann 
er diese ebenso wie xeyes auf dem Display anzeigen lassen. Das gleiche gilt für eine der Displaygröße angepassenten FLTK-GUI, die ich weiter vorne in diesem Thread gezeigt habe.

Soweit so gut! Ich denke ich konnte die Mailfrage damit ausreichend beantworten. Ich habe die Antwort absichtlich hier ins iRadio und nicht in FAQ zum iRadio
geschrieben, da der Framebuffer ein wichtiges Instrument für Benutzeroberflächen ist, die den grafischen "Aufsatz" von Linux benötigen.

Viele Grüße 
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo zusammen, 

da Nutzer jetzt dazu übergehen eigene Skalen zu erzeugen, hier ein Funktionsupdate des iRadios.

Download: https://mega.nz/#!Xe4xSYKQ!lUfl8htDoDzBJ...Hh0t_nnlMc


17.02.2019: Es wurde ein Dienst hinzugefügt, der beim Update der Senderliste (playlist.m3u) über /boot oder einem USB-Stick, eine zeilensynchrone Liste mit Stationsnamen erzeugt. 

Das das Erzeugen dieser Liste (die in /home/pi/.config/vlc/ liegt) einige Zeit in Anspruch nimmt, 6 Sekunden pro URL in der Senderliste, und diese Liste nur von bestimmten Skalensimulationen bzw. Displaydaemonen benutzt werden muss, ist die Funktion standardmäßig deaktiviert. 

Um die erweiterte Updatefunktion der Senderliste zu aktivieren geht man wie folgt vor.

Nach der Installation oder dem Update des iRadios öffnet man die Datei /usr/bin/vlcd mit Adminrechten.

Danach kommentiert man die nachfolgend in Zeile 13 und 28 gezeigte Codezeile aus und speichert die Änderung ab.

   

Beim nächsten Neustart wird dann beim Einspielen einer Senderliste über /boot bzw. USB-Stick (FAT32 formatiert) automatisch die Liste mit Stationsnamen erzeugt.


Gruß Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
Hallo zusammen, 

heute möchte ich eine neue Version des iRadio freigeben. Es ist ein Funktionsupdate für den Raspberry Zero W, den Raspberry 3 Mod. A+, 3 Mod. B
und 3 Mod. B+. Also die aktuellsten Modelle, ältere Raspberrys profitieren von diesem iRadio nicht. 

Es geht darum, daß die neusten Modelle des Pi einen WLAN-Chip besitzen, der auch eine Bluetooth-Funktionalität bietet.
Genau für diese Bluetooth-Funktionalität habe ich einen Systemdaemonen integriert, der es erlaubt das Internetradio als Bluetoothlautsprecher zu nutzen.
Als Basis dient der Protokollstack BlueZ. https://de.wikipedia.org/wiki/BlueZ

Hier der Dowload des neuen iRadio: 

https://mega.nz/#!jCgSgaAJ!CY7zoRBA2mBtK...ALtiAnBZIM

19.02.2019:  - Bluetooth (Audioempfängerfunktion) hinzugefügt.

Das iRadio kann ganz normal installiert und als solches genutzt werden. Will man auf den neuen Raspberrys zusätzlich Bluetooth aktivieren, wechselt man in das Verzeichnis "bt-speaker" welches in iRadio liegt. Mit Rootrechten startet man die Installation des Bluetoothdaemonen durch Aufruf des Skriptes install.sh

Die Installation läuft vollautomatisch ab, ggf. werden fehlende Pakete nachinstalliert, weshalb während der Installation eine Internetverbindung erforderlich ist.
Nachdem der Installer durch ist, erhält man die Meldung das der Systemdaemon installiert wurde.

Das kann ungefähr so aussehen:

   

Nach einem Neustart, verhält sich das iRadio wie gehabt. Der Internetradiodienst wird automatisch gestartet und abgespielt. Zusätzlich wird auf der Bluetooth-Schnittstelle nach eingehenden Verbindungen gewartet. 

In Bluetooth-fähigen Endgeräten erscheint das Internetradio mit seinem aktuell eingestellten Hostnamen, in diesem Fall einfach "raspberrypi", was der Defaulthostname von Raspbian ist.

   

Koppelt man ein Endgerät, so wird der Internetradiodienst ausgeblendet und man kann das iRadio als ganz normalen Funklautsprecher benutzen. Wird die Verbindung "entkoppelt", so wird automatisch wieder auf Internetradioempfang umgeschaltet und die Wiedergabe gestartet.

Mit diesem iRadio-Release hat man also eine elegante Lösung und kann auf zusätzliche Bluetooth-Audioreceiver-Module wie hier gezeigt: https://radio-bastler.de/forum/showthrea...ooth+modul verzichten.

Viel Spaß mit dem iRadio
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  iRadio SDR-Zuspieler für alte Radios Bernhard45 0 165 18.11.2019, 17:38
Letzter Beitrag: Bernhard45
  Ein Internetradio Bausatz von PIMORONI Bernhard45 191 15.657 02.09.2019, 11:19
Letzter Beitrag: Bernhard45
Brick noch ein Internetradio norbert_w 21 1.817 12.03.2019, 21:00
Letzter Beitrag: norbert_w
  DAB+, FM, AM, Internetradio ... eine Bauanleitung Bernhard45 6 1.058 09.03.2019, 19:58
Letzter Beitrag: vision-eyes
  Metz Baby Internetradio saarfranzose 37 2.749 07.03.2019, 23:31
Letzter Beitrag: Bernhard45

Gehe zu: