TechniSat DigitRadio 580

Unser als Küchenradio genutzes Noxon iRadio ist leider nicht geeignet, um in unserer UPnP-Künstlerliste zu navigieren. Es hat offenbar einen Fehler der dazu führt, daß man beim Navigieren nach 2-3 Bildschirmseiten (mit jeweils 5 Einträgen) wieder ins Hauptmenü zurückgeworfen wird, wenn man einen Ordner öffnen will. Bei einer Musiksammlung mit ~140 Künstlern nicht brauchbar.

Weiterhin ist es auch für Podcasts nicht brauchbar.

Zeit für ein neues Gerät.

Anforderungen

Auswahl

Beim Kauf eines Satellitenreceivers für die Verwandtschaft hatte ich gesehen, daß Technisat auch Internetradios im Angebot hat. Ich hab mich dann durch deren Website geklickt und die Radios rausgesucht, die Ethernet, UPnP und DAB konnten.

Viel blieben nicht übrig, und dann bin ich ins lokale Conrad um die auszuprobieren. Beim DigitRadio 600 gibt es keinen Zurück-Knopf, der beim Navigieren im UPnP-Verzeichnisbaum immens wichtig ist. Er existiert nur auf der Ferbedienung.

Das DigitRadio 580 gabs im Conrad nicht, aber ich konnte es mir zur Ansicht in die Filiale liefern lassen und 2 Tage später ausprobieren.

Es passte alles, und ich habs für 270€ gekauft.

Schräge Ansicht Frontalansicht

App

Zum Radio gibt es die App Technisat CONNECT, mit der man das Radio anschalten und komplett bedienen kann. Leider ist sie 40 MiB groß, was für ein Radiosteuerprogramm viel zu viel ist.

Um eine eigene App zu bauen oder das Radio in die Heimnetzsteuerung einzubinden braucht es aber Kenntnisse der Schnittstelle. Der Technisat-Support meinte nur lapidar:

Bitte haben Sie Verständnis dafür, dass wir Ihnen die Schnittstellendokumentation nicht zur Verfügung stellen können.

Das Verständnis fehlt mir hier völlig, aber ich gehe auch nicht davon aus, daß ich irgendeine Unterstützung seitens der Hersteller bekomme. Das ist ziemlich bedrückend.

Analyse

Portscan

Mir war unbekannt, wie die App mit dem Radio spricht. Also erstmal nen Portscan:

$ nmap -p1-65535 digira
Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-13 21:40 CEST
Nmap scan report for digira (192.168.3.46)
Host is up (0.0043s latency).
rDNS record for 192.168.3.46: digira.home.cweiske.de
Not shown: 65530 closed ports
PORT      STATE SERVICE
80/tcp    open  http
514/tcp   open  shell
8080/tcp  open  http-proxy
10003/tcp open  documentum_s
55299/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 333.03 seconds

Auf Port 80 läuft das Webinterface, mit dem man dem Radio einen neuen Namen geben kann. Der Rest ist unklar, aber Port 10003 könnte ein Fernsteuerungsport sein. Eine Telnetverbindung dahin brachte Binärzeugs, was auf eine Verschlüsselung hindeutet :/

SSDP

Im vom UPnP verwendeten SSDP-Gerätfindeprotokoll meldet es sich neben den üblichen UPnP-Informationen so:

uuid:46C19E4A-472B-11E1-9F67-0022616E9730::urn:schemas-frontier-silicon-com:undok:fsaudsync:1

(via gssdp-discover)

Dekompilieren der App

Da ich die für die verschlüsselte Kommunikation nötigen Schlüssel und Algorithmen nicht erraten kann, beschloß ich in der App nachzusehen wie es gemacht wird.

Also die App per adb vom Handy ziehen:

$ adb root
$ adb shell crackling:/ # pm path com.technisat.multiplay.main
package:/mnt/expand/123457890/app/com.technisat.multiplay.main-1/base.apk
$ exit
$ adb pull /mnt/expand/123457890/app/com.technisat.multiplay.main-1/base.apk

Jetzt noch den Decompiler jadx-gui gestartet und ... rausgefunden, daß der Java-Code eigentlich nur nen dünner Wrapper ist, der die libMultiPlayAndroid.so (35 MiB) startet, eine binäre Bibliothek, die nicht so einfach zu dekompilieren ist :/

