Mac Pro 5.1 Rom / Firmware Backup Beschreibung und technischer Hintergrund

Dropbox hat (vorübergehend?) den Download link wegen Flashrom im Dumper gesperrt.

Dann eben anders:

Das Tool um Gatekeeper für den Dumper abzuschalten

Der Dumper (Passwort is: rom)


Falls der Dumper oder die anderen Komponenten melden dass das Image beschädigt ist dann das Tool im ersten Link bemühen. Das kopiert den Inhalt des Disk Image in einen Ordner Macschrauber_temp in Downloads und nimmt die Gatekeeper Einträge raus.
Screenshot 2023-11-03 at 16.43.23.png

Warum?
Der Dumper enthält Flashrom, damit kann man natürlich viel Unsinn anstellen. Viele Dienste haben Flashrom auf der Malware Liste. Wennn man mit einem Browser lädt, dann scannt Xprotect die Files durch und setzt die Marker für Gatekeeper. Das Tool nimmt diese Marker wieder raus. Das Disk Image ist Schreibgeschützt, deshalb die Kopie.


Der Downloader konnte das umgehen, aber Dropbox läuft (gerade) nicht.
 
  • Gefällt mir
Reaktionen: Elebato, Freeez und razormax
Update:

Download Macschrauber's CMP Rom Dump

Dieses Tool heruntergeladen und gestartet:

- Öffnet auf Nachfrage die GMX Seite
- Öffnet das geladene Disk Image und gibt das Passwort. Sollte das nicht klappen, dann: rom,
- Kopiert das in einen Ordner: Macschrauber_temp in Downloads,
- Entfernt die Gatekeeper Markierungen.



Mal schauen ob Dropbox einen Timeout hat, ansonsten ist das ein praktikabler Workaround.

Alte disk images vom Dumper sollten nicht in Downloads sein, sonst kommt die Logik durcheinander.
 
  • Gefällt mir
Reaktionen: Freeez und Elebato
Ich habe mal etwas "off topic"... wie bekomme ich die Firmware 478.0.0.0.0 auf mein Macbook Air (Anfang 2014) wenn ich keine original Apple SSD mehr habe?

...zur Zeit ist die 474.0.0.0.0 installiert, die leider erhebliche Probleme mit dem Power-Managment (Standby) hat...
 
Die SSDs kosten ja nix mehr, würde eine Gebrauchte auftreiben.

Ein anständiger Programmierer könnte sicher die Abfrage (wie auch immer die aussieht) aus dem Flashingtool rausprogrammieren. Wäre wohl der sicherste Weg, wenn absolut keine SSD greifbar ist.

Trial-and-error über die gleiche Methode wie die Bootrom-Reparatur beim Mac Pro 5.1 sollte irgendwie klappen, nur müsste das fertige Image im Extremfall per Hardware-Programmierer drauf, wenn ROMTool und Konsorten nicht gehen.
Problematisch bei der Erstellung wird die ME sein, weil diese Daten enthält und keinesfalls nur kopiert werden kann (gibt es bei älteren Macs nicht, MP1.1-5.1 und etliche andere Modelle haben keine Intel ME). Wenn das Update die ME nicht aktualisiert, kann die ME aus dem Dump des MBA kopiert werden.
 
Ich habe mal etwas "off topic"... wie bekomme ich die Firmware 478.0.0.0.0 auf mein Macbook Air (Anfang 2014) wenn ich keine original Apple SSD mehr habe?

...zur Zeit ist die 474.0.0.0.0 installiert, die leider erhebliche Probleme mit dem Power-Managment (Standby) hat...

Der gute startergo, auch viel auf Macrumors unterwegs, hat da mal was zusammengezimmert.

Wenn dich traust: https://gist.github.com/startergo/18e7fc4f2b1125e80b677181cc6c77e7

...

aber mir wäre es schon Recht, wenn der Thread hier beim Mac Pro 5,1 - also on topic - bleibt ;-)
 
  • Gefällt mir
Reaktionen: Freeez
Update vom 18-11-2023

-> -vars Argument für das Shell Script

Zeigt alle Variablen vom NVRAM Stream, von Fsys, Gaid, VSS1, VSS2, SVS1, SVS2. Klartext Anzeige vom Hardware Descriptor (base_xx Text), IASInstallPhaseList und LBSN / BD Sektor.
Aber bitte nie, NIE, solch einen detaillierten Dump irgendwo öffentlich hochladen. Da sind viele Rechner IDs und persönliche Daten drin. Inklusive kodierter Passwörter und e-mail Adressen in Klartext.

