Mac Pro 5.1 Rom / Firmware Backup Beschreibung und technischer Hintergrund

Neue Version vom Dumper (19-12-2022):


Neuerungen:

- Der Dumper erkennt wenn ein CH341a USB Programmiergerät beim Start eingesteckt ist, mit einem leeren oder beschriebenen Mac Pro 4.1/5.1 kompatiblen Flash IC drauf. Wenn kein Programmer drin steckt oder erkannt wird dann behandelt er die Firmware vom Mac Pro wie üblich.

Wieso Programmiergerät? -> Wenn der Mac nicht mehr startet weil der Flash IC entweder physisch oder inhaltlich defekt ist dann bleibt nur das Auslöten und in das Programmiergerät stecken. Der Dumper liest und schreibt dann in das Programmiergerät. Natürlich darf das dann auch auf einem anderen Mac sein.

Für den CH341a benötigt man noch LibUsb, das bekommt man am Einfachsten per Homebrew (brew install libusb) oder MacsPort (sudo port install libusb). Flashrom 1.2 ist im Dumper enthalten. Die Libs wollte ich nicht mit dazu nehmen.


- Ein Fortschrittsbalken mit weiteren Informationen kam dazu.

- Beim Flashen wird eine zweite Überprüfung des Inhalts gemacht. Die Erste macht Flashrom, die Zweite der Dumper.

- Kleinere Korrekturen und Optimierungen.


- ein paar Skripte rund um die ESP (EFI System Partitionen) habe ich in Tweaks mit reingenommen. Gehört nicht direkt zum Dumper aber sind sehr hilfreich wenn man mehr wie einen Datenträger im Mac Pro hat (wer nicht...) und Bootloader wie OpenCore, rEFInd, RefindPlus, etc... einsetzt

Mount all ESPs: Mounted alle ESPs die er findet
Tag all ESPs: Schreibt ein File mit dem DeviceNamen der Platte/SSD/USB Stick/WasAuchImmer in die ESP, sonst hat man vielleicht 4 ESPs und weiß nicht wohin die gehören.
Check for MS Certificates: Scannt alle BootX64.efi in gemounteten ESPs ob dort ein Microsoft Bootlader drin ist der Zertifikate enthält.
Unmount all ESPs: Wirft alle gemounteten ESPs wieder aus
Automount ESP: Mounted den geblessten ESP, wenn die Informationen über Bless nicht passen dann den Ersten den er findet.



____________________________________________

Ein paar Screenshots:

Auslesen:
1. probing flashrom.png

8. reading firmware using mx.png

9. reading firmware with MX success.png

12. analyses.png


Flashen:
Flashing all Windows.png



Der Link ist der alte:
https://www.dropbox.com/s/jh4unzd7gd4n5me/Macschrauber's CMP Rom Dump.dmg?dl=0
 
  • Gefällt mir
Reaktionen: SirVikon, DL8LAQ, Proinnsias und 4 andere
Neue Version vom Dumper (7-1-2023)

- Fehlerbehebungen: ein .diff File wurde nicht gelöscht. Das wurde zum zweiten Gegenprüfen nach dem Flashen angelegt.
- Fehlerbehebungen: ein Name "free" im Dateipfad wurde fehlinterpretiert, korrigiert

- Hinweisdialoge bei groben Fehlern im NVRAM wurden hinzugefügt. Zum Beispiel kein System installieren wenn der freie NVRAM Speicher weniger als 2048 Bytes sind. Wenn noch weniger frei ist wird noch eindringlicher gewarnt.

- Ein gesetztes Firmware Password wird angezeigt. Das kann einen ganz ordentlich eine Installation vergeigen wenn man davon nichts weiß, weil:
  • man sich nicht erinnert weil man das vor 5 Jahren gesetzt hat
  • es der Vorgänger gesetzt hat
  • man den Dialog zur Passworteingabe nicht sieht weil man keine BootScreen GPU hat

Das Firmware Password und die Sicherheit dieser Konstruktion möchte ich nicht diskutieren, das findet man im Netz...



Screenshot 2023-01-07 at 14.17.42.png



Screenshot 2023-01-07 at 14.18.17.png




https://www.dropbox.com/s/jh4unzd7gd4n5me/Macschrauber's CMP Rom Dump.dmg?dl=0
 
  • Gefällt mir
