Wer kann ein DS218 Flash-Image (8M) bereitstellen um ein defekte DS218 zu retten ?

TN-Notebooks

Benutzer
Mitglied seit
30. Mai 2019
Beiträge
229
Punkte für Reaktionen
186
Punkte
93
Hallo Benares

ja genau das ist es was ich mit
Bei den DS218+ ist das BIOS.Rom in der Pat Datei nicht 1 zu 1 verwendbar. In der Rom ist nicht nur das BIOS File sondern eine Software zur Installation mit eingepackt . Wie man so was extrahieren kann arbeite ich noch dran.
meinte.

Er hat es als ein Offset vor und hinter dem eigentlichen File bezeichnet.
Bei ihm war ein Vorteil das die BIOS Version am Gerät die selbe war wie das heruntergeladene bios.rom aus der PAT Datei . So konnte er das relativ gut vergleichen.
Problematisch wird es wenn die Bios Versionen unterschiedlich sind oder das File im Gerät völlig zerstört ist.
Das ganze wird noch schwieriger wenn es kein + Gerät ist .
Bei den + Geräten liegen viele Files auf dem USB Flash.
Bei den Geräten ohne Plus sind diese auch noch zusätzlich in diesem Chip mit drin und wie ich vermute auch noch im Altera.
Siehe auch mal meinen Beitrag hier im Forum dazu.
Und um dem ganzen noch die Krone aufzusetzen Beim Update auf DSM werden auch Daten in den Chips geändert .
 

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Bios:
Das mit dem Bios wäre eine Option, jedoch unterstützt die DS218 dies nicht.
Ein Bios-Update ist den höherwertigen Modellen z.B. der + Reihe vorbehalten.
Das erkennt man daran, dass nur bei diesen eine Datei namens bios.ROM
in der PAT-Datei enthalten ist. Hat die PAT-Datei keine solche Datei dann
würde ich davon ausgehen, dass das NAS kein Bios-Update unterstützt.

Bios-Update:
Manuell habe ich das auch noch nicht versucht, das geht wohl auch nicht so einfach bzw. direkt.
Ich werde es demnächst aber mal bei der DS216+II versuchen und dann ggf. berichten.
Ein manuelles Update ist aber eigentlich auch nicht nötig, da das NAS das Bios-Update
bei Bedarf automatisch machen kann und das normalerweise auch immer macht.
Fehler können hierbei möglicherweise passieren, wenn man beim DSM-Update viele Versionen überspringt.
Passiert ein Fehler und ein Bios-Update wird nicht gemacht, dann wird es später u.U. auch nicht mehr gemacht. Das kann sich dann auswirken weil das alte Bios z.B. nicht mit dem neusten DSM kompatibel ist.
Dann ist folgendes nötig:
Einfach Bios-Version auslesen mit
cat /sys/class/dmi/id/bios_version
und dann alle DSM-Versionen (PAT-Dateien) nach den bios.ROM Versionen hin überprüfen.
(Mit einem HEX-Editor kann man die Bios Version in der bios.ROM Datei auslesen)
Dann einfach das letzte DSM mit der vorhandenen Bios-Version installieren (diese Version sollte auch sicher mit diesem Bios laufen, neuere müssen das nicht - das war bei mir mal ein Fehler).
Und dann über die DSM-Oberfläche ein Update auf die nächste (also die erste DSM-Version mit dem neueren Bios) ausführen. Keinsfalls auf die neuste DSM-Version aktualsieren !

Bei mir das z.B. bei einer DS216+ so:
Bios war original die Version M.307, damit lief es aber nicht stabil.
Ich habe verschiedene aktuelle DSM-Versionen probiert. Immer das gleiche.
Dann habe ich die DSM5.2 installiert und er hat automatisch ein Bios-Update auf M.613 gemacht.
(Bei den früheren Installationen neuerer DSM-Versionen hat er kein BIOS-Update gemacht)
Die M.613 war auch die Version die ab der DSM5.2 bei jeder Pat-Datei enthalten war.
Seither läuft es stabil und fehlerfrei.