-> -hexdump Argument für das Shell Script
Zeigt die Hexdumps der wichtigsten Variablen an. Prüft die Checksums des Dateninhalts der Variablen für Firmwares neuer ~2012

-> Dynamisches Auffinden des lbsn Sektors, Darstellung eines Hexdumps davon im Shell Script.

-> iCloud Lock Erkennung, Anzeige des Texts im Shell Script den der Finder eines gesperrten Macs zu sehen bekommt.

-> Mehr Details für Microsoft Windows Zertifikate

-> MacBook Pro 8,1 auslesen. Mac Pro 6.1 bekommt einen zweiten spi Flash Chip Typ.

-> Scanvss log files für "Scanvss halb-kompatible" Firmware

Einige Firmwares können nicht von Scanvss ausgelesen werden, wenn der komplette Dump übertragen wurde. Aber mit dem extrahierten NVRAM Volume.

-> rename Preboot
Ein kleines Skript um .contentDetails in der APFS Partition / im APFS Ordner des Systems umzubenennen. Manchmal wird das nicht aktualisiert und das Systemlaufwerk hat einen falschen Namen.
Screenshot Monterey selection.png

Screenshot Monterey rename.png



Bugfix:
- Battery-health für type 00 Firmware funktioniert jetzt.


Hardware-Descriptor (base_xx)
Code:
-------------------------------------------------------------------
4 Fsys store/0 overrides
-------------------------------------------------------------------
Type: Fsys entry
Subtype: Normal
Fixed: Yes
Base: 14800Bh
Header address: FFD4800Bh
Data address: FFD48017h
Offset: Bh
Full size: 67Fh (1663)
Header size: Ch (12)
Body size: 673h (1651)
===================================================================
00000000: 096f 7665 7272 6964 6573 7306            .overridess.
overridess
-------------------------------------------------------------------
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"]
...
gekürzt, 15000 Zeichen
...
SET_PROPERTY    (class="Sensor"&location="Vp0C")    [low-limit="11.4",high-limit="12.6",type="Voltage",description="PSU, 12V Voltage"]
SET_PROPERTY    (class="Sensor"&location="VCAB")    [low-limit="1.00",high-limit="1.30",type="Voltage",description="PPVTT_S0_CPUA Voltage"]
SET_PROPERTY    (class="Sensor"&location="VCBB")    [low-limit="1.00",high-limit="1.30",type="Voltage",description="PPVTT_S0_CPUB Voltage"]
SET_PROPERTY    (class="Sensor"&location="VS1C")    [low-limit="1.00",high-limit="1.10",type="Voltage",description="PP1V05_S0_SB Voltage"]
SET_PROPERTY    (class="Sensor"&location="VS2C")    [low-limit="1.43",high-limit="1.58",type="Voltage",description="PP1V5_S0_SB Voltage"]
SET_PROPERTY    (class="Sensor"&location="VS8C")    [low-limit="3.14",high-limit="3.47",type="Voltage",description="PP3V3_S5 Voltage"]
REMOVE_DEVICE    (class="Sensor")    (class="Sensor"&type="?")
REMOVE_DEVICE    !(class="Processor"&location="1")    (class="Sensor"&location="VCBB")
REMOVE_DEVICE    !(class="Processor"&location="1")    (class="Sensor"&location="VCBC")
REMOVE_DEVICE    !(class="Processor"&location="1")    (class="Sensor"&location="ICBB")
REMOVE_DEVICE    !(class="Processor"&location="1")    (class="Sensor"&location="ICBC")
REMOVE_DEVICE    !(class="Processor"&location="1")    (class="Sensor"&location="IMBS")
REMOVE_DEVICE    (class="Memory"&location="DIMM 1"&ecc="FALSE")    (class="Sensor"&location="TMA1")
REMOVE_DEVICE    (class="Memory"&location="DIMM 2"&ecc="FALSE")    (class="Sensor"&location="TMA2")
REMOVE_DEVICE    (class="Memory"&location="DIMM 3"&ecc="FALSE")    (class="Sensor"&location="TMA3")
REMOVE_DEVICE    (class="Memory"&location="DIMM 4"&ecc="FALSE")    (class="Sensor"&location="TMA4")
REMOVE_DEVICE    (class="Memory"&location="DIMM 5"&ecc="FALSE")    (class="Sensor"&location="TMB1")
REMOVE_DEVICE    (class="Memory"&location="DIMM 6"&ecc="FALSE")    (class="Sensor"&location="TMB2")
REMOVE_DEVICE    (class="Memory"&location="DIMM 7"&ecc="FALSE")    (class="Sensor"&location="TMB3")
REMOVE_DEVICE    (class="Memory"&location="DIMM 8"&ecc="FALSE")    (class="Sensor"&location="TMB4")
===================================================================

