Forum: Mikrocontroller und Digitale Elektronik Vistron VDR400 DAB Bausatz - Reverse Engineering


von Thomas S. (gdrguy69)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich möchte meine Arbeit am Reverse-Engineering des Vistron VDR400 
DAB-Bausatzes vorstellen und zur Mitarbeit anregen.
Leider wird der Bausatz (https://vistron.eu/de/dabradio-bausaetze) ohne 
weitere Dokumentation zur HW und SW angeboten. Lediglich die Binär-SW 
ist auf der Herstellerseite vefügbar.
Mich hat insbesondere die SW-Implementierung interessiert und daraus ist 
folgendes Github-Projekt entstanden: 
https://github.com/Spitzbube/vistron_vdr_400.
Aber darüberhinaus verfügt der Bausatz auch über in der Original-SW noch 
nicht ausgeschöpfte HW-Komponenten, bei deren Analyse ich Hilfe 
gebrauchen könnte:
- USB Port (speziell die VBus-Detection)
- der serielle Port (RS232 an J4)
- der IR-Empänger
- digitale Audio-Signale (I2S?)
- einfacheres Display-Interface und Nutzung der freiwerdenden 
GPIOs/Ports.

Schon mal im Voraus vielen Dank für Eure Ideen,
Thomas

von Lotta  . (mercedes)


Lesenswert?

Geiles Teil!
Dann noch programmiert unter Windows, GNU mingw,
zumindest der flasher.

Mich hat mal auf die Schnelle die beiden Updates interessiert.
Beide haben gleiche Dateilängen! Ob beim Update nur
Konstanten verändert wurden? Oder bei beiden sich um eins
handelt, also ne Kopie vorliegt? Zumal ja auch die Daten der
Dateien identisch sind?
Ich werd heut Abend mal ein Diff machen, interessant ist's schon.

Wozu brauchst Du extra Gpio's?
Ich würd die Grafik so lassen, wie sie ist.

Mit welchem Disassembler hast Du deine Asm - Dateien erstellt?

mfg

von Dieter (Gast)


Lesenswert?

Welcher DAB Chip ist es denn, wenn ich das auf dem Bild richtig erkenne 
ein Si4684?

Für die DAB Chips von Skyworks gibt es ja diverse Projekte, damit sollte 
sich mit überschaubaren Aufwand eine eigene Lösung entwickeln lassen.

von Thomas S. (gdrguy69)


Lesenswert?

Lotta  . schrieb:
> Wozu brauchst Du extra Gpio's?
> Ich würd die Grafik so lassen, wie sie ist.

Ich möchte gern ein SPI-Display zum Laufen bekommen, um einen 
Performance-Vergleich zu dem 16-Bit Display zu bekommen. Frei werdende 
GPIOs lassen sich immer gut nutzen für weitere Tasten...

> Mit welchem Disassembler hast Du deine Asm - Dateien erstellt?

Mit diesem hier: https://www.hopperapp.com/.
Ich weiss, es gibt bekanntere Tools :) Aber ich mache die Konvertierung 
ASM -> C sowieso per Hand. Deshalb brauchte ich bisher nur Unterstützung 
zur Erzeugung von ASM aus den Bin-Files.

von Thomas S. (gdrguy69)


Lesenswert?

Dieter schrieb:
> Welcher DAB Chip ist es denn, wenn ich das auf dem Bild richtig erkenne
> ein Si4684?

Ja, der ist es. Und um es gleich vorweg zu nehmen: Die FW befindet sich 
in einem SPI-Flash, angeschlossen am SI4684. Daher brauchte ich mich 
nicht auch noch darum zu kümmern :) Die STM32 SW muss nur das Host-Load 
anstossen.

> Für die DAB Chips von Skyworks gibt es ja diverse Projekte, damit sollte
> sich mit überschaubaren Aufwand eine eigene Lösung entwickeln lassen.