Reaktionen: Elebato, DL8LAQ, Indio und 2 andere
Neue Version vom Dumper (4-2-2023)

-> Flashen ist jetzt direkt eingeschaltet.

nachdem der Dumper hunderte von Roms geflasht hat habe ich das Verstecken der Flash Funktion aufgegeben.

Nach Auswahl von >flash firmware< kommt ein Hinweis dass eine inkorrekte Firmware den Mac Pro startunfähig machen kann.

Es werden diverse weitere Daten überprüft: Seriennummer, Checksummen im Stream der das NVRAM enthält, eine weiteres Backup gezogen und vor dem Flashen eine zusätzliche Kopie mit altem Firmwarestand gesichert.

Nichtsdestotrotz kann man mit einem falschem Firmwarefile oder bei Defekt des SPI Flash Chip persönlich Schaden anrichten. Das kann man bei jedem Firmware Update ebenso. Ich möchte das nur noch einmal explizit erwähnt und bestätigt haben.

_______________________________

-> base_xx hardware descriptor

im Fsys Stream der Firmware sind komprimierte Sensorbeschreibungen und deren Auflösungen. Die Versionen gehen von 17 bis 21. Das wird angezeigt.
Der 2012er hat die base_21 weil beim 2012er stärkere Prozessoren ab Werk gekommen sind mit höherer Stromaufnahme. Das wurde im base descriptor berücksichtigt.