-------------------------------------------------------------------
4 Fsys store/1 override-version
-------------------------------------------------------------------
Type: Fsys entry
Subtype: Normal
Fixed: Yes
Base: 14868Ah
Header address: FFD4868Ah
Data address: FFD4869Dh
Offset: 68Ah
Full size: 1Bh (27)
Header size: 13h (19)
Body size: 8h (8)
===================================================================
00000000: 106f 7665 7272 6964 652d 7665 7273 696f  .override-versio
00000010: 6e08 00                                  n..
override-version
-------------------------------------------------------------------
00000000: 4261 7365 5f32 3100                      Base_21.
Base_21
===================================================================

IASInstallPhaseList
Code:
-------------------------------------------------------------------
0 VSS store/97 IASInstallPhaseList
-------------------------------------------------------------------
Type: VSS entry
Subtype: Standard
Text: IASInstallPhaseList
Fixed: Yes
Base: 12D8F1h
Header address: FFD2D8F1h
Data address: FFD2D939h
Offset: D8A9h
Variable GUID: 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14
Full size: 280h (640)
Header size: 48h (72)
Body size: 238h (568)
State: 7Fh
Reserved: 00h
Attributes: 00000007h (NonVolatile, BootService, Runtime)
===================================================================
00000000: aa55 7f00 0700 0000 2800 0000 3802 0000  .U......(...8...
00000010: 05de 1e4d c738 6a4a 9cc6 4bcc a8b3 8c14  ...M.8jJ..K.....
00000020: 4900 4100 5300 4900 6e00 7300 7400 6100  I.A.S.I.n.s.t.a.
00000030: 6c00 6c00 5000 6800 6100 7300 6500 4c00  l.l.P.h.a.s.e.L.
00000040: 6900 7300 7400 0000                      i.s.t...
U(8M8jJKIASInstallPhaseList
-------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>ConclusionDelay</key>
<integer>0</integer>
<key>InstallPhase</key>
<string>Boot 1</string>
<key>InstallPhasePercentageKey</key>
<integer>58</integer>
</dict>
<dict>
<key>ConclusionDelay</key>
<integer>0</integer>
<key>InstallPhase</key>
<string>Language Chooser</string>
<key>InstallPhasePercentageKey</key>
<integer>42</integer>
</dict>
</array>
</plist>
===================================================================

LBSB / BD Sector
Code:
-------------------------------------------------------------------
LBSN sector
-------------------------------------------------------------------
Type: Section
Subtype: Raw
Fixed: No
Base: 3FFEF0h
Header address: FFFFFEF0h
Data address: FFFFFEF4h
Offset: E90h
Type: 19h
Full size: 110h (272)
Header size: 4h (4)
Body size: 10Ch (268)
===================================================================
00000000: 1001 0019                                ....
-------------------------------------------------------------------
00000000: 0000 0000 0000 0000 0000 0000 ea78 ca39  .............x.9
00000010: 2664 848b xxxx xxxx xxxx xxxx xxxx xxxx  &d..J5xxxxxxxxxx
00000020: 4120 2020 2020 ffff ffff ffff ffff ffff  A     ..........
00000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
*
00000050: ffff ffff ffff ffff ffff ffff xxxx xxxx  ............xxxx
00000060: xxxx xxxx xxxx xxxx xxxx xxxx 0fff ffff  xxxxxxxx........
00000070: ffff ffff ffff ffff ffff ffff 01ff ffff  ................
00000080: ffff ffff ffff ffff ffff ffff 0000 0000  ................
00000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
*
000000d0: 0000 0000 0000 0000 0000 0000 bf50 41eb  .............PA.
000000e0: 1d00 0000 0000 0000 0000 0000 ffff ffff  ................
000000f0: ffff ffff ffff ffff e802 ffff 0f09 e9fb  ................
00000100: f200 0000 7856 3412 0000 ffff            ....xV4.....
x9&dJxxxxxxxxBH9A     xxxxxxxxxxxxxPAxV4
===================================================================

https://www.dropbox.com/s/t5k7j4gxj8n9pj2/Download Macschrauber's CMP Rom Dump.zip?dl=1
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Freeez und Elebato

Neue Version vom Dumper:​


Update vom 10.12.2023

-> Erkennung von Nvidia-Chipsätzen zur Meldung langer Auslesezeiten

Macs mit Nvidia-Chipsätzen (MCP79 / MCP 89, gebaut um 2009) brauchen etwa 5 Minuten, um die Firmware auszulesen.

-> Mehrere Flash-Chip-Definitionen für das Auslesen mit dem Shell-Skript
Es fordert den Chipsatz eines Macs, dessen SPI-Daten noch nicht erfasst wurden, wenn Flashrom mehr als einen Typ zurückgibt.

-> Überprüfung der Bootblock-Vektoren für Rebuilds, Anzeige des Fsys-Header-Typs nach base_xx.

-> Beendigung des Dumpers, wenn versucht wird, eine Firmware von einem anderen Mac-Modell in einem MP 4,1/5,1 zu flashen

Beendet den Vorgang, wenn die Ausgabe der vorherigen Flash-Informationen ignoriert wird.

-> Auslesen von MBP54 und MBP91, Aktualisierung einiger Chip-Definitionen für andere Modelle.




-> Copy ESP für die ESP-Tools

1 select source ESP.png

2 select destination ESP.png

3 confirm to delete destination ESP.png

4 copied.png

5 destination ESP with tag.png

Der Dumper:
https://www.dropbox.com/s/t5k7j4gxj8n9pj2/Download Macschrauber's CMP Rom Dump.zip?dl=1


Die ESP Tools alleine:
https://forums.macrumors.com/attachments/esp-tools-10-12-2023-zip.2323269/
-> nach dem Download und Auspacken: xattr -cr $HOME/Downloads/ESP\ tools wenn xprotect reingrätscht (... ist beschädigt)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: cococollector, DL8LAQ, Freeez und 2 andere
Update vom 23-12-2023

-> Anzeige des Firmware-Programmiermodus [ ] [off] [on]
Der Dumper überprüft den Firmware-Programmiermodus auf Macs die er flashen kann (MacPro 4,1/5,1). Dies geschieht während des Lesens / Schreibens, oder direkt, wenn das Passwort von dem CLI-Tool im Ordner "Andere Tools" verschlüsselt gespeichert wurde.

(Der Firmware-Programmiermodus wird initiiert, indem die Einschalter-Taste lange gedrückt wird, bis ein langer Ton ertönt und die Power-LED beim Starten des Geräts blinkt.)

Ich möchte nicht, dass der Benutzer Zugriff auf den Schlüsselbund gewährt oder dass er mit Passwörtern belästigt wird, bevor der Dumper sichtbare Aktionen durchführt.

Wenn der Status des Firmware-Programmiermodus unbekannt ist, wird der <flash firmware> button angezeigt, bis der Firmware-Chip das erste Mal gelesen wird. Wenn kein Programmiermodus erkannt wurde, wird der button <flash firmware> ausgeblendet.

-> Der Dumper endet nicht mehr direkt nach dem Flashen / Dumpen.

Korrekturen:
- Wenn der Downloads-Ordner des Benutzers nicht verfügbar ist, wird nach einem anderen gefragt.
- Der Dateiname des Scanvss-Logfile enthielt zuvor die gespoofte Firmware-Version, jetzt ist es die echte Firmware-Version.




firmware programming mode on.png

firmware programming mode off.png

firmware programming mode unknown yet.png

admin password.png

analyse.png

der Downloader:

https://www.dropbox.com/s/t5k7j4gxj8n9pj2/Download Macschrauber's CMP Rom Dump.zip?dl=1

eventuell mit rechtsklick - öffnen zu starten.

Das geladene disk image hat das Passwort: "rom"
 
  • Gefällt mir
Reaktionen: DL8LAQ, Freeez, Proinnsias und 2 andere
Muss einen Bugfix hinterherschieben:
Version 25-12-2023


Hab einen Bug mit einem Pfad in der Version 23-12-2023 verbockt: Hab den Pfad in der Überprüfung für den Firmware Programming Mode auf /usr/local/bin gehabt. Hab dort meine Tools drin. Und so das nicht bemerkt :-/

Der Dumper 23-12-2023 gibt so das Flashen nicht frei wenn die CLI Tools nicht installiert wurden. Das ist optional und machen nur die User die test_nvram im Terminal nutzen. Also die wenigsten.

Entweder: Install CLI Tools (optional) starten oder die Version 25-12-2023 laden.

https://www.dropbox.com/s/t5k7j4gxj8n9pj2/Download Macschrauber's CMP Rom Dump.zip?dl=1
 
  • Gefällt mir
Reaktionen: DL8LAQ, Freeez, Elebato und eine weitere Person
Der Dumper, bzw. die ESP- und Preboot Tools haben ein Update bekommen. (3-1-2024)

Der Dumper selbst ist auf der Version 26-12-2023.

Warum?

High Sierra kann das Preboot Volume von neueren Systemen beschädigen, wenn die System Integrity Protection ausgeschaltet ist.
csrutil disable

Der Effekt ist:
Wir sehen das Icon von High Sierra,
einen falschen Systemnamen Systemname - Daten,
eventuell ein ungültiges System (Verboten Schild)
und SystemUpdates wegen der ausgelesenen High Sierra Version nicht mehr laufen.


Da man in Macuser die Posts nach kurzer Zeit nicht mehr editieren kann verlinke ich den Macrumors thread:
https://forums.macrumors.com/threads/high-sierra-booting-possibly-corrupts-newer-systems-fix-and-description.2415320/post-32828511
 
  • Gefällt mir
Reaktionen: Freeez und Elebato
Update vom 21-1-2024

-> Dumps und Logfiles bekommen einen eigenen Ordner je Dump
Wie ~/Downloads/Firmware backup 21.01.2024_18-57-13/

-> Die meisten ESP Tools wurden überarbeitet
Der Preboot fixer and renamer ist entstanden, kann die Beschädigung der Preboots durch ungeschützten High Sierra boot neuerer (ab Catalina) Systeme reparieren.
Und auch sonst, wenn keine Reparatur notwendig ist, die Namen im Apple Boot Picker editieren.

IMG_6279.jpeg

Zweizeilige Namen sind auch möglich, im Beispiel für ESPs. Das Tool dafür ist auch im Dumper Paket enthalten.
Danke an @joevt für die Bash Funktionen und die Hilfe.



link zum Macrumors thread: high-sierra-booting-possibly-corrupts-newer-systems-fix-and-description


link to the Dumper:
https://forums.macrumors.com/thread...es.2333460/page-4?post=32055801#post-32055801
 
  • Gefällt mir
Reaktionen: DL8LAQ, MacFangio, Freeez und 3 andere
Lance hat ein langes und sehr detailliertes Video gemacht wie man mit dem Dumper einen Dump zieht, EnableGOP injiziert und die Firmware flasht.

Auch wenn jemand nicht EnableGop braucht oder will ist der Vorgang hier gut und geduldig erklärt:

 
  • Gefällt mir
Reaktionen: Proinnsias, Freeez und Snyder
Ist beim Dumper der Einsatz von Mav wg. SIP immer noch von Vorteil oder hat sich das bei den neueren Versionen (ich nutze noch die älteren) erledigt?
 
Ist beim Dumper der Einsatz von Mav wg. SIP immer noch von Vorteil oder hat sich das bei den neueren Versionen (ich nutze noch die älteren) erledigt?
Jein,

SIP aus ist immer noch eine Notwendigkeit für die Rechner bis etwa 2013. *


OpenCore setzt aber Kext Signing auf aus, so funktioniert der Dumper bzw die Directhw.kext mit OpenCore gebooteten Systemen.

für den Mac Pro 3.1 bis 5.1:

10.7-10.9 ohne alles
10.10 braucht ein boot-arg kext-dev-mode=1, das setzt der Dumper auf Nachfrage
10.11 bis 10.14 braucht unsigned kexts aus
10.15 bis Sonoma laufen über Patches die eh sip für kext ausschalten

*Bei vielen neueren Macs kann man über das Eficheck Tool dumpen, das macht der Dumper, wenn SIP an ist und die Maschine mit Eficheck kompatibel ist.
 
  • Gefällt mir
Reaktionen: razormax und LuckyOldMan
SIP aus ist immer noch eine Notwendigkeit für die Rechner bis etwa 2013.
Dann bleiben die Mavericks-Platten als Testcenter in den MPs (dafür wurden sie eingerichtet) und ich muss mich nicht mit den aufgezählten Anpassungen befassen. ;)
Soweit ich mich erinnere, nutzt Du es auch.
 
Ja, eins meiner wichtigsten Werkzeuge, zusammen mit einen GRML (Linux) USB Stick und FreeDos.
 
Gutes Stichwort: wie kann ich ein Linux-Mint im MP3.1, das im Apple-Picker als Windows ausgewiesen wird, umbenennen? Stört mich, auch wenn ich weiß, was dahinter liegt.
Wenn das eine MBR Platte ist, dann wahrscheinlich gar nicht. Schau mal ob versteckte Dateien im root Verzeichnis sind die Namen Richtung "label" haben.

Der 3.1 ist da noch nicht so komfortabel in der Firmware, der liest auch die Labels von ESPs nicht, der 5.1 schon.
 
Zuletzt bearbeitet:
Zurück
Oben Unten