DS218 Flash:
Das Auslesen des Flash ist wie folgt möglich:
1. per Hardware über den eingebauten oder ausgelöteten Chip
2. über seriellen Port (ohne DSM)
3. mit laufendem DSM über SSH

Das Schreiben des Flash ist nur über 1. (Hardware) und 2. (seriellen Port) möglich.
Über SSH die Partitionen zu schreiben wird sehr wahrscheinlich nicht möglich sein,
habe das nicht probiert aber davon gehe ich mal aus. Nötig ist das aber auch nicht.

Ich habe bezüglich des Auslesens und Schreibens des Images inzwischen viele Versuche hinter mir.
Am Einfachsten ist es über den seriellen Port (sofern man die jeweiligen Befehle kennt, welche leider von NAS zu NAS unterschiedlich sein werden). Bei einer DS214 kann man die Partitionen z.B. als solche schreiben. Hier bei der DS218 schreibt man über Adressen. Da ich immer zuerst auslese und mir das anschaue und dann erst schreibe ist das aber normalerweise kein Problem.
Ob man eine "fertige" einzelne Image-Datei mit allen Partitionen als Quelle verwendet oder die einzelnen Partitionen spielt hierbei auch keine Rolle. Man könnte auch einzelne Partitionen schreiben, aber das wird auch mir dann zu kompliziert (Adressen ausrechnen ist mühsam).
Die einzelnen Dateien mtd0+mtd1+mtd2+mtd3+mtd4 entsprechen aneinanderkopiert exakt dem kompletten Image (sieht man auch wenn man die Dateigrößen addiert).
Also einfach alle 5 Partitionen zusammenkopiert und dann kann man das als Ganzes schreiben.
Das lief bei mir auf der DS218 mit einem Image einer DS418J sofort und völlig ohne irgendein Problem.
Das zeigt eigentlich dass der Weg schon funktioniert...

Leider klappt es eben nur nicht mit einem DS218 Image.
Auch das manuelle Starten mit Startdateien anderer NAS dieser Baureihe (z.B. DS218play, DS420j, DS418) klappte in jedem Fall nicht. Und das obwohl einige davon auch nur 1GB RAM haben. Das einzige was das DS418J von allen anderen NAS deren Startdateien oder Images ich versucht habe unterscheidet, ist die Anzahl der CPU-Kerne.
Einzig die DS418J hat nur 2 Kerne RTD1293 (2C/2T).
Alle anderen haben 4 Kerne RTD1296 (4C/4T).
Daher kann ich eigentlich nur davon ausgehem, dass der Kern 3/4 einen Defekt hat....
 
Zuletzt bearbeitet:

TN-Notebooks

Benutzer
Mitglied seit
30. Mai 2019
Beiträge
229
Punkte für Reaktionen
186
Punkte
93
Wir reden aneinander vorbei.
Du siehst nur die Softwareseite und es werden Begriffe durcheinander geworfen.
Back zu den Basics:
Die Plus Modelle haben 4 Chips eingebaut in denen Daten gespeichert werden.
1 - der PIC
2 - der Altera
3 - der BIOS Chip ( SOP8 )
4 - das USB Flash Modul

Die Geräte ohne Plus haben nur 3 Chips eingebaut in denen Daten gespeichert werden.
1 - der PIC
2 - der Altera
3 - der BIOS Chip ( SOP8 )

Das bedeutet die Daten die im USB Flash bei der Plus Version liegen werden hier auf den BIOS Chip und den Altera verteilt.