Code:
ADD_DEVICE    ()    [class="USBPort",type="USB 2.0",location="top-front",speed="480",uhci-id="0x5d100000",ehci-id="0xfd500000"]
ADD_DEVICE    ()    [class="USBPort",type="USB 2.0",location="bottom-front",speed="480",uhci-id="0x3a200000",ehci-id="0xfa400000"]
ADD_DEVICE    ()    [class="USBPort",type="USB 2.0",location="right-rear",speed="480",uhci-id="0x3d100000",ehci-id="0xfd300000"]
ADD_DEVICE    ()    [class="USBPort",type="USB 2.0",location="center-rear",speed="480",uhci-id="0x1a200000",ehci-id="0xfa200000"]
ADD_DEVICE    ()    [class="USBPort",type="USB 2.0",location="left-rear",speed="480",uhci-id="0x1d100000",ehci-id="0xfd100000"]
ADD_DEVICE    ()    [class="FireWirePort",location="rear-right",max-speed="800",port-id="0x01",phy-id="0x00"]
ADD_DEVICE    ()    [class="FireWirePort",location="rear-left",max-speed="800",port-id="0x02",phy-id="0x00"]
ADD_DEVICE    ()    [class="FireWirePort",location="front-top",max-speed="800",port-id="0x01",phy-id="0x01"]
ADD_DEVICE    ()    [class="FireWirePort",location="front-bottom",max-speed="800",port-id="0x02",phy-id="0x01"]
SET_PROPERTY    (class="Processor")    [max-prochots="10000",ptype="iCore7"]
SET_PROPERTY    (class="Sensor"&location="ICAC")    [low-limit="0.1",high-limit="140",type="Current",description="CPU A, Core Low Side (Vcore) Current"]
SET_PROPERTY    (class="Sensor"&location="ICBC")    [low-limit="0.1",high-limit="140",type="Current",description="CPU B, Core Low Side (Vcore) Current"]
SET_PROPERTY    (class="Sensor"&location="Ie1S")    [low-limit="0",high-limit="18",type="Current",description="PCIe Slot 1, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="Ie2S")    [low-limit="0",high-limit="18",type="Current",description="PCIe Slot 2, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="Ie3S")    [low-limit="0",high-limit="18",type="Current",description="PCIe Slot 3, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="Ie4S")    [low-limit="0",high-limit="18",type="Current",description="PCIe Slot 4, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IeAS")    [low-limit="0",high-limit="18",type="Current",description="PCIe BoostA, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IeBS")    [low-limit="0",high-limit="18",type="Current",description="PCIe BoostB, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IH1Z")    [low-limit="0",high-limit="2",type="Current",description="HDD1, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IH2Z")    [low-limit="0",high-limit="2",type="Current",description="HDD2, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IH3Z")    [low-limit="0",high-limit="2",type="Current",description="HDD3, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IH4Z")    [low-limit="0",high-limit="2",type="Current",description="HDD4, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IO0Z")    [low-limit="0",high-limit="3",type="Current",description="ODD, 12V Current"]
SET_PROPERTY    (class="Sensor"&location="IH5Z")    [low-limit="0",high-limit="12",type="Current",description="HDD+ODD, 5V Current"]
SET_PROPERTY    (class="Sensor"&location="IMAS")    [low-limit="0.1",high-limit="50",type="Current",description="DIMM, PP1V5_S3_MEMA Current"]
SET_PROPERTY    (class="Sensor"&location="IMBS")    [low-limit="0.1",high-limit="50",type="Current",description="DIMM, PP1V5_S3_MEMB Current"]
SET_PROPERTY    (class="Sensor"&location="IN0C")    [low-limit="1",high-limit="40",type="Current",description="IOH Core, PP1V1_S0_IOH Northbridge Current"]
_______________________________

-> Enable GOP

Der Dumper meldet ob der Enable GOP Firmware Treiber in der Firmware injiziert wurde.
Das ist ein kleiner Treiber als Seitenprojekt von OpenCore der einer GOP fähigen Grafikkarte das Laden des Bootscreens direkt nach dem Starten des Rechners ermöglicht. Mit und ohne OpenCore. Das wird angezeigt wenn dieser Patch in der Firmware vorhanden ist. Beide Varianten EnableGop und EnableGopDirect teilen sich die gleiche GUID-ID und werden so beide berücksichtigt.

https://github.com/acidanthera/OpenCorePkg/tree/master/Staging/EnableGop
_______________________________

Main Dialog.png


GOP.png


warning.png


der Link ist der Alte:
https://www.dropbox.com/s/jh4unzd7gd4n5me/Macschrauber's CMP Rom Dump.dmg?dl=0
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: MacFangio, DL8LAQ, Proinnsias und 3 andere
Doch, aber das Überprüfen des Files kann niemals die volle Lauffähigkeit garantieren.
 
das Überprüfen des Files
Ich habe gerade noch das Wort "modifiziert .." nachgefügt, um es deutlicher zu machen.
Damit meinte ich, dass die Überprüfung der vorhandenen FW mit der beispeilsweise um den GOP erweiterten FW ergibt, dass sie stimmig ist, weil identische Ausgangsbasis.

Sprichst Du nicht damit aus, dass jeder FW-Flashvorgang - selbst mit der des gerade gesicherten 1:1-ROM - nicht mehr die volle Lauffähigkeit garantieren bzw. eine Beeinträchtigung darstellen kann? Spricht das jetzt für das Apple-Produkt?
 
Da es um ein Vielfaches mehr an Möglichkeiten für ein unfunktionales Firmware-file gibt als funktionale, macht es wenig Sinn, jede Eventualität zu prüfen. Wer soll denn völlige Fehlerfreiheit leisten können?

Also ich denke, wenn die gröbsten zu erwartenden Schnitzer rausgefischt werden, wird das bis auf eine verschwindend kleine Menge größtmögliche Sicherheit bieten.
 
jede Eventualität zu prüfen.
Ich habe nicht nach Prüfung jeder Eventualität und nicht nach völliger Fehlerfreiheit gefragt, sondern nur, ob die Stimmigkeit der beiden FW zueinander geprüft wird.
Halte ich jetzt nicht für ein unmögliches Ansinnen - sowas habe ich z. Bsp. beim GraKa-Flash mit atiflash. Da wird man auch auf Unstimmigkeiten hingewiesen.
 
Das ATI-Flashtool prüft auch nur winzige Bestandteile auf Plausibilität, wenn man die "passend" macht, kommen auch keine Fehlermeldungen. Man könnte z.B. irgendwelche Timings ändern und bekommt ein konsistentes Bios, was nicht funktionsfähig ist, aber vom Flashtool durchgewunken würde.

Das ist viel zu komplex und vom "Firmwareprofi" nicht zu leisten. Ist auch nicht nötig, ein wenig Vertrauen muss man schon in die eigene Arbeit bzw. die der anderen haben.
 
  • Gefällt mir
Reaktionen: Macschrauber
ein wenig Vertrauen muss man schon in die eigene Arbeit bzw. die der anderen haben.
Hätte ich das nicht (... in die der Anderen), könnte ich mich im Mac-Bereich kaum mehr bewegen. ;)
Aber ein wenig Details erfragen hat noch nicht geschadet - man/ich kann dabei nur lernen.
 