Ja, habe ich mir in den vergangenen Monaten angeschaut. Hat mir auch 
sehr bei dem Verständnis der STM32-Funktionen zur Steuerung des SI4684 
geholfen.

Im Moment prüfe ich folgenden Möglichkeiten:
- FreeRTOS als Ersatz für die Main-Loop der Original-FW
- Zephyr-Unterstützung (vgl. 
https://docs.zephyrproject.org/latest/boards/arm/nucleo_f103rb/doc/index.html) 
für das VDR400 Board
- Yocto Build von FreeRTOS/Zephyr mit Layer/Recipe für den SI4684

von Dieter (Gast)


Lesenswert?

Thomas S. schrieb:
>
> Ja, der ist es. Und um es gleich vorweg zu nehmen: Die FW befindet sich
> in einem SPI-Flash, angeschlossen am SI4684. Daher brauchte ich mich
> nicht auch noch darum zu kümmern :)

Das ist doch eigenlich der interessante Teil ;-) Ich werde mal sehen 
dass ich an die Firmware im SPI-Flash komme.

Was anderes: Weisst Du wo man eine zur Platine passende Koax 
Antennenbuchse bekommt? Ich hätte erwartet dass eine dabei ist, aber die 
gehen wohl davon aus dass man nur eine Wurfantenne anlötet.

von Thomas S. (gdrguy69)


Lesenswert?

Dieter schrieb:
> Das ist doch eigenlich der interessante Teil ;-) Ich werde mal sehen
> dass ich an die Firmware im SPI-Flash komme.

Die habe ich schon ausgelesen und die enstprechenden Bin-Files 
gesichert.
Übrigens enthält der Flash überraschenderweise nicht nur die Si46xx 
DAB/FM-Firmware.
Ein Teil davon ist auch die FW für einen DVB-C/S Receiver Chip 
(MB86H61), der von der Fa. Lasat entwickelt wurde, z.B. Vistron VT855. 
Hat rein garnichts mit dem VDR400 zu tun :) Aber ist schon interessant, 
wie so was verbreitet wird.

> Was anderes: Weisst Du wo man eine zur Platine passende Koax
> Antennenbuchse bekommt? Ich hätte erwartet dass eine dabei ist, aber die
> gehen wohl davon aus dass man nur eine Wurfantenne anlötet.

Bei mir war die Antennenbuchse dabei.

von Dieter (Gast)


Lesenswert?

Als Hinweis vielleicht interessant: Wenn man aktuell bei LaSAT (der 
Technikfreaks Shop) bestellt bekommt man das Board mit Rev 1.4. Anstelle 
des STM32F103 ist ein GD32F103 verbaut. Bei Pollin gibt es wohl auch 
einen Komplettbausatz.

von Lotta  . (mercedes)


Lesenswert?

Hallo!