ich gehe jetzt mal nur auf den BIOS Chip ein.
Bei den Plus Modellen ein klassischer Chipinhalt wie auch bei Notebooks. Es ist ein Insyde BIOS. Wenn das BIOS einen Fehler hat startet die Synology auch nicht. So ein Datenfehler im BIOS kann zb auch durch ein abruptes Abschalten wie z.B. einen Stromausfall verursacht werden - Oder durch ein Fehlgeschlagenes Update.
Bei den Modellen ohne Plus ist dieser Chip kein reiner BIOS Chip sondern eine Kombi aus BIOS und USB Flash.
Beide Bereiche müssen fehlerfrei sein so das die Syno startet und diesen Chip kann man nicht über Konsole komplett wiederherstellen.
Hier muss man wirklich ein komplettes Chip Image aufspielen. Und ich würde dann als 2. Schritt danach noch mal per Konsole die einzelnen Mtd (da nicht alle Daten nur in diesem Chip liegen ) aufspielen um wirklich alles in der richtigen Version drauf zu haben.

Ich habe hier von allen Geräten die ich hier in der Werkstatt hatte und das sind viele viele Hundert nur 1 einzige defekte CPU die aber ganz klar den C2000 Bug hatte und sich nicht per Widerstand reparieren ließ. Eine neue CPU aufs Board und das Gerät lief wieder.
Deine CPU ist nicht defekt. Und der Speicher auch nicht. Ich bin sicher das du nur ein Software Problem hast.

Nebenbei ..... die DS218+ die ich am Tisch habe - hier war bei der ersten das BIOS File beschädigt. Dadurch wurde eine Core Spannung nicht eingeschaltet weil der Spannungcontroller per SM Bus ein Datenwort nicht bekommen hat in dem die Ausgangsspannung eingestellt wird und das enable gesetzt wird . Und Default Wert des Spannungsausgangs sind 0 V wenn der Host die Daten nicht sendet was er nicht kann wenn das BIOS hinüber ist.
Also einfach ist hier nicht.

Programmier deinen (am besten ausgelöteten Chip) mit dem Chip Image das ich dir gesendet habe und vergess die Konsole erst mal. Die führt nicht zum Erfolg weil du nicht alle Daten schreiben kannst.
 

TN-Notebooks

Benutzer
Mitglied seit
30. Mai 2019
Beiträge
229
Punkte für Reaktionen
186
Punkte
93
@ Benares

dein Beitrag hat mich dazu gebracht mir das noch mal genauer anzusehen.
Und es hat funktioniert.
Das BIOS Rom extrahiert. Im Hexfile musste am Anfang einiges weggeschnitten werden ( durch Vergleichen der ersten 2 Zeilen von dem defekten BIOS den Anfang des neuen BIOS in der ROM Datei gefunden - Offset ) Das Ende musste dann einfach noch auf Speicheradresse 7FFFFF gekürzt werden - alles andere was am Chip drauf ist ignorieren - Chip löschen File drauf gespielt und Gerät ging an :)

Funktioniert allerdings nur bei Plus Geräten so.
 
  • Like
Reaktionen: Benares

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Die genauen Eigenschaften können bei jedem NAS oder zumindest bei jeder Baureihe / CPU anders sein.

Die DS218 hat einen MX25L6433F als Flash. Dieser kann genau 8MByte speichern und genau diese 8MByte kann man sowohl über Hardware (Adapter oder Auslöten) als auch über Software (über den Bootloader) lesen und schreiben. Ein Lesen nach dem Schreiben und Vergleichen der Daten zeigt, dass diese 8MByte an Daten vollständig und fehlerfrei geschrieben wurden. Folglich kann da nichts fehlen.
Auch hatte ich die Daten zu Beginn per Software ausgelesen und später per Adapter / Hardware wieder geschrieben. Auch hier war der Vergleich identisch. Das funktioniert also beides.

Ich kann ja auch das DS418J Image per Software schreiben und es startet sofort.
Spätestens daran sieht man, dass es funktionieren muss.

Zudem gibt es die Möglichkeit ohne die Startdateien vom Flash auch direkt aus dem RAM zu starten.
Das funktioniert auch, aber nur mit den Startdateien der DS418J (2 Kerne und 1GB RAM).