Im Vergleich zum Ursprungsprodukt (DosDude's RomTool) was die Inspiration und der Ausgangspunkt vom Dumper war mache ich jede Menge Überprüfungen vor dem Flashen.

Es fängt mit so simplen Dingen wie die Größe der Datei und der Seriennummer der Maschine an und endet im Dialog der nochmals eine Auswertung enthält was man flasht:

3. flash this firmware file.png


Zum Beispiel die Prüfsummen im FSys Stream. Da hier die meisten Änderungen gemacht werden, speziell bei einer vollen Rekonstruktion, filtert es schon mal gröbste Schnitzer weg.

wrong checksums.png


eine Überprüfung auf Lauffähigkeit eines Firmware Dumps ist schlechthin nicht möglich. Das mach ich bei Unsicherheiten auf meinen Testmaschinen wenn ich eine Firmware bearbeite.


Schlussendlich wird nochmals nach dem Flashvorgang (Flashrom macht ein erstes Verify) noch ein zweites mal das Rom ausgelesen und verglichen.

Der Flash Chip persönlich kann Fehler haben. Das war bei der ein oder anderen Maschine der Fall. Und gerade diese Kandidaten kommen dann zu mir. Dann kann das Flashen mit Flashrom misslingen. Das meldet der Dumper dann auch.

Die kritische Arbeit beim Flashen macht Flashrom, der Dumper gibt nur den Befehl dazu und lädt dynamisch die benötigte Kernel Extension.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: LuckyOldMan, Indio und SirVikon
Wer die Konsistenz und Position von Enable Gop in der Firmware nochmals prüfen möchte:

So schaut das mit Uefi Tool aus wenn das korrekt eingebunden ist.

Enable Gop Version vom 4.2.2023, zukünftige Versionen werden andere Längen und Prüfsummen haben.
Screenshot 2023-02-05 at 17.24.22.png
 
  • Gefällt mir
Reaktionen: Freeez
Neue Version vom Dumper (4-2-2023)

-> Flashen ist jetzt direkt eingeschaltet.

nachdem der Dumper hunderte von Roms geflasht hat habe ich das Verstecken der Flash Funktion aufgegeben.

Nach Auswahl von >flash firmware< kommt ein Hinweis dass eine inkorrekte Firmware den Mac Pro startunfähig machen kann.

Es werden diverse weitere Daten überprüft: Seriennummer, Checksummen im Stream der das NVRAM enthält, eine weiteres Backup gezogen und vor dem Flashen eine zusätzliche Kopie mit altem Firmwarestand gesichert.

Nichtsdestotrotz kann man mit einem falschem Firmwarefile oder bei Defekt des SPI Flash Chip persönlich Schaden anrichten. Das kann man bei jedem Firmware Update ebenso. Ich möchte das nur noch einmal explizit erwähnt und bestätigt haben.
Ich habe soeben meinen 5,1 mit dem vor langer Zeit von MacSchrauber neu aufgebauten ROM über den neuen Dumper geflasht. Läuft!

Vielen Dank MacSchrauber :)

ed.: Signatur update!
 
@Macschrauber

Wenn die Erweiterungen des Tools so weiter gehen, wird das noch zum "Schweizer Messer" der Mac Pros. ;)
 
1675696644413.png
Gerade das neue Tool via Link heruntergeladen. Mag meinen 5.1 nicht.
 
Soderle - Entwarnung: jetzt passt es unter Mavericks auch wie es sein soll. :)

Ob es damit zusammenhängt, dass ich das Tool zwischen zwei angebotenen Si-Updates getestet habe oder was auch immer: die Wege von OS X sind zuweilen nicht immer nachvollziehbar. ;)
 
Ein workaround war das Tool im Skripteditor zu öffnen und zu sichern.

Rechtsklick - öffnen ist zuweilen auch notwendig beim ersten Lauf weil der Dumper nicht signiert ist.
 
Nach langer Zeit ein Update vom Youtube Kanal:

 
  • Gefällt mir
Reaktionen: Freeez und Indio
Zurück
Oben Unten