DNT IPdio mini Internetradio | Sharpfin

Das DNT Internetradio meines Bruders funktionierte nach Abschaltung der Server, über welches die Radiosender usw. veröffentlicht wurden, nicht mehr. Lösung seitens Hersteller? Kauf dir ein neues! Äh... ja gut... danke für nichts.

Nach Zerlegen des Radios, um herauszufinden, ob es vielleicht möglich wäre, eigene Firmware zu installieren oder die bestehende bspw. via UART zu modifizieren und etwas Recherche stellte sich heraus, dass es für dieses Radio eine "Homebrew Firmware" gibt, genannt "Sharpfin".

Im Wiki von Sharpfin konnte die benötigte Firmware gefunden werden, nach vorigem Backup wurde schließlich Sharpfin installiert. Nach ein paar Modifikationen und anlegen einer eigenen Senderliste durch ätzendes Stream URL aus Streamseite herauspicken funktionierte letzlich das Radio wieder, wenn auch nicht mehr mit dem gewohnten Funktionsumfang / Bedienung.

Was zeigt uns dieser Vorfall mal wieder? Gesetze für Recht auf Reparatur sind dringend notwendig!

But wait, there is more!

Da anscheinend die Reciva Gatewayabfrage hardcoded in einer Binary ist, kam es beim Start immer zu "DNS Server ungültig" oder nach Blockieren von DNS Abfragen auf Reciva Domains zu "Port 80 Verbindungsfehler" Fehlermeldungen. Zwar konnte der Stream dann durch Kurzwahl gestartet werden, allerdings verhinderte das die Nutzung als Wecker, wofür das Radio primär genutzt wurde.

Hierfür fand ein User einen (in meinen Augen ziemlich hässlichen aber funktionierenden) Workaround via Shellscript. Dies prüft den Zustand des Radios anhand von laufenden Prozessen und CPU Last, auf Basis dessen "bedient" es das Radio dann via Shell und startet den Stream aus der Kurzwahl 1.

Auf Tipp eines anderen Users im Thread habe ich das Script noch so angepasst, dass die temporären Daten, welche für das Script notwendig sind, nicht auf den Flash sondern in den RAM gespeichert werden.

Dazu muss wie folgt vorgegangen werden:

  • LetsPlayP1.install in LetsPlayP1.install.bz2 umbenennen und entpacken
  • Die entpackte LetsPlayP1.install entpacken
  • Im Script start_listening_pos1.sh die Zeilen anpassen, wo in Dateien geschrieben wird bzw. diese gelesen werden
    • Zeile 23 von > top_report.txt zu neu > /tmp/top_report.txt
    • Zeile 28 von < top_report.txt zu neu < /tmp/top_report.txt
    • usw. (außer natürlich ab Zeile 58, wo nach /dev/null geschrieben wird)
  • LetsPlayP1.install wieder als "tar" packen
  • LetsPlayP1.install als "bz2" packen (Dateiname muss so bleiben)
  • Die Datei auf dem Webserver der Wahl hochladen
  • auf Webinterface vom Radio "Addon installiern" auswählen, Patch angeben und Patchvorgang starten

To be continued...

Leider funktionierte trotz des Scripts der Alarm nicht zuverlässig. Damit ist das Radio zum Hardwarebasteln freigegeben - ESP32 und I2S Modul sind bereits bestellt... ;)

- Dom