Ich kann zwar nicht ausschließen, dass anderswo auch noch Daten gespeichert werden, aber wenn diese ein Problem darstellen würden, dann würde es auch als DS418J nicht starten. Ich kann mir zumindest nicht vorstellen warum das funktionieren sollte und es als DS218 nicht starten sollte.
 

TN-Notebooks

Benutzer
Mitglied seit
30. Mai 2019
Beiträge
229
Punkte für Reaktionen
186
Punkte
93
Die DS218 hat einen MX25L6433F als Flash. Dieser kann genau 8MByte speichern und genau diese 8MByte kann man sowohl über Hardware (Adapter oder Auslöten) als auch über Software (über den Bootloader) lesen und schreiben. Ein Lesen nach dem Schreiben und Vergleichen der Daten zeigt, dass diese 8MByte an Daten vollständig und fehlerfrei geschrieben wurden. Folglich kann da nichts fehlen.
die Aussage an sich stimmt - wenn das ausgelesene mit den geschriebenen identisch ist - Aber :
Welche Daten wurden geschrieben ? Das Chip Image das ich gesendet habe ?

Nur weil es 8MB hat bedeutet das nicht das alle Daten drin sind. Es können an Stellen wo was hin gehört auch 00 oder FF stehen.
 

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Ich habe alle Images probiert die ich bekommen habe.
Von dir habe ich sowohl das Gesamt-Image als auch das Image aus den Einzelpartitionen probiert.
Auch habe ich Images verändert um das Problem zu lösen.
Leider hat nichts davon funktioniert. Es startet als DS218 einfach nicht.
(Dass es funktionieren kann zeigt der Test mit dem DS418J Image)

Beim Auslesen und Schreiben werden alle Stellen gelesen / geschrieben die man als Adresse angibt.
In meinem Fall also von 0x00000000 bis 0x00800000
Dabei werden auch 00 oder FF so gelesen / geschrieben wie sie sind.
00 // FF sind auch nur Daten wie alle anderen. Die Partitionen können
am Ende einen Leerbereich haben (wenn sie z.B. nicht voll sind), was dort steht ist egal
weil die Größe des Datenbereiches angegeben ist. Trotzdem habe ich hier immer
drauf geachtet, es ggf. so aufzufüllen wie es bei einem anderen Image war.
Also alles immer nach Muster oder mit originalem Image.
Leider ohne Erfolg.

Beim manuellen Starten mit Startdateien im RAM sind die Daten im Flash hier zu 99% egal.
Normalerweise sogar zu 100% aber die DS218 startet bei leerem Flash gar nicht.
Sobald aber der Flash die mindestens benötigten Daten enthält damit der Bootloader startet
kann man manuell über den RAM starten. Die Startdateien werden dann per TFTP übertragen
und in den RAM kopiert. Er startet auch nachweislich dann aus dem RAM. Dies funktioniert
normalerweise immer. Ich kenne keinen einzigen Fall wo das Manuelle Starten möglich war,
aber es nicht funktioniert hat. Bei der Mehrheit der Synology NAS ist das möglich.

Da das Log-Level scheinbar ungünstig eingestellt ist (und ich kann es nicht ändern)
sehe ich leider nicht an welche Stelle er genau hängt. Nach "Starting Kernel"
kommt hier nichts (als DS418J kommt auch nichts, aber es piept nach weniger als 1 Minute).
Bei anderen NAS wird der Start ausführlich protokolliert, hier leider nicht.
Für die Fehlersuche ist das leider nicht hilfreich.
 

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Ich sehe gerade es gibt eine Stelle im Image wo steht:
yearlycon=uart8250,mmio32,0x98007800 console=ttyS0,115200 androidboot.hardware=kylin loglevel=8
vielleicht kann man hier ja das Log-Level ändern :)
Werde ich mal ausprobieren.
 

TN-Notebooks