Wireshark

Der letzte Ausweg war jetzt der Netzwerksniffer Wireshark, mit dem ich die Netzwerkpakete zwischen App und Radio mitschneiden wollte. mitmproxy konnte ich nicht verwenden, weil der nur HTTP kann, ich aber diesen komischen 10003er Port belauschen muss.

Netzwerksetup

Das machte das Setup etwas schwierig, denn das Konfigurieren des Gateways im DHCP-Server reicht leider nicht aus - die Handy und Radio kommunizieren nach den ersten Paketen dann doch lieber direkt.

Mir fiel eine Alternative ein: Laptop zum Access Point machen, Handy mit diesem verbinden und schwupps, schon hab ich den Traffic. Der im NetworkManager-Applet eingebaute Hotspotmodus funktionierte leider nicht, da dieser einen neuen IP-Bereich aufmachte, der nicht mit dem echten Heimnetzwerk sprechen wollte.

Die Lösung war dann create_ap, dem man direkt sagen kann, daß das W-LAN ins normale Netzwerk gebrückt werden soll:

$ create_ap -m bridge wlan0 eth0 myssid mypassword

Jetzt bekam ich den kompletten Handydatenverkehr mit!

Überraschung!

Nach dem Starten der App werden erstmal UDP-Pakete an eine Multicastadresse geschickt, genauso wie SSDP-Suchpakete. Das Radio meldet sich dann direkt beim Handy, die App zeigt das Gerät dann an.

Und nun die Überraschung: Die App redete nicht wie vermutet über Port 10003, sondern über HTTP auf Port 80. Anstatt des Webinterfaces sprach es aber einen anderen Pfad an, nämlich /fsapi/.

Der mitmproxy hätte also doch geholfen, und ich hätte mir den ganzen Aufwand sparen können :/

API

Nachdem ich um die 30 verschiedene API-Aufrufe mitgeschnitten hatte suchte ich im Netz nach dem offensichtlichsten, dem An- und Ausschalten:

GET /fsapi/GET/netRemote.sys.power?pin=1234

... und es stellt sich raus, daß andere schon 2015 mit der API-Dokumentation angefangen haben:

Auch Implementierungen gibt es einige:

Dann gibt es noch Anbindungen an Heimautomatisierungssysteme:

Interessante URLs

/device
XML-Dokument. Liefert Name, Versionsnummer und URL zur API.
ip:8080/dd.xml
Liefert die UPnP-Gerätebeschreibung und verlinkt auch Bilder vom Radio selbst, die die App anzeigt.

Frontier Silicon

Die Firmwareversion meines DigitRadio 580 ist

ir-mmi-FS2026-0500-0286_V2.11.12.EX65933-1A22

FS ist "Frontier Silicon", heißt jetzt Frontier Smart und liefert Chips, in denen DAB, FM, Internetradio, UPnP, CD und Bluetooth integriert ist, sowie die passende Software dazu.

Das 2026 in der Versionsnummer steht für das VENICE 6.5 FS2026-5 Internet radio/Network streaming/DAB/FM/iPhone audio module , auch "Neptune" genannt.

Wie es aussieht, nutzen sehr viele Gerätehersteller Chips dieses Zulieferers um ihre Radios zu bauen. Also keine Eigenentwicklungen.

Einige Radios von Hama und viele von Medion haben inzwischen FrontierSilicon-Chips drin.

App

Frontier Smart bietet auch gleich eine App an, und zwar UNDOK . Die macht genau dasselbe wie die Technisat-App, ist aber 10 MiB groß - 30 MiB gespart.

Ports

Port 514

Scheint ein Debug-Port zu sein:

I tried telnet on port 514 and discovered what appears to be a debugging system log.

Das kann ich bestätigen.

Es gibt 2 änlich klingende API-Methoden, die die Ausgabe wahrscheinlich beeinflussen:

Update 2023-11: Ist wirklich so: Digitradio 580: <Empty> audio folders und Document debugging API endpoints #27.

Port 8080

Wird für UPnP-Informationen benutzt, wie die dd.xml.

Port 10003

Unbekannt. Der Technisat-Support meinte, der Port ist für die Multiroom-Funktionalität da.

Port 52299

Unbekannt. Das ist aber eine dynamische Portnummer, die sich ändern könnte.

Written by Christian Weiske.

Comments? Please send an e-mail.