Normalerweise lasse ich niemals Spitzbuben hängen aber leider hat mich
Madame Corona hart in Griff. :-O :-((

Jetzt, da ich wenigstens wieder eingeschränkt  aufstehen darf,
war natürich mein erster Blick in ein kleines, unscheinbares Forum
namens Mikrokontroller.net! (das mit "meinem" edi) ;-)

Ich habe von den Beiden Versionen der Firmware mal durch mein Proggy
"bayond compare" gejagt. Absolut interessant!
Die haben wirklich ihr ganzes Interruptsystem von umgestellt,
vorn in der Interrupttabelle und auch viele der dann angesprungenen
Routinen!
Auch wurden im großen Umfang Konstanten verändert, ohne die 
Programmgröße
zu verändern, was das Auseinanderheddern im Assemblercode erleichtern
könnte.

Leider kann "Bayond compare" die Bildschirmübersicht nicht exportieren
so daß ich hier nichts vorführen kann. :-((

Wenn Du also wirklich ne Übersicht im Radio finden willst,
solltest Du die Datenblätter aller programmierbaren Chips des Boards
beschaffen, das wir an deren Port-Adressen kommen.

Und ein Simulant muß her, die beste Simulant der Szene, nämlich
die IAR Workbench für Arm.


mfg

von Thomas S. (gdrguy69)


Lesenswert?

Ich habe mich die vergangenen Tage etwas mit einem "Parallel-Projekt" 
beschäftigt: https://github.com/Spitzbube/stm32f429i-disc1-ugreen-dab.

Das UGreen DAB Board war von den Entwicklern ursprünglich für den 
Anschluss an Raspberries gedacht. Aber es ist natürlich auch sehr leicht 
an STM32'er adaptierbar. Das einzige Problem ist, dass mein Board noch 
keinen SPI Flash für die Si4684-FW hat. Deshalb musste ich mir ein 
STM32-Board suchen, was mind. 1,5 MB Flash hat (2 x ~500KB für DAB und 
FM, der Rest für die STM32 FW). Zufälligerweise hatte ich gerade ein 
stm32f429i-disc1 hier rumliegen :)

Das stm32f429i-disc1 verwendet zwar auch ein ILI9341-Display, allerdings 
im RGB Mode. Deshalb musste ich mich erstmal in die LTDC-Programmierung 
einarbeiten. Interessanterweise bin ich bei der Suche nach dem 
STM-Framework für die ILI9341-Ansteuerung nun endlich auch auf die 
offensichtlich beim VDR400 verwendeten Sourcen gestossen. Das hilft mir 
wiederrum nun sehr bei dem Verständnis der Original-FW.

Grüße,
Thomas

von Dieter (Gast)


Lesenswert?

Die Firmware-Dateien "output_img.bin" aus den ZIP Dateien 
"Vistron_VDR400_DAB-BS_3V3-4-4-0.zip" bzw. 
"Vistron_VDR400_DAB-BS_3V3-3-4-0.zip" sind alte Versionen (3.4.4.0 und 
3.3).

Die Dateien "output_img.bin" sind ausserdem nur für den "alten 
Bootloader" (wo immer auch der verwendet wurde). Die Dateien 
"DAB_Radio_4_0.bin" sind die Version 4.0 und in beiden ZIP Dateien 
identisch, "DAB_Radio_4_0.bin" wird beim "neuen Bootloader" verwendet.

Abgesehen davon: das aktuelle Board von LaSAT (der Technikfreaks Shop) 
enthält die Version 4.2, ausserdem funktioniert die Update Software 
(hid-flash.exe) aus den ZIP Dateien nicht mehr (es wird eine andere USB 
VID/PID verwendet). Eine Update Tool bzw. Updates für das aktuelle Board 
habe ich noch nicht gefunden.

von Thomas S. (gdrguy69)


Lesenswert?

Ich hatte sofort den SWD-Anschluss des Boards in Bertrieb genommen, um 
SW draufladen oder Debuggen zu können. Dabei habe ich bemerkt, dass die 
Option-Bytes des STM gesetzt sind, die ein Auslesen des Flashs (sowohl 
des Bootloaders als auch der V4.2) verhindern. Die Option-Bytes konnte 
ich zurücksetzen, aber das führte zum kompletten Löschen des Flashs.
Damit gibt es prinzipiell keine Möglichkeit, an die V4.2 zu kommen. Und 
offensichtlich bietet der Bootloader auch keinen Weg, eigene SW 
draufzuladen.

Die SWD-Schnittstelle ist somit der einzige Zugang zum Board.

von Felix Neumüller (Gast)


Lesenswert?

Thomas S. schrieb:
> Ja, der ist es. Und um es gleich vorweg zu nehmen: Die FW befindet sich
> in einem SPI-Flash, angeschlossen am SI4684. Daher brauchte ich mich
> nicht auch noch darum zu kümmern :) Die STM32 SW muss nur das Host-Load
> anstossen.

Hilft dir das wirklich weiter?
Das die FW in einem SPI Flash ist, ist das gleiche wie bei den Frontier 
Modulen wie z.B. dem Verona 2.
Die Firmware ist immer Kundenspezifisch, da gibt es zig verschiedene 
Versionen.
Selbst bei der Schnittstelle ist alles möglich, von ganz einfach mit 
Tasten per Spannungsteiler auf die ADCs und Display per I2C Bus, oder 
einfach nur per UART. Module mit dem Kino 4 Pro Chip können auch Grafik 
Displays ansteuern.

Bei den Skyworks Chips gibt es zum Glück eine Dokumentation.

Das ist genau das was ich bei den Frontier Modulen nicht gefunden habe.
Vorteil der Module, man kann so ein DAB+ Radio auch auf Lochraster 
aufbauen.

von Dieter (Gast)


Lesenswert?

Thomas S. schrieb:
> Die Option-Bytes konnte ich zurücksetzen, aber das führte zum kompletten Löschen 
des Flashs.

So ist es dokumentiert, dabei wird ein Mass-Erase ausgelöst.

> Damit gibt es prinzipiell keine Möglichkeit, an die V4.2 zu kommen.

Nicht zwingend. Ältere GD32F103 haben eine Lücke bei der Readout 
Protection (siehe das Paper von Johannes Obermaier). Allerdings klappt 
das bei mir nicht, entweder weil ich noch etwas falsch mache oder der 
verbaute Chip die Fehler behoben hat. Leider finde ich keine Errata zum 
GD32F103 mit denen man das prüfen könnte.

von Pelikan 003 (Gast)


Lesenswert?

Thomas S. schrieb:
> Ich möchte meine Arbeit am Reverse-Engineering des Vistron VDR400
> DAB-Bausatzes vorstellen und zur Mitarbeit anregen.

Der Bausatz ist sicher interessant, aber es gibt schon gewisse Dinge die 
schon vorgegeben sind.
Eine Alternative wäre auf der Seite zu finden.

 https://www.dabshield.com/

 https://www.dabshield.com/circuit

Wenn es ein fertiges Modul geben würde, wo der SI4684 drauf ist wäre 
noch besser.
So wie es aussieht sind nur wenige Leitungen zum Host erforderlich.
 SPI Bis + Reset.

von Pelikan 003 (Gast)


Lesenswert?

Das hier wäre auch noch interessant.

https://ugreen.eu/product/ugreen-dab-board/

von Thomas S. (gdrguy69)


Angehängte Dateien:

Lesenswert?

Thomas S. schrieb:
> Aber darüberhinaus verfügt der Bausatz auch über in der Original-SW noch
> nicht ausgeschöpfte HW-Komponenten, bei deren Analyse ich Hilfe
> gebrauchen könnte:
> - USB Port (speziell die VBus-Detection)
> - der IR-Empfänger

Ich habe nun für diese beiden HW-Komponenten die entsprechenden GPIOs 
herausgefunden.

PA10: USB VBus
PD3: IR Rx

Für den IR-Empfänger bin ich dabei, eine meiner beiden Fernbedienungen 
aus der Bastelkiste mit dem NEC-Protokoll zum Laufen zu bekommen.

Oder wäre es sinnvoller, die Implementierung an die Vistron-FB für den 
Youtune1 (RC5-Protokoll) 
(https://www.technikfreaks.shop/vistron-fernbedieung-vt855-vdr100-rc0896-v68b_1)?

Die Original-FW hat jedenfalls keine Anzeichen für ein FB-Protokoll.

Grüße,
Thomas

von Max Linner (Gast)


Lesenswert?

Thomas S. schrieb:
> Leider wird der Bausatz (https://vistron.eu/de/dabradio-bausaetze) ohne
> weitere Dokumentation zur HW und SW angeboten. Lediglich die Binär-SW
> ist auf der Herstellerseite vefügbar.

Den Bausatz habe ich bei Pollin gesehen.
Mal echt jetzt für 78 Euro bekomme ich ein Teil das schon sehr 
eingeschränkt ist. Der Preis kommt auch dadurch zustande, dass im 
Bausatz Teile drin sind die ich nicht brauche. Lautsprecher, Netzteil. 
Mir wäre ein Teil lieber das auch keinen NF Verstärker hat, also nur ein 
Empfangsteil Tuner.
Verstärker habe ich.

Wenn man das Board nimmt:
Link von weiter oben,

https://ugreen.eu/product/ugreen-dab-board/
oder
 https://www.dabshield.com/circuit

dann hat man doch mehr Möglichkeiten.

Ist jetzt nur mal meine Meinung dazu, warum ein Reverse Engineering 
betreiben und keine Entwicklung auf Basis der Teile wie in den Links 
beschrieben.

von Cyblord -. (cyblord)


Lesenswert?

Max Linner schrieb:
> Ist jetzt nur mal meine Meinung dazu, warum ein Reverse Engineering
> betreiben und keine Entwicklung auf Basis der Teile wie in den Links
> beschrieben.

Ja dann mach doch einfach.

von Dieter (Gast)


Lesenswert?

Thomas S. schrieb:
>
> Ich habe nun für diese beiden HW-Komponenten die entsprechenden GPIOs
> herausgefunden.
>
> PA10: USB VBus
> PD3: IR Rx

Hast Du die beiden schon für den Verstärker?
1
PC3     PAM8019 - mute 
2
PA1     PAM8019 - shutdown

von Thomas S. (gdrguy69)


Lesenswert?

Dieter schrieb:
> Hast Du die beiden schon für den Verstärker?
>
1
> PC3     PAM8019 - mute
2
> PA1     PAM8019 - shutdown
3
>

Hatte ich noch nicht, Danke!

von Thomas S. (gdrguy69)


Lesenswert?

Max Linner schrieb:
> Den Bausatz habe ich bei Pollin gesehen.
> Mal echt jetzt für 78 Euro bekomme ich ein Teil das schon sehr
> eingeschränkt ist. Der Preis kommt auch dadurch zustande, dass im
> Bausatz Teile drin sind die ich nicht brauche. Lautsprecher, Netzteil.
Es gibt auch das Base-Board auch einzeln:
https://www.technikfreaks.shop/DAB-Empfaenger-Mainboard

> https://ugreen.eu/product/ugreen-dab-board/
Versuche ich gerade mit einem STM32F429 zum Laufen zu bekommen.

> oder
>  https://www.dabshield.com/circuit
Hatte ich schon gesucht, ist aber z.B. hier 
https://www.ebay.de/itm/302516551661 auch nicht gerade günstig.

> Ist jetzt nur mal meine Meinung dazu, warum ein Reverse Engineering
> betreiben und keine Entwicklung auf Basis der Teile wie in den Links
> beschrieben.
Für die beiden genannten Boards gibts ja schon ne Menge Entwicklung in 
der Community, aber eben für das VDR400 nicht.

Thomas

von Andreas M. (amesser)


Lesenswert?

Felix Neumüller schrieb:
> Hilft dir das wirklich weiter?
> Das die FW in einem SPI Flash ist, ist das gleiche wie bei den Frontier
> Modulen wie z.B. dem Verona 2.
> Die Firmware ist immer Kundenspezifisch, da gibt es zig verschiedene
> Versionen

Nein sind sie nicht. Es gibt separate Firmware für DAB, FM, (MW), die 
sind sogar identisch für alle Chips aus der Baurreihe. Die werden über 
Kommandos gesteuert. Der Si468x verfügt gar nicht über genug Peripherie 
bzw I/O Pins um irgendwas Kundenspezifisches anzusteuern wie ein 
Frontier Modul. Das ist ein reiner Receiver Chip.

Wenn jemand Doku für die Firmware (oder die Firmware) braucht, einfach 
per PM melden. Ansonsten, einen DAB Shield für Arduino & Co. mit Si468x 
hätte ich hier noch rumkullern, wenn jemand Bedarf hat: 
https://gitlab.com/amesser-group/electronic-devices/radio-shield

Man könnte mal schauen welche Firmwareversionen im Vistron für den 
Si468x enthalten sind, Evtl sind die Neuer als meine.

von Dieter (Gast)


Lesenswert?

Andreas M. schrieb:
>
> Man könnte mal schauen welche Firmwareversionen im Vistron für den
> Si468x enthalten sind, Evtl sind die Neuer als meine.

In der aktuellen Hardware von LaSAT (der Technikfreaks Shop):

DAB Firmware: 6.0.6
FM Firmware:  5.1.2

Die Abfrage erfolgt mit GET_FUNC_INFO vom Si4684.

von Dieter (Gast)


Lesenswert?

Andreas M. schrieb:
>
> Wenn jemand Doku für die Firmware (oder die Firmware) braucht, einfach
> per PM melden.

Z.B. hier findet man auch eine (Rev. 1.8):

Beitrag "Re: DABPi - FM/DAB Empfänger mit Si4688 für Raspberry Pi"

von Thomas S. (gdrguy69)


Lesenswert?

> Thomas S. schrieb:
> Oder wäre es sinnvoller, die Implementierung an die Vistron-FB für den
> Youtune1 (RC5-Protokoll)
> 
(https://www.technikfreaks.shop/vistron-fernbedieung-vt855-vdr100-rc0896-v68b_1)?

Nach zahlreichen Hinweisen habe ich mich für die Unterstützung dieser 
Fernbedienung entschieden. Mit dem Commit: 
https://github.com/Spitzbube/vistron_vdr_400/commit/e11f2963326c93e3d87ab2568d275f3e2815a70f 
funktioniert als POC zumindest die Bedienung des Main-Screens.

Thomas

von Andreas M. (amesser)


Lesenswert?

Ok, dann gab es bei DAB zwischenzeitlich wohl ein Update. Ich habe hier:

DAB 6.0.5
FMHD 5.3.3
AMHD 3.0.6

Ich werde mir das dann bei Gelegenheit mal raus extrahieren.

von Dieter (Gast)


Lesenswert?

Ein fertiges DAB Radio mit sehr ähnlicher Hardware (Si4684 und 
GD32F130C8T6) ist der "Roadstar TR-130+" bzw. baugleich "RED OPTICUM Ton 
3", siehe hier:

https://www.radio-bastler.de/forum/showthread.php?tid=15160&pid=183961

Der GD32 ist nicht gelockt, man kann die Firmware also extrahieren (es 
gibt einen unbestücken Header für SWD). Der verbaute GD32 hat allerdings 
deutlich weniger Speicher (64 kByte Flash 8 kByte SRAM) als der 
STM32/GD32 des VDR400. Für das einfache Display reicht es aber (ca. 16 
KByte Flash sind unbelegt).

von Dieter (Gast)


Lesenswert?

Als Nachtrag zu den beiden oben erwähnten Geräten "Roadstar TR-130+" 
bzw. baugleich "RED OPTICUM Ton 3": Die Geräte haben zwar nur einen 
Mono-Ausgang aber die I2S Pins des Si4684 sind am Modul mit dem Si4684 
und GD32F130C8T6 herausgeführt. Und zumindest beim "RED OPTICUM Ton 3" 
schaltet die Firmware I2S auch ein (16-Bit, 48 kHz). Man kann dort also 
ohne viel Aufwand das I2S Signal zur weiteren Verwendung abgreifen.

Bei dem Vistron VDR400 DAB Bausatz ist nach meinem Kenntnisstand I2S 
nicht herausgeführt und müßte direkt am Si4684 abgegriffen werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.