Benutzer
Mitglied seit
30. Mai 2019
Beiträge
229
Punkte für Reaktionen
186
Punkte
93
Beim Auslesen und Schreiben werden alle Stellen gelesen / geschrieben die man als Adresse angibt.
In meinem Fall also von 0x00000000 bis 0x00800000
Halt - mit dieser Aussage stimmt was nicht. Irgendwas machst du anders.
Jeder Programmer den ich kenne : man stellt den Chiptyp ein, öffnet das BIN oder ROM und klickt nur noch auf write. Ohne irgend etwas zu verändern.Wenn es nicht schon auf Auto eingestellt ist noch auf verify
Ausserdem endet mein File und auch der Chip bei bei 0x007FFFFF
Das File von mir funktioniert zu 100% und wenn deine Unit Lebenszeichen mit irgend einem anderen File hat ist die Hardware OK.

Es gibt nur noch eine Sache die hier einen Streich spielen könnte .... der Revisionsstand vom Board !

Ich hatte ja gesagt das ich aktuell 3 DS218+ am Tisch habe alle unterschiedliche Revisionen v1.3 V1.4 V1.5 und die Boards sind auch unterschiedlich.
Bisher kann ich nur sagen der BIOS Chip zusammen mit dem USB Flash von der V1.4 funktioniert auch in der V1.3
 

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Ich habe das Image 1:1 per Software geschrieben / ausgelesen und verglichen.
Alles 100% korrekt.

(Ich kann den Chip nicht auslöten und mein Adapter ist defekt.
Somit leider aktuell nicht anders möglich.)

Wie gesagt ich habe das hier schon per Hardware gemacht und das Ergebsnis ist auch nicht anders.
Es geht sowohl per Software als auch per Hardware. Es muss ja auch per Software gehen weil das DSM es ja auch macht beim Update / Installation.

Man muss dann auch nicht den Chip typ auswählen, weil der Bootloader eine Software enthält die genau auf den verwendeten Chip abgestimmt ist. Daher muss man sich per Software nicht um sowas kümmern.
Man verwendet einfach eine write Anweisung und die Daten werden geschrieben.
Alles was man braucht ist eine Adresse und eine Länge.
0x007FFFFF ist das letzte Datenstück, danach also bei 0x00800000 endet die Datei.
Alles wie im original, nichts verändert.

Die Revision würde beim manuellen Starten keine Rolle spielen.
Die Startdateien sind für alle Revisionen gleich.
Version V1.1 steht bei mir auf dem Board.
 

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Das Log-Level ändern hat nicht funktioniert :-(

Korrektur:
Es funktioniert nur bei der DS218 nicht.
Wenn ich es im DS418J Image ändere wird der Boot-Vorgang tatsächlich vollständig protokolliert.
 
Zuletzt bearbeitet:

TN-Notebooks

Benutzer
Mitglied seit
30. Mai 2019
Beiträge
229
Punkte für Reaktionen
186
Punkte
93
0x007FFFFF ist das letzte Datenstück, danach also bei 0x00800000 endet die Datei.
Die Datei endet bei 0x007FFFFF
0x00800000 wäre 1 HEX Stelle zu viel - keine Ahnung wie das Gerät damit umgeht.

Bei solchen Fällen traue ich dem Softwareschreiben nicht. Da ist bei mir schon zu viel schief gegangen.
Warte halt mal auf deinen Hardware Programmer und ich seh hier die Tage noch mal welche Rev das Board hat.

Wenn ich die Zeit rechne hätte man schon 2 neue Geräte dafür kaufen können :)
Aber es macht Laune und man lernt auch dabei immer wieder was neues.

Ach .... mir haben die Chinesen gerade einen 4 Stunden Streich gespielt. Ich konnte einen nagelneuen W25Q128FWSQ nicht schreiben.
Jetzt weis ich warum .... alle 10 Chips die ich hier hab sind Fälschungen - in Wirklichkeit sind es W25Q16JL nur rausbekommen über Programmer und Chip ID
 

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Die Datei endet bei 0x007FFFFF
Das ist korrekt und auch bei mir der Fall.
So endet auch jedes Image was ich erstellt oder bekommen habe.
Die Länge von 0x00800000 entspricht exakt 8.388.608 Byte und das ist genau die Dateigröße.
Das stimmt also alles. Wirklich :)

MIt dem DS418J Image sieht das Ganze so aus:
Starting Kernel ...


[ROS: openRPC() intr_scpu_dev_r buf 0x00e2ffa1 s 0x00e2ffa1 e 0x00e4ffa1 i 0x00e2ffa1
[ROS: openStubRPC() intr_w buf 0x00e6ffa1 s 0x00e6ffa1 e 0x00e8ffa1 i 0x00e6ffa1[AVCPU] Set Debug level flag 0x81bce334 *flag 0x01bbfde4 ucache 0xa1bbfde4
[AVCPU] Set Debug level *ptrDebugFlag 0x00000001
-------------------
Audio Version = 1012363 (Kylin)
Common Version = 0
Binary src compiled at Mar 21 2017 00:20:22
Note =
-------------------





[A] gloabl malloc size 0x003ffeb8
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.4.59+ (root@build1) (gcc version 4.9.4 20150629 (prerelease) (crosstool-NG crosstool-ng-1.22.0-169-g87eb166) ) #25426 SMP Mon Dec 14 18:47:24 CST 2020
[ 0.000000] Boot CPU: AArch64 Processor [410fd034]
[ 0.000000] cma: Reserved 32 MiB at 0x000000003e000000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv0.1 detected in firmware.
[ 0.000000] psci: Conflicting PSCI version detected.
[ 0.000000] PERCPU: Embedded 15 pages/cpu @ffffffc03df9d000 s24576 r8192 d28672 u61440
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: enabling workaround for ARM erratum 845719
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 258048
[ 0.000000] Kernel command line: ip=off console=ttyS0,115200 root=/dev/md0 rw syno_hdd_detect=4,5,6,7 syno_hdd_enable=85,86,82,81 HddHotplug=4 syno_usb_vbus_gpio=23@xhci-hcd.2.auto@0,22@xhci-hcd.5.auto@0 syno_hw_version=DS418j hd_power_on_seq=4 ihd_num=4 netif_num=1 swiotlb=1 audio_version=1012363 syno_fw_version=M.103 U-boot=2012.07-g4cd3708 (Jan 25 2019 - 11:25:17)
[ 0.000000] SYNO GPIO hdd detect pin: 4 5 6 7
[ 0.000000] SYNO GPIO hdd enable pin: 85 86 82 81
[ 0.000000] Support HDD Hotplug.
[ 0.000000] USB Vbus GPIO Control:
[ 0.000000] Gpp#23 - Host: xhci-hcd.2.auto - Port:1 - Polarity: ACTIVE_HIGH
[ 0.000000] Gpp#22 - Host: xhci-hcd.5.auto - Port:1 - Polarity: ACTIVE_HIGH
[ 0.000000] Synology Hardware Version: DS418j
[ 0.000000] Internal HD num: 4
[ 0.000000] Internal netif num: 1

...
piept und läuft...

Mit dem DS218 Image kommt nur
Starting Kernel ...

und mehr passiert nicht.

Der oben ROT markierte Bereich könnte also für den Fehler verantwortlich sein.
Die Frage ist: Was ist das und was macht das und wie muss das bei der DS218 aussehen ?
 
Zuletzt bearbeitet:

TN-Notebooks

Benutzer
Mitglied seit
30. Mai 2019
Beiträge
229
Punkte für Reaktionen
186
Punkte
93
Ich habe dir mal den Boot Log von Putty eines normalen BOOT von der DS218 geschickt.
 

nicommander

Benutzer
Mitglied seit
12. Feb 2020
Beiträge
70
Punkte für Reaktionen
10
Punkte
8
Danke :)
Werde heute Abend mal das Boot-Log mit meinem vergleichen.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat